저장소 확인

Tier: Free, Premium, Ultimate Offering: Self-managed

git fsck를 사용하여 저장소에 커밋된 모든 데이터의 무결성을 확인할 수 있습니다. GitLab 관리자는 다음을 수행할 수 있습니다:

명령줄에서 수동으로 실행되지 않는 검사는 Gitaly 노드를 통해 실행됩니다. Gitaly 저장소 일관성 검사, 일부 비활성화된 검사 및 일관성 검사를 구성하는 방법에 대한 정보는 저장소 일관성 검사를 참조하세요.

GitLab UI를 사용하여 프로젝트의 저장소 확인

GitLab UI를 사용하여 프로젝트의 저장소를 확인하려면:

  1. 왼쪽 사이드바에서 하단에서 관리자를 선택합니다.
  2. 개요 > 프로젝트를 선택합니다.
  3. 확인할 프로젝트를 선택합니다.
  4. 저장소 확인 섹션에서 저장소 확인 트리거를 선택합니다.

검사는 비동기적으로 실행되므로 프로젝트 페이지의 관리자 영역에서 검사 결과가 표시되기 전에는 몇 분이 걸릴 수 있습니다. 검사에 실패한 경우 해결 방법을 참조하세요.

모든 프로젝트에 대해 저장소 검사 활성화

수동으로 저장소를 확인하는 대신, GitLab을 구성하여 주기적으로 검사를 실행할 수 있습니다:

  1. 왼쪽 사이드바에서 하단에서 관리자를 선택합니다.
  2. 설정 > 저장소를 선택합니다.
  3. 저장소 유지 관리를 확장합니다.
  4. 저장소 확인 활성화를 선택합니다.

활성화되면 GitLab은 주기적으로 모든 프로젝트 저장소와 위키 저장소에 대해 저장소 검사를 실행하여 가능한 데이터 손상을 감지합니다. 프로젝트는 한 달에 한 번 초과하여 확인되지 않으며 새로운 프로젝트는 적어도 24시간 동안 확인되지 않습니다.

관리자는 저장소 검사의 빈도를 구성할 수 있습니다. 빈도를 편집하려면:

  • Linux 패키지 설치의 경우, /etc/gitlab/gitlab.rbgitlab_rails['repository_check_worker_cron']을 편집합니다.
  • 소스 기반 설치의 경우, /home/git/gitlab/config/gitlab.yml[gitlab.cron_jobs.repository_check_worker]를 편집합니다.

모든 GitLab 관리자는 프로젝트의 저장소 검사에 실패하면 매주 일요일 시작 시 자정에 기본적으로 이 알림을 이메일로 받습니다.

알려진 검사 실패가 있는 저장소는 /admin/projects?last_repository_check_failed=1에서 찾을 수 있습니다.

명령줄을 사용하여 검사 실행

Gitaly 서버의 저장소에서 명령줄을 사용하여 git fsck를 실행할 수 있습니다. 저장소를 찾으려면:

  1. 저장소의 저장 위치로 이동합니다:
    • Linux 패키지 설치의 경우, 저장소는 기본적으로 /var/opt/gitlab/git-data/repositories 디렉토리에 저장됩니다.
    • GitLab Helm 차트 설치의 경우, 저장소는 기본적으로 Gitaly 팟 내부의 /home/git/repositories 디렉토리에 저장됩니다.
  2. 검사해야 하는 저장소가 포함된 하위 디렉터리를 식별합니다.
  3. 검사를 실행합니다. 예:

    sudo -u git /opt/gitlab/embedded/bin/git \
       -C /var/opt/gitlab/git-data/repositories/@hashed/0b/91/0b91...f9.git fsck --no-dangling
    

    에러 fatal: detected dubious ownership in repository는 잘못된 계정을 사용하여 명령을 실행 중이라는 것을 의미합니다. 예를 들어 root.

검사에 실패한 경우 해야 할 일

저장소 검사가 실패하면 디스크의 repocheck.log 파일에서 오류를 찾습니다:

  • Linux 패키지 설치의 경우, /var/log/gitlab/gitlab-rails.
  • 자체 컴파일 설치의 경우, /home/git/gitlab/log.
  • GitLab Helm 차트 설치의 경우, GitLab 팟 내부의 /var/log/gitlab.

주기적인 저장소 검사가 잘못된 경고를 일으키는 경우, 모든 저장소 검사 상태를 지울 수 있습니다:

  1. 왼쪽 사이드바에서 하단에서 관리자를 선택합니다.
  2. 설정 > 저장소를 선택합니다.
  3. 저장소 유지 관리를 확장합니다.
  4. 모든 저장소 검사 지우기를 선택합니다.

문제 해결

저장소 검사를 수행할 때 다음 문제를 마주칠 수 있습니다.

오류: failed to parse commit <commit SHA> from object database for commit-graph

저장소 검사 로그에서 failed to parse commit <commit SHA> from object database for commit-graph 오류를 볼 수 있습니다. 이 오류는 commit-graph 캐시가 오래되었을 때 발생합니다. commit-graph 캐시는 보조 캐시이며 일반적인 Git 작업에 필요하지는 않습니다.

이 메시지를 무시해도 안전하지만, 자세한 내용은 error: Could not read from object database for commit-graph에서 확인하세요.

미사용된 커밋, 태그 또는 블롭 메시지

저장소 검사 출력에는 종종 정리해야 할 태그, 블롭 및 커밋이 포함됩니다:

미사용된 태그 5c6886c774b713a43158aae35c4effdb03a3ceca
미사용된 블롭 3e268c23fcd736db92e89b31d9f267dd4a50ac4b
미사용된 커밋 919ff61d8d78c2e3ea9a32701dff70ecbefdd1d7

이는 Git 저장소에서 일반적입니다. 브랜치로 강제 푸시하는 등의 작업으로 인해 저장소에 커밋이 생성되어 더 이상 참조되지 않게 되면 발생합니다.

저장소 검사가 실패하면 출력에 이러한 경고가 포함될 가능성이 높습니다.

이러한 메시지를 무시하고 다른 출력에서 저장소 검사 실패의 근본 원인을 확인하세요.

GitLab 15.8 및 이후에서는 더 이상 이러한 메시지를 검사 출력에 포함하지 않습니다. 명령줄에서 실행할 때 이들을 억제하려면 --no-dangling 옵션을 사용하세요.