Rake 작업 정리
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"
# 소스에서 설치
bundle exec rake gitlab:cleanup:orphan_lfs_file_references RAILS_ENV=production PROJECT_PATH="gitlab-org/gitlab-foss"
PROJECT_ID
대신에 프로젝트를 지정할 수도 있습니다.
예를 들어:
$ sudo gitlab-rake gitlab:cleanup:orphan_lfs_file_references PROJECT_ID="13083"
I, [2019-12-13T16:35:31.764962 #82356] INFO -- : GitLab Org / GitLab Foss 프로젝트의 고아 LFS 파일을 찾고 있습니다.
I, [2019-12-13T16:35:31.923659 #82356] INFO -- : 잘못된 참조를 제거했습니다: 12
기본적으로 해당 작업은 아무 것도 삭제하지 않고 삭제할 파일 참조의 수를 보여줍니다. 실제로 참조를 삭제하려면 DRY_RUN=false
로 명령을 실행하십시오. 또한 삭제할 참조의 수를 제한하려면 LIMIT={number}
매개변수를 사용할 수 있습니다.
이 Rake 작업은 LFS 파일에 대한 참조만 제거합니다. 참조되지 않는 LFS 파일은 나중에 (하루에 한 번) 가비지 컬렉션됩니다. 즉시 가비지 컬렉션을 수행해야 하는 경우에는 아래에 설명된 rake gitlab:cleanup:orphan_lfs_files
를 실행하십시오.
참조되지 않는 LFS 파일 즉시 제거
- GitLab 12.10에서 도입되었습니다.
참조되지 않는 LFS 파일은 매일 삭제되지만 필요한 경우 즉시 제거할 수 있습니다. 예를 들어:
# omnibus-gitlab
sudo gitlab-rake gitlab:cleanup:orphan_lfs_files
# 소스에서 설치
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 -- : 참조되지 않는 LFS 파일을 제거했습니다: 12
프로젝트 업로드 파일 정리
GitLab 데이터베이스에 존재하지 않는 경우 프로젝트 업로드 파일을 정리합니다.
파일 시스템에서 프로젝트 업로드 파일 정리
- GitLab 11.2에서 도입되었습니다.
GitLab 데이터베이스에 존재하지 않는 경우 로컬 프로젝트 업로드 파일을 정리합니다. 작업은 해당 프로젝트를 찾을 수 있다면 파일을 수정을 시도하고, 그렇지 않으면 파일을 잊어버린 곳으로 옮깁니다.
# omnibus-gitlab
sudo gitlab-rake gitlab:cleanup:project_uploads
# 소스에서 설치
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 -- : 정리할 고아 프로젝트 업로드를 찾고 있습니다. 드라이런...
D, [2018-07-27T12:08:28.293568 #89817] DEBUG -- : 500개의 프로젝트 업로드 파일 경로 일괄 처리, /opt/gitlab/embedded/service/gitlab-rails/public/uploads/test.out로 시작
I, [2018-07-27T12:08:28.689869 #89817] INFO -- : /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 -- : /opt/gitlab/embedded/service/gitlab-rails/public/uploads/foo/bar/89a0f7b0b97008a4a18cedccfdcd93fb/foo.txt을 수정 가능
I, [2018-07-27T12:08:28.760257 #89817] INFO -- : /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 task를 실행하여 모든 업로드가 객체 리포지터리로 이동되고 업로드 폴더에 파일이 없는지 확인하십시오.
오브젝트 리포지터리에서 프로젝트 업로드 파일 정리
- 소개됨 GitLab 11.2에서.
GitLab 데이터베이스에 존재하지 않는 경우 오브젝트 리포지터리 업로드 파일을 잃어버린 물품 디렉터리로 이동합니다.
# omnibus-gitlab
sudo gitlab-rake gitlab:cleanup:remote_upload_files
# 소스에서 설치
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 -- : 삭제할 존재하지 않는 원격 업로드를 찾는 중. 드라이 런...
I, [2018-08-02T10:26:14.120400 #45011] INFO -- : 분실물함으로 이동 가능: @hashed/6b/DSC_6152.JPG
I, [2018-08-02T10:26:14.120482 #45011] INFO -- : 분실물함으로 이동 가능: @hashed/79/02/7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451/711491b29d3eb08837798c4909e2aa4d/DSC00314.jpg
I, [2018-08-02T10:26:14.120634 #45011] INFO -- : 이러한 파일을 정리하려면 DRY_RUN=false로 이 명령어를 실행합니다
$ sudo gitlab-rake gitlab:cleanup:remote_upload_files DRY_RUN=false
I, [2018-08-02T10:26:47.598424 #45087] INFO -- : 삭제할 존재하지 않는 원격 업로드를 찾는 중...
I, [2018-08-02T10:26:47.753131 #45087] INFO -- : 분실물함으로 이동: @hashed/6b/DSC_6152.JPG -> lost_and_found/@hashed/6b/DSC_6152.JPG
I, [2018-08-02T10:26:47.764356 #45087] INFO -- : 분실물함으로 이동: @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
가 설치되어 있다면, 이 작업은 디스크에 과도한 부하를 일으키지 않도록 ionice
를 사용합니다. 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
# 소스에서 설치
bundle exec rake gitlab:cleanup:sessions:active_sessions_lookup_keys RAILS_ENV=production
컨테이너 레지스트리 가비지 수집
컨테이너 레지스트리는 상당량의 디스크 공간을 사용할 수 있습니다. 사용하지 않는 레이어를 정리하려면 레지스트리에 가비지 수집 명령이 포함되어 있습니다.