Proxmox Backup Server: garbage collection и prune
Введение
В этом руководстве объясняется, как настроить обслуживание Proxmox Backup Server для долгосрочного хранения резервных копий с помощью заданий prune и сборки мусора. Вы настроите конфигурацию Proxmox Prune, расписание Proxmox Garbage Collection и оцените использование хранилища, чтобы ваше хранилище данных не росло до тех пор, пока не займет все доступное дисковое пространство.
К концу этого руководства у вас будет настроенная политика prune по расписанию и расписание сборки мусора для хранилища данных Proxmox Backup Server, а также практические примеры retention для ежедневных, еженедельных и ежемесячных резервных копий.
Предварительные требования
Перед началом убедитесь, что у вас есть:
- Proxmox Backup Server 4.2.x или новее;
- Настроенное хранилище данных PBS с существующими или запланированными резервными копиями;
- Административный доступ к веб-интерфейсу Proxmox Backup Server;
- Доступ к shell от имени root или другого пользователя с достаточными административными правами PBS;
- Базовое понимание заданий резервного копирования Proxmox VE и namespaces PBS;
- Примерно 30 минут на выполнение настройки.
Это руководство предназначено для системных администраторов среднего уровня.
Шаг 1: Разберитесь, как Prune и Garbage Collection работают вместе
В Proxmox Backup Server pruning и garbage collection являются отдельными операциями обслуживания. Понимание того, как они взаимодействуют, необходимо для эффективного управления хранилищем данных Proxmox.
Задание prune определяет, какие snapshots резервных копий нужно сохранить, а какие snapshots нужно удалить из видимой истории резервных копий. Когда PBS выполняет prune snapshot, он удаляет метаданные snapshot, индексы, журналы и заметки. Он не удаляет немедленно неиспользуемые chunks резервной копии. Chunks, на которые ссылались удаленные prune snapshots, удаляются позже с помощью сборки мусора.
Garbage collection (GC) освобождает пространство хранилища данных, удаляя неиспользуемые chunks из хранилища chunks. PBS использует дедуплицированные chunks, поэтому один chunk может использоваться несколькими snapshots резервных копий. Из-за этого PBS не может безопасно удалить chunks ровно в тот момент, когда snapshot удаляется prune. Сначала он должен подтвердить, что на них больше не ссылается ни один оставшийся snapshot и ни одно выполняющееся резервное копирование.
Prune удаляет старые записи snapshots резервных копий. GC освобождает фактическое дисковое пространство.
PBS также использует grace period для удаления chunks. Во время GC chunks помечаются и удаляются на этапе sweep, но chunks внутри grace period отображаются как ожидающие удаления и не удаляются немедленно. Это защищает выполняющиеся резервные копирования и учитывает поведение времени доступа файловой системы, особенно при распространенном поведении монтирования relatime.
Шаг 2: Проверьте текущую конфигурацию хранилища данных
Это можно сделать через CLI или через веб-интерфейс.
Выведите список доступных хранилищ данных:
proxmox-backup-manager datastore list
Ожидаемый вывод: таблица datastore.
Выберите хранилище данных, в котором находятся ваши резервные копии Proxmox VE. В следующих примерах замените <DATASTORE_NAME> на имя вашего хранилища данных.
Проверьте текущий статус сборки мусора:
proxmox-backup-manager garbage-collection status <DATASTORE_NAME>
Вы должны увидеть текущий статус GC для хранилища данных. Если GC никогда не запускалась, вывод может показать, что предыдущего успешного запуска нет.
Выведите список существующих заданий prune:
proxmox-backup-manager prune-job list
Вы должны увидеть существующие задания prune или пустой список, если задание prune еще не настроено.
Для проверки через веб-интерфейс перейдите в Datastore - <DATASTORE_NAME> - Prune & GC Jobs:

