Короткий ответ

Заполненный \\backup.contoso.example\Repo01 лечат retention и ёмкостью, не проводником. Удаление свежих .vbk/.vib или chunk PBS руками ломает цепочку: следующие инкременты и restore станут квестом. На VBR01 для Daily-VMs уменьшите срок хранения или число точек в job, дождитесь transform/retention pass, либо увеличьте том. На PBS — prune по политике, затем GC, не rm в datastore.

Windows Server Backup: политика версий и теневых копий, не «очистить диск D:».

Симптомы и как отличить

Типичная картина:

  • job падает в конце с нехваткой места;
  • GUI репозитория 95–100%;
  • PBS datastore quota / df 100%;
  • WSB не дописывает VHDX на target.

Отличия:

ВидноКуда
Репозиторий Offline, места хватаетRepository недоступен
Места мало из-за synthetic fullSynthetic Full
Точки есть, файлы битыеПовреждены
Места нет, потому что 3-2-1 не спроектирован3-2-1

Возможные причины

  1. Retention длиннее, чем влезет (14 дней инкрементов на диск на 5 full).
  2. Добавили VM в Daily-VMs без пересчёта ёмкости.
  3. CBT reset → серия почти-full.
  4. GFS/недельные full копируются на тот же Repo01.
  5. PBS: prune не настроен, GC давно не бегал.
  6. Immutability держит точки дольше GUI-retention — это нормально, место не отдастся до истечения.
  7. Чужой мусор на том же томе (ISO, чужие копии, store).
  8. Сломанный transform оставил временные файлы; место не вернулось.

Диагностика

1. Кто занимает Repo01

На VBR01:

Connect-VBRServer -Server 'VBR01.contoso.example'
Get-VBRBackupRepository | Format-List Name, Path, Type
Get-VBRBackup | Select-Object JobName, VMCount

В GUI: Repository → Disk → посмотрите Backups. Сверьте path с \\backup.contoso.example\Repo01.

На файловом сервере шары:

Get-ChildItem '\\backup.contoso.example\Repo01' |
  Sort-Object Length -Descending |
  Select-Object -First 20 FullName, Length, LastWriteTime
Get-Volume | Format-Table DriveLetter, FileSystemLabel, SizeRemaining, Size

Не удаляйте файлы из этого вывода. Он нужен, чтобы понять, Veeam это или чужой каталог.

WSB:

wbadmin get versions -backupTarget:\\backup.contoso.example\Repo01
Get-WBBackupSet

PBS:

proxmox-backup-manager datastore list
proxmox-backup-manager garbage-collection status
df -hT /datastore/Repo01

2. Политика vs факт

Снимите: сколько точек обещает Daily-VMs (restore points to keep / days), GFS, immutable period. Если immutable 14 дней, а диск на 7 полных — математика не сходится, GUI «keep 7» врёт относительно места.

3. Кто ещё пишет на том

Второй job, backup copy, чужой сервер, пользовательский share на том же volume. Repo01 должен быть выделен.

Решение

Сценарий A. Укоротить retention штатно (Veeam)

В Daily-VMs → Retention уменьшите число точек на 1–2, не с 30 до 3 за ночь без расчёта. Примените, дождитесь завершения job или отдельного retention/transform. Место освобождается после успешного merge/delete по правилам цепочки.

Не трогайте файлы в \\backup.contoso.example\Repo01\Daily-VMs.

Если нужен срочный запас: выключите некритичные job с того же репозитория на окно, не прод.

Сценарий B. Добавить ёмкость

Лучший путь, если retention бизнес-обоснован. Расширьте том, добавьте extent в scale-out, новый репозиторий и перенос средствами Veeam, не robocopy цепочки вслепую.

Сценарий C. PBS prune + GC

Настройте prune (keep last N / keep daily) на datastore. Затем:

# prune выполняется политикой; GC после prune
proxmox-backup-manager garbage-collection start --datastore Repo01
proxmox-backup-manager garbage-collection status --datastore Repo01

Не rm каталогов chunk. GC долго держит IO — не в окно backup.

Сценарий D. Windows Server Backup

Уменьшите число версий в политике WSB. Удаление старых версий — через политику/wbadmin, не стирание папки WindowsImageBackup целиком, если хотите сохранить последние точки.

wbadmin get versions -backupTarget:\\backup.contoso.example\Repo01

Удаление конкретной версии — только документированной командой wbadmin delete backup с идентификатором версии после предупреждения владельцу. Не delete catalog.

Сценарий E. Immutability «мешает» чистить

Это защита, не баг. Ждите истечения или расширяйте диск. Отключать immutability, чтобы почистить диск — прямой путь к потере копий при атаке. См. immutable и защита от удаления.

Сценарий F. Чужие файлы на томе

Перенесите ISO и пользовательские данные на другой volume. Репозиторий не файловая помойка.

После появления свободных гигабайт — один прогон Daily-VMs, убедитесь Success.

Как проверить, что проблема устранена

  • Свободное место стабильно выше порога (например, не ниже 15–20% после ночного job — порог свой, но не 0).
  • Новая точка Daily-VMs создалась.
  • Цепочка в GUI без «missing incremental».
  • PBS: df не 100% после GC, новые snapshot пишутся.
Get-VBRBackup -Name 'Daily-VMs' | Get-VBRRestorePoint |
  Sort-Object CreationTime -Descending |
  Select-Object -First 10 Name, CreationTime, Type

Пробный restore файла из старой оставшейся точки — цепочка жива.

Если не помогло

  • Retention уменьшили, место не вернулось: ждите transform; смотрите immutable; ищите другой job на том же path.
  • Место вернулось и снова 100% за ночь: прирост данных/CBT reset/новый full. Нужна ёмкость, не ещё -1 точка каждую неделю до нуля.
  • WSB чистит не тот target (локальный диск vs share).
  • Scale-out: заполнен один extent, политика placement не Spill over.

Не отключайте Windows Defender навсегда. Исключение каталога репозитория — если доказан lock файлов, точечно.

Если после retention pass место снова упирается в 100% за одну ночь, снимите размер последней точки Daily-VMs и сравните с месяцем назад: рост данных и сброс CBT маскируются под «диск маленький». Тогда расширяйте массив или режьте состав job, а не ещё одну точку из семи. Для PBS смотрите, не держит ли GC очередь: prune без GC не отдаёт байты, и GUI врёт «политика применена».

Профилактика

  • Мониторинг свободных байт Repo01 с алертом до 100%.
  • Пересчёт ёмкости при добавлении VM в Daily-VMs.
  • GFS и ежедневные точки — на разные репозитории или с запасом.
  • PBS: prune+GC по расписанию вне backup.
  • Ёмкость репозитория вписывается в 3-2-1, а не «диск, который остался».

FAQ

Можно удалить самый старый .vbk вручную?

Нет. Инкременты ссылаются на full. Ручное удаление = битая цепочка.

Почему GUI показывает keep 7, а точек 14?

Immutable, GFS, незавершённый retention pass, точки других job в том же backup.

Срочно нужно 100 ГБ сегодня

Расширить том или остановить некритичный job. Не format. Не disable immutable.

PBS после prune место не выросло

Пока не отработает GC, chunk не отдаются. Смотрите status GC.

WSB «удалить все копии старше N дней»

Это штатный рычаг политики. Всё равно согласуйте, какие даты пропадут, и не путайте с удалением каталога.

Robocopy репозитория на новый диск

Риск сломать. Используйте процедуры вендора (evacuate extent, backup copy). Если копируете — только целый репозиторий, job выключены, checksum, и это уже миграция, не «освободить место».