Wiki
Хранилище и GC
Панель хранилища по репозиториям (размер, дедупликация, рост) и сборка мусора: очистка старых ревизий, осиротевших chunks, phantom files.
Введение
Вкладка Хранилище показывает использование диска репозиторием и предоставляет инструмент сборки мусора (GC) для освобождения места путём очистки старых ревизий и данных, ставших бесполезными.
Доступ и роли
Доступно суперадмину и project_admin для репозиториев, которыми он управляет, включая запуск GC. Глобальная статистика сервера и лицензия, напротив, доступны только суперадмину (в другом месте панели).
Метрики
- Общий размер и сжатый размер.
- Коэффициент дедупликации (%): доля места, сэкономленного за счёт совместного использования chunks и сжатия.
- Файлы / ревизии / chunks.
- Рост (последние 30 дней): гистограмма ревизий по дням.
- Самые крупные файлы: топ-20 по размеру с числом их ревизий.
Эти цифры помогают заметить раздувающийся репозиторий: крупный бинарный файл, который часто перекоммичивают, или аномальный рост за последние 30 дней.
Сборка мусора
GC очищает старую историю согласно двум параметрам:
| Параметр | По умолчанию | Назначение |
|---|---|---|
| Retention (days) | 90 | Возраст, ниже которого ревизия всегда сохраняется. |
| Min revisions to keep | 5 | Число недавних ревизий, сохраняемых на файл, независимо от их возраста. |
Две кнопки:
- Preview: моделирует, ничего не удаляя. Баннер: «Было бы удалено X ревизий по Y файлам, было бы убрано Z фантомных записей». Всегда сначала просматривайте.
- Run GC: выполняет по-настоящему. Баннер: «Удалено X ревизий, очищено Y осиротевших chunks, убрано Z фантомных записей». Запуск записывается в журнал аудита.
Что удаляет 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, чтобы не отслеживать перегенерируемые артефакты).