Шаг 3: Спланируйте политику долгосрочного retention
Политика retention должна соответствовать требованиям восстановления и емкости хранилища. Для многих планов Proxmox backup retention практичная долгосрочная политика использует схему grandfather-father-son:
| Параметр retention | Пример значения | Результат |
|---|---|---|
keep-daily |
14 | Хранить одну резервную копию в день за 14 backup days |
keep-weekly |
8 | Хранить одну резервную копию в неделю за 8 backup weeks |
keep-monthly |
12 | Хранить одну резервную копию в месяц за 12 backup months |
keep-yearly |
2 | Хранить одну резервную копию в год за 2 backup years |
Параметры retention в PBS обрабатываются по временным корзинам. Например, keep-daily сохраняет последнюю резервную копию для каждого сохраняемого дня, а дни без резервных копий не учитываются. keep-weekly сохраняет последнюю резервную копию для каждой сохраняемой ISO-недели, а недели без резервных копий не учитываются.
Не рассчитывайте retention как простое сложение без учета пересечений. Одна резервная копия может одновременно удовлетворять daily, weekly, monthly и yearly правилам, поэтому точное количество сохраненных snapshots зависит от временных меток резервных копий.
Для ежедневного расписания резервного копирования начните с одной из этих политик:
| Политика | Настройки retention | Сценарий использования |
|---|---|---|
| Консервативная | keep-daily 7keep-weekly 4keep-monthly 6 |
Небольшое хранилище данных или короткая история восстановления |
| Сбалансированная | keep-daily 14keep-weekly 8keep-monthly 12 |
Типичные резервные копии VM и контейнеров |
| Долгосрочная | keep-daily 30keep-weekly 12keep-monthly 24keep-yearly 3 |
Более крупное хранилище данных или история, требуемая compliance |
Настройте retention до того, как хранилище данных приблизится к заполнению. Очистка хранилища данных Proxmox безопаснее, когда в PBS еще достаточно свободного пространства для записи новых резервных копий и задач обслуживания.
Шаг 4: Оцените объем хранилища резервных копий перед применением retention
Планирование хранилища для долгосрочного хранения резервных копий не равно умножению полного размера VM на количество snapshots. Proxmox Backup Server использует дедупликацию, поэтому каждая новая резервная копия обычно хранит только измененные chunks плюс метаданные. Тем не менее вам все равно следует рассчитать консервативную оценку.
Используйте эту формулу:
Оценочный объем хранилища = начальный объем защищенных данных + ежедневный объем измененных данных * эквивалент сохраненных дней + запас
Пример 1: сбалансированный retention для группы VM:
| Значение | Пример |
|---|---|
| Защищенные данные VM | 2 TB |
| Средний ежедневный объем измененных данных | 80 GB |
| Политика retention | 14 daily · 8 weekly · 12 monthly |
| Запас | 25 percent |
Приблизительное количество сохраненных точек изменений:
14 daily + 8 weekly + 12 monthly = 34 restore points
Приблизительный объем измененных данных:
80 GB * 34 = 2720 GB
Приблизительный итог до добавления запаса:
2000 GB + 2720 GB = 4720 GB
Добавьте запас 25 percent:
4720 GB * 1.25 = 5900 GB
Для этой нагрузки запланируйте около 6 TB полезной емкости хранилища данных.
Пример 2: политика для меньшего хранилища данных:
| Значение | Пример |
|---|---|
| Защищенные данные VM | 1 TB |
| Средний ежедневный объем измененных данных | 30 GB |
| Политика retention | 7 daily · 4 weekly · 6 monthly |
| Запас | 25 percent |
Приблизительное количество restore points:
7 + 4 + 6 = 17 restore points
Приблизительный объем хранилища:
1000 GB + (30 GB * 17) = 1510 GB 1510 GB * 1.25 = 1887.5 GB
Для этой нагрузки запланируйте около 2 TB полезной емкости хранилища данных.
Эти примеры намеренно консервативны. Реальное использование PBS может быть ниже, потому что дедупликация может повторно использовать chunks между несколькими snapshots и между похожими системами.
Шаг 5: Создайте задание Prune в веб-интерфейсе
- Откройте веб-интерфейс Proxmox Backup Server.
- Выберите Datastore.
- Выберите
<DATASTORE_NAME>. - Откройте вкладку Prune & GC.
- Нажмите Add Prune Job.
- Установите Datastore в
<DATASTORE_NAME>. - Установите Namespace, если вы хотите выполнять prune только для одного namespace.
- Настройте значения retention, например
keep-dailyкак14,keep-weeklyкак8иkeep-monthlyкак12. - Установите расписание, например
03:00. - Сохраните задание prune.

