Rake 작업 정리
GitLab은 GitLab 인스턴스를 정리하기 위한 Rake 작업을 제공합니다.
참조되지 않는 LFS 파일 제거
- GitLab 12.10에서 소개됨.
경고: GitLab 업그레이드 후 12시간 이내에 이 작업을 실행하지 마십시오. 이는 모든 백그라운드 마이그레이션이 완료되었음을 보장하여 데이터 손실을 방지하기 위한 것입니다.
저장소의 히스토리에서 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_PATH
대신 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 -> /opt/gitlab/embedded/service/gitlab-rails/public/uploads/qux/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로 이동 가능
I, [2018-07-27T12:08:28.764470 #89817] INFO -- : 파일을 정리하려면 DRY_RUN=false로 이 명령을 실행하십시오
$ sudo gitlab-rake gitlab:cleanup:project_uploads DRY_RUN=false
I, [2018-07-27T12:08:32.944414 #89936] INFO -- : 고아 프로젝트 업로드를 찾고 있습니다...
D, [2018-07-27T12:08:33.293568 #89817] DEBUG -- : 500개의 프로젝트 업로드 파일 경로 일괄 처리 중, /opt/gitlab/embedded/service/gitlab-rails/public/uploads/test.out부터 시작
I, [2018-07-27T12:08:33.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:33.755624 #89817] INFO -- : /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 -- : /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.
참고: 이 명령어들은 오브젝트 스토리지에 저장된 아티팩트에는 적용되지 않습니다.
경고: GitLab 14.9 이전에는 이 작업이 테스트 커버리지 관련 아티팩트를 잘못 삭제합니다. 버그 수정은 14.6.6, 14.7.5 및 14.8.3에도 백포트되었습니다. 데이터 손실을 피하려면 버그 수정이 적용된 릴리스로 업그레이드하세요.
디스크에 예상보다 더 많은 작업 아티팩트 파일 및/또는 디렉토리가 있는 경우 다음을 실행할 수 있습니다:
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
로 nice 레벨을 구성할 수 있습니다. 아래는 유효한 레벨이지만 확실하게 확인하려면 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
컨테이너 레지스트리 가비지 수집
컨테이너 레지스트리는 상당한 디스크 공간을 사용할 수 있습니다. 사용되지 않는 레이어를 정리하기 위해 레지스트리에 가비지 수집 명령이 포함되어 있습니다.