21 ноября 2014

Сжатие образов HDD VirtualBox.



Сколько уже версий прошло, а графического интерфейса для утилиты VBoxManage я так и не наблюдаю в составе Virtual Box, а эта программка умеет довольно много в сравнении с графическим менеджером виртуальных машин. И кроме всего прочего умеет сжимать и преобразовывать образы жестких дисков. Я расскажу, как довольно эффективно можно уменьшить место занимаемое файлом-образом.


Основной проблемой при сжатии образов является мусор на диске в областях, которые помечены как свободные. Алгоритм сжатия образа эти места не трогает. Таким образом, удаление файлов и последующее сжатие образа приравнивается к простой бесполезной трате времени.
Вывод: надо чистить еще и свободное место на диске.
Для этого надо запустить виртуальную машину и запустить в ней процедуру очистки свободного места. Подобные утилиты есть под Windows и под Linux.
Для Windows есть маленькая утилита SDelete от Марка Руссиновича. Найти ей можно прямо на сайте Microsoft по адресу http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx
Для её работы надо запустить командную строку с правами администратора и дать команду:

sdelete -z диск:

И немного подождать. Утилита забьет нулями свободное место на указанном диске.
Для Linux есть пакет secure-delete, в который входит программа sfill. Запустить стирание можно так:

sudo sfill -fz mountpoint

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

vboxmanage modifyhd образ_диска.vdi --compact

Если до этого на диске файлы часто создавались и удалялись, то образ должен довольно хорошо сжаться. Но работать сжатие будет скорее всего только для формата VDI.