Ожидаемый результат: PBS создаст запланированное задание prune для хранилища данных или namespace. Это задание периодически удаляет snapshots резервных копий, которые больше не выбраны вашей политикой retention.
Шаг 6: Создайте задание Prune из командной строки
Вы также можете создать такое же задание prune из shell PBS.
Для задания prune на уровне всего хранилища данных:
proxmox-backup-manager prune-job create pve-longterm \ --store <DATASTORE_NAME> \ --schedule "03:00" \ --keep-daily 14 \ --keep-weekly 8 \ --keep-monthly 12 \ --comment "Long-term Proxmox backup retention"
Ожидаемый результат: PBS создаст задание prune с именем pve-longterm.
Для задания prune, привязанного к namespace:
proxmox-backup-manager prune-job create pve-namespace-longterm \ --store <DATASTORE_NAME> \ --ns <NAMESPACE> \ --schedule "03:00" \ --keep-daily 14 \ --keep-weekly 8 \ --keep-monthly 12 \ --comment "Long-term retention for namespace"
Ожидаемый результат: PBS выполнит prune только для выбранного namespace. Это полезно, когда разным кластерам, tenant-ам или окружениям требуются разные политики retention.
Выведите список заданий prune:
proxmox-backup-manager prune-job list
Ожидаемый вывод: таблица заданий очистки proxmox backup.
Шаг 7: Настройте расписание Garbage Collection
После того как pruning удаляет старые метаданные snapshots, GC должна выполниться, чтобы освободить пространство от неиспользуемых chunks. Еженедельное расписание GC является хорошей отправной точкой для большинства установок.
Задайте еженедельное расписание GC:
proxmox-backup-manager datastore update <DATASTORE_NAME> \ --gc-schedule "Sun 04:00"
Вы можете настроить это через веб-интерфейс, перейдя в Datastore - <DATASTORE_NAME> - Prune & GC Jobs → Garbage Collection Jobs → Edit:

