Hyper‑V: VHDX раздувается и кончился диск — как сжать и навести порядок (2025)

Динамический VHDX внезапно занял весь диск? Покажу, как безопасно освободить место: очистка гостевой ОС, TRIM/обнуление свободного, Optimize-VHD/Compact, слияние AVHDX после снимков и что делать с переполненным SSD.

Коротко: как вернуть гигабайты

  • Очистите место внутри гостевой ОС и обнулите свободное пространство (TRIM/zero-fill).
  • Выключите ВМ. На хосте выполните Optimize-VHD (или «Редактировать диск → Сжать»).
  • Удалите/слейте снимки (AVHDX), если есть — они занимают львиную долю.
Нужна помощь? Разберу цепочку AVHDX, безопасно объединю снимки, сожму VHDX и верну место на SSD.

1) Чистим гостевую систему

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

Внутри гостя, PowerShell (Администратор) — выполнять по одной:

cleanmgr /sageset:1 & cleanmgr /sagerun:1
Optimize-Volume -DriveLetter C -ReTrim
defrag C: /L /O

Максимальный эффект даст зануление свободного места. Официальная утилита Sysinternals SDelete: страница Microsoft.

Внутри гостя, CMD (Администратор) — выполняется долго:

sdelete64.exe -z C:

2) Сжимаем VHDX на хосте

Выключите виртуальную машину. Выполните сжатие.

На хосте, PowerShell (Администратор) — выполнять по одной:

Get-VMHardDiskDrive -VMName "VM-Name" | Select-Object Path
Optimize-VHD -Path "D:\VMs\VM-Name\Virtual Hard Disks\disk.vhdx" -Mode Full

Альтернатива — Hyper‑V Manager: «Действия → Редактировать диск → Указать VHDX → Сжать».

3) Снимки (Checkpoint): объединяем AVHDX

Каждый снимок создаёт AVHDX и растёт сам, а базовый диск не уменьшается. Удаление снимка «сливает» изменения в базовый VHDX.

На хосте, PowerShell — выполнять по одной:

Get-VMSnapshot -VMName "VM-Name"
Remove-VMSnapshot -VMName "VM-Name" -Name "CheckpointName"

Не удаляйте AVHDX вручную в Проводнике — рискуете потерять данные. Используйте только инструменты Hyper‑V.

4) Конвертация и исправление цепочек

Если цепочка дисков повреждена или требуется «уплотнить» в новый файл — конвертируйте:

На хосте, PowerShell — выполнять по одной:

Convert-VHD -Path "D:\VMs\VM-Name\disk.vhdx" -DestinationPath "D:\VMs\VM-Name\disk_compact.vhdx" -VHDType Dynamic

После проверки можно заменить старый диск на новый в настройках ВМ.

5) Полезные советы

  • Храните ВМ на диске с запасом 20–30%. При нулевом запасе рискуете повредить VHDX.
  • На гостевых Linux используйте fstrim -av перед выключением ВМ — это ускоряет Compact.
  • Для ReFS-пулов проверьте состояние и запустите обслуживание тома по расписанию.

FAQ

Можно ли сжать подключённый диск «на горячую»?

Нет. Для Full Compact ВМ должна быть выключена и диск отсоединён от процессов.

Почему после Compact размер почти не изменился?

Свободное место внутри гостя не было обнулено (нет TRIM/zero-fill) или есть активные снимки AVHDX.

Читайте также: