Расскажу о не совсем удачном опыте использования образов дисков в формате VHD/VHDX для хранения данных компактно и одним куском.
Началось всё с того, что надо было куда-то запихать довольно большое количество достаточно мелких файлов так, чтобы они не лежали на диске россыпью, но в тоже время были доступны по первому зову. Архив не подходил, а вот VHD-образ как раз должен помочь решить задачу, потому что все средства для работы с ним есть в системе, ничего дополнительно ставить не надо.
С помощью оснастки "Управление дисками" создал динамический образ (Действие \ Создать виртуальный жёсткий диск) по размеру на пару гигабайт больше размера данных, которые хотел в него поместить. После создания образ подключился автоматически и стал виден в системе как ещё один жёсткий диск. После инициализации я создал на нем один раздел и отформатировал его в NTFS со сжатием, чтобы данные ещё меньше места заняли.
И вот на этом месте радость заканчивается.
После перемещения файлов я обнаружил, что размер образа стал заметно больше данных, которые в нем хранятся, хотя в свойствах файлов видно, что занимают они в сжатом виде меньше места.
Проблема оказалась в том, что при записи со сжатием файлы довольно сильно фрагментируются, что и приводит к разрастанию образа.
Отступать уже поздно, надо идти в своём безумии до конца.
С помощью программы Auslogics Disk Defrag (не реклама, мне интерфейс с квадратиками понравился) я дефрагментировал виртуальный диск, уже не обращая внимание на разрастание образа.
Теперь осталось "занулить" свободное место с помощью SDelete:
sdelete -z диск:
И сжать сам образ с помощью DiskPart:
select vdisk file="путь\к\образу\диска.vhd" compact vdisk
Теперь размер образа примерно соответствовал размеру в строке "На диске:" в свойствах хранящихся на нем файлов.