uVersion
Русский
Скачать →

Wiki

Хранилище и GC

Панель хранилища по репозиториям (размер, дедупликация, рост) и сборка мусора: очистка старых ревизий, осиротевших chunks, phantom files.

Введение

Вкладка Хранилище показывает использование диска репозиторием и предоставляет инструмент сборки мусора (GC) для освобождения места путём очистки старых ревизий и данных, ставших бесполезными.

Доступ и роли

Доступно суперадмину и project_admin для репозиториев, которыми он управляет, включая запуск GC. Глобальная статистика сервера и лицензия, напротив, доступны только суперадмину (в другом месте панели).

Метрики

Панель хранилища: коэффициент дедупликации, гистограмма роста за 30 дней и топ-20 самых крупных файлов.
  • Общий размер и сжатый размер.
  • Коэффициент дедупликации (%): доля места, сэкономленного за счёт совместного использования chunks и сжатия.
  • Файлы / ревизии / chunks.
  • Рост (последние 30 дней): гистограмма ревизий по дням.
  • Самые крупные файлы: топ-20 по размеру с числом их ревизий.

Эти цифры помогают заметить раздувающийся репозиторий: крупный бинарный файл, который часто перекоммичивают, или аномальный рост за последние 30 дней.

Сборка мусора

Панель GC: поля хранения и минимума ревизий, кнопки Preview и Run GC и баннер результата.

GC очищает старую историю согласно двум параметрам:

ПараметрПо умолчаниюНазначение
Retention (days)90Возраст, ниже которого ревизия всегда сохраняется.
Min revisions to keep5Число недавних ревизий, сохраняемых на файл, независимо от их возраста.

Две кнопки:

  • Preview: моделирует, ничего не удаляя. Баннер: «Было бы удалено X ревизий по Y файлам, было бы убрано Z фантомных записей». Всегда сначала просматривайте.
  • Run GC: выполняет по-настоящему. Баннер: «Удалено X ревизий, очищено Y осиротевших chunks, убрано Z фантомных записей». Запуск записывается в журнал аудита.
GC деструктивен и необратим Очищенные ревизии (за пределами окна хранения) восстановить нельзя. Запускайте Preview перед каждым Run GC и проверяйте, что цифры соответствуют вашим ожиданиям.

Что удаляет GC

  1. Старые ревизии: те, что старше Retention (days) И выходят за пределы Min revisions to keep самых свежих на файл. Затем их chunks, если на них больше не ссылается ни одна другая ревизия.
  2. Осиротевшие chunks: блоки данных, которые после очистки больше не использует ни одна ревизия.
  3. Phantom files: строки файлов, которые никогда по-настоящему не коммитились (некорректный путь или запись, оставшаяся в подвешенном состоянии), за пределами фиксированного окна в 7 дней (не настраивается).

Маркеры удаления (tombstones) удалённых или obliterate-нутых файлов сохраняются: они служат для распространения удаления на клиенты при sync, и потому не должны исчезать.

Частые ловушки

Preview сообщает очень мало

Это нормально, если репозиторий новый или его история умещается в окно хранения. GC затрагивает только ревизии, которые одновременно достаточно старые и выходят за пределы последних N на файл.

Preview и Run показывают разные счётчики

Preview не может предсказать точное число удаляемых chunks и связей ревизия-chunk: он сообщает лишь о ревизиях, просканированных файлах и фантомных записях. Осиротевшие chunks появляются только при Run.

Снизить хранение, чтобы освободить место

Возможно, но вы теряете историю. В проекте, где нужно уметь откатываться далеко назад, сохраняйте комфортное хранение и работайте лучше с крупными файлами (см. список самых крупных файлов и .uversionignore, чтобы не отслеживать перегенерируемые артефакты).