- 参照されていないLFSファイルの削除
- プロジェクトアップロードファイルのクリーンアップ
- 孤児アーティファクトファイルの削除
- 期限切れのActiveSessionルックアップキーを削除
- コンテナレジストリのガベージコレクション
レーキ作業のクリーンアップ
GitLabはGitLabインスタンスをクリーンアップするためのRakeタスクを提供しています。
参照されていないLFSファイルの削除
GitLab 12.10で導入されました。
リポジトリの履歴から LFS ファイルを削除すると、それらは孤児となり、ディスクスペースを消費し続けます。この Rake タスクで、データベースから無効な参照を削除し、LFS ファイルのガベージコレクションを可能にします。
使用例:
# omnibus-gitlab
sudo gitlab-rake gitlab:cleanup:orphan_lfs_file_references PROJECT_PATH="gitlab-org/gitlab-foss"
# installation from source
bundle exec rake gitlab:cleanup:orphan_lfs_file_references RAILS_ENV=production PROJECT_PATH="gitlab-org/gitlab-foss"
PROJECT_PATH
の代わりにPROJECT_ID
でプロジェクトを指定することもできます。
使用例:
$ sudo gitlab-rake gitlab:cleanup:orphan_lfs_file_references PROJECT_ID="13083"
I, [2019-12-13T16:35:31.764962 #82356] INFO -- : Looking for orphan LFS files for project GitLab Org / GitLab Foss
I, [2019-12-13T16:35:31.923659 #82356] INFO -- : Removed invalid references: 12
デフォルトでは、このタスクは何も削除しませんが、削除できるファイル参照の数を表示します。実際に参照を削除したい場合は、DRY_RUN=false
を指定してコマンドを実行してください。また、LIMIT={number}
パラメーターを使って、削除する参照の数を制限することもできます。
このRakeタスクは、LFSファイルへの参照のみを削除します。参照されていないLFSファイルは、後で(1日に1回)ガベージコレクションされます。すぐにガベージコレクションする必要がある場合は、以下で説明するrake gitlab:cleanup:orphan_lfs_files
を実行してください。
参照されていないLFSファイルを直ちに削除
GitLab 12.10で導入されました。
参照されていないLFSファイルは毎日削除されますが、必要であればすぐに削除することもできます。例えば
# omnibus-gitlab
sudo gitlab-rake gitlab:cleanup:orphan_lfs_files
# installation from source
bundle exec rake gitlab:cleanup:orphan_lfs_files
出力例です:
$ sudo gitlab-rake gitlab:cleanup:orphan_lfs_files
I, [2020-01-08T20:51:17.148765 #43765] INFO -- : Removed unreferenced LFS files: 12
プロジェクトアップロードファイルのクリーンアップ
プロジェクトのアップロードファイルがGitLabデータベースに存在しない場合、クリーンアップします。
ファイルシステムからプロジェクトのアップロードファイルをクリーンアップします。
GitLab 11.2で導入されました。
GitLabデータベースに存在しないローカルプロジェクトアップロードファイルをクリーンアップします。タスクはプロジェクトが見つかればファイルの修正を試み、そうでなければlost and foundディレクトリにファイルを移動します。
# omnibus-gitlab
sudo gitlab-rake gitlab:cleanup:project_uploads
# installation from source
bundle exec rake gitlab:cleanup:project_uploads RAILS_ENV=production
出力例です:
$ sudo gitlab-rake gitlab:cleanup:project_uploads
I, [2018-07-27T12:08:27.671559 #89817] INFO -- : Looking for orphaned project uploads to clean up. Dry run...
D, [2018-07-27T12:08:28.293568 #89817] DEBUG -- : Processing batch of 500 project upload file paths, starting with /opt/gitlab/embedded/service/gitlab-rails/public/uploads/test.out
I, [2018-07-27T12:08:28.689869 #89817] INFO -- : Can move to lost and found /opt/gitlab/embedded/service/gitlab-rails/public/uploads/test.out -> /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/project-lost-found/test.out
I, [2018-07-27T12:08:28.755624 #89817] INFO -- : Can fix /opt/gitlab/embedded/service/gitlab-rails/public/uploads/foo/bar/89a0f7b0b97008a4a18cedccfdcd93fb/foo.txt -> /opt/gitlab/embedded/service/gitlab-rails/public/uploads/qux/foo/bar/89a0f7b0b97008a4a18cedccfdcd93fb/foo.txt
I, [2018-07-27T12:08:28.760257 #89817] INFO -- : Can move to lost and found /opt/gitlab/embedded/service/gitlab-rails/public/uploads/foo/bar/1dd6f0f7eefd2acc4c2233f89a0f7b0b/image.png -> /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/project-lost-found/foo/bar/1dd6f0f7eefd2acc4c2233f89a0f7b0b/image.png
I, [2018-07-27T12:08:28.764470 #89817] INFO -- : To cleanup these files run this command with DRY_RUN=false
$ sudo gitlab-rake gitlab:cleanup:project_uploads DRY_RUN=false
I, [2018-07-27T12:08:32.944414 #89936] INFO -- : Looking for orphaned project uploads to clean up...
D, [2018-07-27T12:08:33.293568 #89817] DEBUG -- : Processing batch of 500 project upload file paths, starting with /opt/gitlab/embedded/service/gitlab-rails/public/uploads/test.out
I, [2018-07-27T12:08:33.689869 #89817] INFO -- : Did move to lost and found /opt/gitlab/embedded/service/gitlab-rails/public/uploads/test.out -> /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/project-lost-found/test.out
I, [2018-07-27T12:08:33.755624 #89817] INFO -- : Did fix /opt/gitlab/embedded/service/gitlab-rails/public/uploads/foo/bar/89a0f7b0b97008a4a18cedccfdcd93fb/foo.txt -> /opt/gitlab/embedded/service/gitlab-rails/public/uploads/qux/foo/bar/89a0f7b0b97008a4a18cedccfdcd93fb/foo.txt
I, [2018-07-27T12:08:33.760257 #89817] INFO -- : Did move to lost and found /opt/gitlab/embedded/service/gitlab-rails/public/uploads/foo/bar/1dd6f0f7eefd2acc4c2233f89a0f7b0b/image.png -> /opt/gitlab/embedded/service/gitlab-rails/public/uploads/-/project-lost-found/foo/bar/1dd6f0f7eefd2acc4c2233f89a0f7b0b/image.png
オブジェクトストレージを使用している場合は、All-in-one Rakeタスクを実行して、すべてのアップロードがオブジェクトストレージにマイグレーションされ、uploadsフォルダにディスク上のファイルがないことを確認します。
オブジェクトストレージからのプロジェクトアップロードファイルのクリーンアップ
GitLab 11.2で導入されました。
オブジェクトストアのアップロードファイルがGitLabデータベースに存在しない場合、lost and foundディレクトリに移動します。
# omnibus-gitlab
sudo gitlab-rake gitlab:cleanup:remote_upload_files
# installation from source
bundle exec rake gitlab:cleanup:remote_upload_files RAILS_ENV=production
出力例です:
$ sudo gitlab-rake gitlab:cleanup:remote_upload_files
I, [2018-08-02T10:26:13.995978 #45011] INFO -- : Looking for orphaned remote uploads to remove. Dry run...
I, [2018-08-02T10:26:14.120400 #45011] INFO -- : Can be moved to lost and found: @hashed/6b/DSC_6152.JPG
I, [2018-08-02T10:26:14.120482 #45011] INFO -- : Can be moved to lost and found: @hashed/79/02/7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451/711491b29d3eb08837798c4909e2aa4d/DSC00314.jpg
I, [2018-08-02T10:26:14.120634 #45011] INFO -- : To cleanup these files run this command with DRY_RUN=false
$ sudo gitlab-rake gitlab:cleanup:remote_upload_files DRY_RUN=false
I, [2018-08-02T10:26:47.598424 #45087] INFO -- : Looking for orphaned remote uploads to remove...
I, [2018-08-02T10:26:47.753131 #45087] INFO -- : Moved to lost and found: @hashed/6b/DSC_6152.JPG -> lost_and_found/@hashed/6b/DSC_6152.JPG
I, [2018-08-02T10:26:47.764356 #45087] INFO -- : Moved to lost and found: @hashed/79/02/7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451/711491b29d3eb08837798c4909e2aa4d/DSC00314.jpg -> lost_and_found/@hashed/79/02/7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451/711491b29d3eb08837798c4909e2aa4d/DSC00314.jpg
孤児アーティファクトファイルの削除
- GitLab 12.1 で導入されました。
ionice
GitLab 12.10 で をサポート。
ディスク上のジョブ・アーティファクト・ファイルおよび/またはディレクトリが必要以上に多いことに気づいた場合は、以下を実行してください:
sudo gitlab-rake gitlab:cleanup:orphan_job_artifact_files
このコマンドを実行します:
- アーティファクト・フォルダ全体をスキャンします。
- データベースに記録が残っているファイルをチェックします。
- データベースのレコードが見つからない場合、ファイルとディレクトリはディスクから削除されます。
デフォルトでは、このタスクは何も削除しませんが、削除できるものを表示します。実際にファイルを削除したい場合は、DRY_RUN=false
を指定してコマンドを実行してください:
sudo gitlab-rake gitlab:cleanup:orphan_job_artifact_files DRY_RUN=false
また、LIMIT
(デフォルト100
)で削除するファイル数を制限することもできます:
sudo gitlab-rake gitlab:cleanup:orphan_job_artifact_files LIMIT=100
これはディスクから100ファイルまでしか削除しません。テスト用に少量のファイルを削除する場合に使用できます。
DEBUG=1
を提供すると、孤児であると検出されたすべてのファイルのフルパスが表示されます。
ionice
がインストールされている場合、タスクはこれを使用して、コマンドがディスクに過度の負荷を与えていないことを確認します。NICENESS
で、niceness レベルを設定できます。以下に有効なレベルを示しますが、念のためman 1 ionice
を参照してください。
-
0
またはNone
-
1
またはRealtime
-
2
またはBest-effort
(デフォルト) -
3
またはIdle
期限切れのActiveSessionルックアップキーを削除
GitLab 12.2で導入されました。
# omnibus-gitlab
sudo gitlab-rake gitlab:cleanup:sessions:active_sessions_lookup_keys
# installation from source
bundle exec rake gitlab:cleanup:sessions:active_sessions_lookup_keys RAILS_ENV=production
コンテナレジストリのガベージコレクション
コンテナレジストリは、かなりの量のディスクスペースを使用する可能性があります。未使用のレイヤーを一掃するために、レジストリにはガベージコレクトコマンドが含まれています。