Wiki
스토리지 및 GC
리포지토리별 스토리지 대시보드(크기, 중복 제거, 증가)와 가비지 컬렉션: 오래된 리비전, 고아 chunks, phantom files 정리.
소개
스토리지 탭은 리포지토리의 디스크 사용량을 보여주며, 오래된 리비전과 더 이상 쓸모없어진 데이터를 정리해 공간을 회수하는 가비지 컬렉션(GC) 도구를 제공합니다.
접근 권한과 역할
슈퍼 관리자와, 자신이 관리하는 리포지토리에 대한 project_admin이 사용할 수 있으며 GC 실행도 포함됩니다. 반면 서버 전역 통계와 라이선스는 슈퍼 관리자에게만 한정됩니다 (패널의 다른 곳에 있음).
메트릭
- 전체 크기와 압축된 크기.
- 중복 제거 비율(%): chunks 공유와 압축으로 절약된 공간의 비율.
- 파일 / 리비전 / chunks.
- 증가(최근 30일): 일별 리비전 수 히스토그램.
- 가장 큰 파일: 크기 기준 상위 20개와 각각의 리비전 수.
이 수치는 부풀어 오르는 리포지토리를 찾아내는 데 도움이 됩니다: 자주 다시 커밋되는 큰 바이너리 파일이나, 최근 30일간의 비정상적인 증가 같은 경우입니다.
가비지 컬렉션
GC는 두 가지 매개변수에 따라 오래된 이력을 정리합니다:
| 매개변수 | 기본값 | 역할 |
|---|---|---|
| Retention (days) | 90 | 이보다 경과일이 적은 리비전은 항상 유지됩니다. |
| Min revisions to keep | 5 | 경과일과 무관하게 파일마다 유지되는 최근 리비전 수. |
버튼 두 개:
- Preview: 아무것도 삭제하지 않고 시뮬레이션합니다. 배너: "Y개 파일에 걸쳐 X개 리비전이 삭제되고, Z개 phantom(유령) 항목이 제거됩니다". 항상 먼저 미리보기하세요.
- Run GC: 실제로 실행합니다. 배너: "X개 리비전 삭제, Y개 고아 chunks 정리, Z개 phantom 항목 제거". 실행은 감사 로그에 기록됩니다.
GC가 삭제하는 대상
- 오래된 리비전: Retention (days)보다 오래되고 그리고 파일마다 Min revisions to keep의 최신 항목을 넘어선 것. 그다음 그 chunks가 다른 어떤 리비전에서도 참조되지 않으면 삭제됩니다.
- 고아 chunks: 정리 후 어떤 리비전도 더 이상 사용하지 않는 데이터 블록.
- Phantom files: 실제로 커밋된 적 없는 파일 행(잘못된 경로나 보류 상태로 남은 항목)으로, 고정된 7일 창(설정 불가)을 넘어선 것.
삭제되었거나 obliterate된 파일의 삭제 표식(tombstones)은 보존됩니다: 이는 sync 시 클라이언트에 삭제를 전파하는 데 쓰이므로 사라져서는 안 됩니다.
흔한 함정
Preview가 거의 아무것도 보고하지 않음
리포지토리가 최근에 생성되었거나 이력이 보존 창 안에 들어맞으면 정상입니다. GC는 충분히 오래되고 동시에 파일마다 최신 N개를 넘어선 리비전만 건드립니다.
Preview와 Run의 카운터가 일치하지 않음
Preview는 삭제될 chunks와 리비전-chunk 링크의 정확한 수를 예측할 수 없습니다: 보고할 수 있는 것은 리비전, 스캔된 파일, phantom 항목뿐입니다. 고아 chunks는 Run 시점에만 나타납니다.
공간을 회수하려고 보존 기간을 낮추기
가능하지만 이력을 잃습니다. 과거로 멀리 되돌아갈 수 있어야 하는 프로젝트에서는 넉넉한 보존 기간을 유지하고, 대신 큰 파일로 조정하세요(가장 큰 파일 목록과, 재생성 가능한 산출물을 추적하지 않도록 돕는 .uversionignore를 참조).