09 сентября 2017

Образы VHD/VHDX и хранение данных.



Расскажу о не совсем удачном опыте использования образов дисков в формате VHD/VHDX для хранения данных компактно и одним куском.

Началось всё с того, что надо было куда-то запихать довольно большое количество достаточно мелких файлов так, чтобы они не лежали на диске россыпью, но в тоже время были доступны по первому зову. Архив не подходил, а вот VHD-образ как раз должен помочь решить задачу, потому что все средства для работы с ним есть в системе, ничего дополнительно ставить не надо.

С помощью оснастки "Управление дисками" создал динамический образ (Действие \ Создать виртуальный жёсткий диск) по размеру на пару гигабайт больше размера данных, которые хотел в него поместить. После создания образ подключился автоматически и стал виден в системе как ещё один жёсткий диск. После инициализации я создал на нем один раздел и отформатировал его в NTFS со сжатием, чтобы данные ещё меньше места заняли.

И вот на этом месте радость заканчивается.

После перемещения файлов я обнаружил, что размер образа стал заметно больше данных, которые в нем хранятся, хотя в свойствах файлов видно, что занимают они в сжатом виде меньше места.

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

Отступать уже поздно, надо идти в своём безумии до конца.

С помощью программы Auslogics Disk Defrag (не реклама, мне интерфейс с квадратиками понравился) я дефрагментировал виртуальный диск, уже не обращая внимание на разрастание образа.

Теперь осталось "занулить" свободное место с помощью SDelete:

sdelete -z диск:

И сжать сам образ с помощью DiskPart:

select vdisk file="путь\к\образу\диска.vhd"
compact vdisk

Теперь размер образа примерно соответствовал размеру в строке "На диске:" в свойствах хранящихся на нем файлов.