Не удается сжать vhdx-файл в Windows Server 2012

Начиная с Windows Server 2012 компания Microsoft изменила процедуру сжатия (compact) файлов виртуальных жестких дисков (vhdx) - перед сжатием такого файла нужно вначале присоединить (mount) его к системе в режиме "Только чтение" (Read-only), а потом уже выполнять процедуру сжатия. Затем файл нужно отсоединить (dismount).

Присоединить и отсоединить vhdx-файл можно как с помощью оснастки "Управление дисками" (Disk Management), так и с помощью PowerShell.

Присоединяем vhdx:

pic1.png


Ставим галку "Read-only" (Только чтение):

pic2.png

Сжимаем vhdx используя Edit Disk в консоли Hyper-V:

pic3.png

Отсоединяем vhdx с помощью оснастки "Управление дисками":

pic4.png


Для PowerShell набор команд будет выглядеть следующим образом (запускать PowrerShell нужно с повышением):
Mount-VHD -Path C:\VHD\disk.vhdx -ReadOnly 
Optimize-VHD -Path C:\VHD\disk.vhdx -Mode Quick 
Dismount-VHD C:\VHD\disk.vhdx
C:\VHD\disk.vhdx замените на путь к вашему vhdx-файлу.


Полезные ссылки:
Compacting a Dynamically Expanding virtual hard disk in Windows Server 2012