Wiki
Хранилище и GC
Вид Storage вкладки Files: панель хранилища по репозиториям (размер, дедупликация, рост) и сборка мусора, очистка старых ревизий, осиротевших chunks, phantom files.
Введение
Вид Storage показывает использование диска репозиторием (проектом, версионируемым на сервере) и предоставляет инструмент сборки мусора (GC) для освобождения места путём очистки старых ревизий и данных, ставших бесполезными.
Доступ и роли
Вкладка Files и её вид Storage доступны суперадмину и project_admin для репозиториев, которыми он управляет, включая запуск GC. Глобальная статистика сервера и лицензия, напротив, доступны только суперадмину (в другом месте панели).
Метрики
Вид Storage открывается тремя карточками: Total Size, Files / Revisions и Dedup Ratio. Затем идут гистограмма Growth (Last 30 Days) и таблица Largest Files. Кнопка обновления в левом верхнем углу пересчитывает всё.
Что означает каждое число:
- Total Size: общий размер файлов, а сразу под ним — сжатый размер, реально занимаемый на диске.
- Files / Revisions: число файлов, а под ним — число ревизий и chunks.
- Dedup Ratio (%): доля места, сэкономленного за счёт совместного использования chunks и сжатия.
- Growth (Last 30 Days): накопленный размер по дням. Наведите курсор на столбик, чтобы прочитать его дату, размер и число ревизий.
- Largest Files: 20 самых крупных файлов с их размером и числом ревизий.
Эти цифры помогают заметить раздувающийся репозиторий: крупный бинарный файл, который часто перекоммичивают, или аномальный рост за последние 30 дней.
Сборка мусора
Блок Garbage Collection находится внизу вида Storage. Он очищает старую историю согласно двум параметрам:
| Параметр | По умолчанию | Назначение |
|---|---|---|
| Retention (days) | 90 | Возраст, ниже которого ревизия всегда сохраняется. |
| Min revisions to keep | 5 | Число недавних ревизий, сохраняемых на файл, независимо от их возраста. |
1. Задать два параметра
Введите Retention (days) и Min revisions to keep в два поля слева от кнопок. Они появляются со значениями по умолчанию из таблицы выше — 90 и 5. Напоминание: ревизия очищается, только если выполнены оба условия.
2. Запустить предпросмотр через Preview
Preview моделирует очистку, ничего не удаляя. Под кнопками появляется жёлтый баннер: «Preview: X revisions would be deleted across Y files, Z phantom file entries would be removed». Это момент проверить порядок величины; если число вас удивляет, поднимите срок хранения, а не запускайте.
3. Выполнить через Run GC
Красная кнопка Run GC выполняет очистку. Зелёный баннер завершения сообщает «GC complete: X revisions deleted, Y orphan chunks cleaned, Z phantom file entries removed», метрики вверху перезагружаются, а запуск записывается в журнал аудита.
Что удаляет GC
- Старые ревизии: те, что старше Retention (days) И выходят за пределы Min revisions to keep самых свежих на файл. Затем их chunks, если на них больше не ссылается ни одна другая ревизия.
- Осиротевшие chunks: блоки данных, которые после очистки больше не использует ни одна ревизия.
- Phantom files: строки файлов, которые никогда по-настоящему не коммитились (некорректный путь или запись, оставшаяся в подвешенном состоянии), за пределами фиксированного окна в 7 дней (не настраивается).
Маркеры удаления (tombstones) удалённых или obliterate-нутых файлов сохраняются: они служат для распространения удаления на клиенты при sync, и потому не должны исчезать.
Частые ловушки
Preview сообщает очень мало
Это нормально, если репозиторий новый или его история умещается в окно хранения. GC затрагивает только ревизии, которые одновременно достаточно старые и выходят за пределы последних N на файл.
Preview и Run показывают разные счётчики
Preview не может предсказать точное число удаляемых chunks и связей ревизия-chunk: он сообщает лишь о ревизиях, просканированных файлах и фантомных записях. Осиротевшие chunks появляются только при Run.
Снизить хранение, чтобы освободить место
Возможно, но вы теряете историю. В проекте, где нужно уметь откатываться далеко назад, сохраняйте комфортное хранение и работайте лучше с крупными файлами (см. список самых крупных файлов и .uversionignore, чтобы не отслеживать перегенерируемые артефакты).