Я видел (и пробовал) много способов снять шкуру с этой кошки, но ни один из них не настолько эффективен, как я думал, и требует нескольких ручных действий. Вот мой сценарий:
1) Я установил ОС на динамический виртуальный жесткий диск через Hyper-V или загрузился с VHD на Windows Server 2012 или Windows 8, допустим, это занимает ~ 30 ГБ. 2) Я использую VHD, добавляю много файлов, а затем удаляю их. Это расширяет VHD до ~ 100 ГБ.
Мне нужна плавная, простая и надежная операция, не требующая предварительной дефрагментации (если только это не одношаговая операция), которая восстановит все свободное место на виртуальной машине.
Мой опыт прошлых лет показывает, что дефрагментация, возможно, обнуление, а затем сжатие VHD не восстанавливает все пространство, и это довольно запутанная операция.
В качестве последнего варианта, могу ли я «клонировать» существующий динамический диск (с освобожденным пространством) на новый динамический VHD?
Я был бы еще более доволен, если бы весь процесс можно было написать с помощью PowerShell.
Создайте новый VHD, поместите на него новую файловую систему и скопируйте файлы из одного в другой. Это создаст максимально компактное представление.
И да, конечно, это можно сделать с помощью PowerShell. См. «New-vhd» и «mount-vhd».