Если я создам расширяемый виртуальный жесткий диск (VHD) с максимальным размером 50 ГБ, заполню его файлами 48 ГБ, а затем уменьшу это количество до 25 ГБ, что будет эффективный и уверенный способ уменьшить размер VHD до 25 ГБ или около того.
Я бы хотел сделать это без необходимости копировать содержимое виртуального жесткого диска на новый или без необходимости иметь вдвое больший объем доступного пространства по какой-либо причине.
Я знаю, что VHD COMPACT diskpart не восстанавливает все пространство.
Не уверен, что вы используете Windows 7 Virtual PC или Windows Server 2008 R2 Hyper-V или Windows Server 2012 Hyper-V, но я рассмотрю каждый сценарий, чтобы быть в безопасности.
Если вы используете Windows 7, вам нужно будет смонтировать precompactor.iso (находится в Program Files (x86) \ Windows Virtual PC \ Integration Components) и запустить precompact.exe из смонтированного ISO. После этого вы можете выключить виртуальную машину и отредактировать VHD, чтобы уменьшить его размер. Это должно уменьшить размер до 25 ГБ фактически используемого пространства.
Если вы используете Windows Server 2008 или 2008 R2 Hyper-V, я бы порекомендовал вам загрузить файл precompactor.iso со своего компьютера с Windows 7 и следовать тем же инструкциям, которые я дал на шаге 1 для Windows 7.
Если вы используете Windows Server 2012 Hyper-V, тогда конвертируйте VHD в VHDX, и Windows Server 2012 Hyper-V автоматически уменьшит размер файла в зависимости от фактического использования.
Если вы ищете абсолютную экономию пространства, создайте новый VHD и скопируйте файлы из старого в новый, желательно с включенным сжатием файлов в файловой системе на целевом VHD. Я знаю, что вы исключили это как потенциальный ответ. Но я упоминаю об этом, потому что это наиболее экономичный вариант.
Вы можете приблизиться к этому уровню эффективности, дефрагментируя файловую систему на VHD перед сжатием. Эти две операции, вместе взятые, в конечном итоге займут намного больше времени, чем создание нового виртуального жесткого диска, поскольку будет создано гораздо больше операций ввода-вывода и, возможно, в целом будет больше копий данных.