Ожидаемый результат: PBS запланирует сборку мусора для хранилища данных каждое воскресенье в 04:00.
Проверьте статус GC:
proxmox-backup-manager garbage-collection status <DATASTORE_NAME>
Ожидаемый вывод включает имя хранилища данных и информацию о самом последнем или следующем запуске GC.
Вы также можете запустить GC вручную:
proxmox-backup-manager garbage-collection start <DATASTORE_NAME>
Ожидаемый результат: PBS запустит задачу GC для хранилища данных.
Не ожидайте, что GC удалит каждый неиспользуемый chunk сразу после pruning. PBS может отображать некоторые chunks как ожидающие удаления до завершения grace period.
Шаг 8: Выберите безопасное расписание Prune и GC
Практичное расписание выглядит так:
| Задача | Пример расписания | Причина |
|---|---|---|
| Задание резервного копирования Proxmox VE | Ежедневно в 01:00 |
Сначала создает новые резервные копии |
| Задание prune PBS | Ежедневно в 03:00 |
Удаляет snapshots вне retention |
| Задание GC PBS | Еженедельно в воскресенье в 04:00 |
Освобождает неиспользуемые chunks после pruning |
Такой порядок сохраняет новые резервные копии доступными до удаления старых snapshots. Он также дает PBS время завершить записи резервных копий до запуска задач prune и GC.
В загруженных окружениях избегайте одновременного запуска задач backup, verification, prune, sync и GC. Разносите задачи обслуживания по времени, чтобы снизить конкуренцию за I/O.
Если ваше хранилище данных получает много резервных копий каждый день, начните с еженедельной GC. Если хранилище данных быстро заполняется после pruning, рассмотрите более частый запуск GC, но следите за влиянием на I/O.
Шаг 9: Проверьте конфигурацию
Выведите список заданий prune:
proxmox-backup-manager prune-job list
Подтвердите, что у задания указаны ожидаемые хранилище данных, namespace, расписание и значения keep.
Покажите одно задание prune:
proxmox-backup-manager prune-job show pve-longterm
Ожидаемый результат: PBS отобразит настроенные параметры retention.
Проверьте конфигурацию GC:
proxmox-backup-manager garbage-collection list
Ожидаемый результат: PBS выведет статус сборки мусора для всех хранилищ данных, включая хранилища данных без заданий GC.
Проверьте использование хранилища данных из веб-интерфейса:
- Откройте Datastore.
- Выберите
<DATASTORE_NAME>. - Проверьте использование хранилища данных и историю задач.
- Откройте Tasks и подтвердите, что задания prune и GC завершаются успешно.
Ожидаемый результат: хранилище данных показывает запланированную активность обслуживания, а старые snapshots удаляются в соответствии с настроенной конфигурацией Proxmox Prune.
Шаг 10: Отслеживайте рост хранилища со временем
После настройки Prune jobs в PBS отслеживайте использование хранилища минимум в течение одного полного retention cycle. Например, если вы настраиваете keep-monthly 12, вам потребуется несколько месяцев данных, прежде чем станет понятен долгосрочный тренд.
Проверьте эти метрики:
| Метрика | Что проверять |
|---|---|
| Использованное пространство хранилища данных |
Подтверждает, работает ли оптимизация хранилища резервных копий |
| Журналы задач prune | Подтверждают, что snapshots удаляются |
| Журналы задач GC | Подтверждают, что неиспользуемые chunks удаляются |
| Pending removals | Указывают на chunks, ожидающие завершения grace period GC |
| Тренд размера заданий резервного копирования |
Показывает, увеличивается ли объем измененных данных |
Если хранилище данных продолжает расти быстрее, чем ожидалось, уменьшите retention или добавьте хранилище до того, как файловая система будет заполнена.
Типичные корректировки:
| Проблема | Корректировка |
|---|---|
| Хранилище данных заполняется слишком быстро | Уменьшите keep-daily, keep-weeklyили keep-monthly |
| Слишком мало недавних restore points |
Увеличьте keep-daily |
| Ежемесячная история слишком короткая |
Увеличьте keep-monthly |
| Резервные копии пересекаются с обслуживанием |
Перенесите prune или GC на более позднее время |
| GC освобождает мало места | Подтвердите, что задания prune действительно удаляют старые snapshots |
Откат изменений
Чтобы удалить задание prune:
proxmox-backup-manager prune-job remove pve-longterm
Ожидаемый результат: PBS удалит конфигурацию задания prune.
Чтобы отключить расписание GC без удаления хранилища данных:
proxmox-backup-manager datastore update <DATASTORE_NAME> \ --delete gc-schedule
Ожидаемый результат: PBS очистит автоматическое расписание GC для хранилища данных.
Чтобы изменить retention вместо удаления задания prune:
proxmox-backup-manager prune-job update pve-longterm \ --keep-daily 7 \ --keep-weekly 4 \ --keep-monthly 6
Ожидаемый результат: PBS сохранит задание prune, но применит новую политику retention во время будущих запусков prune.
Откат политики prune не восстанавливает snapshots, которые уже были удалены prune. После того как snapshot удален, а его chunks позже удалены с помощью GC, его нельзя восстановить из PBS.
Устранение неполадок
GC не освобождает пространство сразу
Причина: Prune удалил метаданные snapshot, но chunks все еще используются другими snapshots или находятся внутри grace period GC.
Исправление: дождитесь завершения grace period и запустите GC повторно позже. Проверьте журналы задач на наличие pending removals.
Prune сохраняет больше резервных копий, чем ожидалось
Причина: keep-daily, keep-weekly и keep-monthly используют временные корзины. Дни, недели или месяцы без резервных копий не учитываются. Правила retention также пересекаются.
Исправление: используйте PBS prune simulator перед изменением retention в production. Это поможет предварительно посмотреть поведение retention до применения изменений.
Хранилище данных продолжает расти после Prune и GC
Причина: ежедневный объем измененных данных может быть выше расчетного, резервные копии могут включать новые диски или retention может быть слишком большим для хранилища данных.
Исправление: пересчитайте оценку объема с использованием фактического объема измененных данных. Уменьшите retention или расширьте хранилище.
Задание Prune не влияет на Namespace
Причина: задание prune может быть настроено для неправильного namespace или неправильной глубины namespace.
Исправление: проверьте настройки задания prune и подтвердите значение --ns. Если вы хотите, чтобы задание применялось только к одному namespace, задайте namespace явно.
Backup clients все еще могут удалять резервные копии
Причина: учетные данные backup clients могут иметь права на удаление, или retention может быть настроен вне PBS.
Исправление: используйте least privilege для backup clients. Для устойчивости к ransomware предпочитайте prune jobs на стороне PBS вместо выдачи backup clients прав на удаление.
Заключение
Вы настроили обслуживание Proxmox Backup Server для долгосрочного retention, создав задание prune и запланировав сборку мусора. Вы также узнали, почему chunks не удаляются немедленно, как GC завершает очистку хранилища данных и как оценивать требования к хранилищу перед применением долгосрочного retention. Эти практики помогают оптимизировать Proxmox backup, повышая эффективность хранилища и делая политику хранения резервных копий предсказуемой и управляемой.
В качестве следующих шагов добавьте задания verification, настройте уведомления о неудачных задачах prune и GC и ежемесячно проверяйте рост хранилища данных. Это делает оптимизацию хранилища резервных копий предсказуемой и предотвращает ситуацию, когда настройки retention незаметно занимают всю доступную емкость.
Версия документа: 1.0
Последнее обновление: Июнь 2026
Владелец: Команда технической документации