Сжатие виртуальных дисков VirtualBox (11.02.2017). Печать
2017 - Февраль
11.02.2017 09:49
Save & Share
VirtualBox - бесплатный аналог VMware Workstation. Есть и плюсы, и минусы; но основные фишки - видеозапись экрана виртуальной машины в файл малого размера, интуитивно понятный интерфейс. Однако встала проблема: непонятен алгоритм сжатия виртуальных жестких дисков. В VMware сначала это делалось из консоли, потом они сделали кнопку - возможно, создатели VirtualBox еще не поняли, что им тоже нужно сделать кнопку.

Из консоли получилось сжать диск, однако данный способ был неудобен и неоптимален, поэтому был придуман оптимальный:
- в гостевой ОС запускается утилита SDelete для каждого логического диска: зануляет все свободное пространство виртуального диска. В системах NTFS может наблюдаться глюк: якобы 100% выполнено быстро, но программа "висит". Она не висит, работает: даже на RAM-диске скорость зануления займет длительное время, т.к. скорость зависит не от носителя, а от процессора. Параметры: "-c -z C:";
- в VirtualBox через "Файл->Менеджер виртуальных носителей" нужно скопировать зануленный виртуальный диск. При копировании автоматически произойдет его сжатие. Может потребоваться освободить диск соответствующей кнопкой;
- удалить файл исходного виртуального диска и подключить к машине сжатый виртуальный диск.

(добавлено 15.02.2017) При примерно одних и тех же данных на виртуальном жестком диске: сжатый архиватором виртуальный диск VMware весит чуть или много больше, чем виртуальный диск VirtualBox.

(добавлено 05.02.2019) В Linux дефрагментация и зануление свободного пространства проводятся командами:
- "fsck -n": оценка фрагментации (в конце "0.1% non-contiguous"). Фрагментация ext3 и ext4 ничтожна в сравнении с NTFS и FAT;
- "e4defrag -c /dev/sda1" (сторонний дефрагментатор), где sda1 - раздел с дефрагментируемой файловой системой. Может требовать sudo или su;
- "fsck -f" - полное исправление ошибок файловой системы (необходимо);
- "dd if=/dev/zero of=zerofill" - очистка свободного пространства. При этом нужно так и писать: /dev/zero. Извиняюсь за этот треш: поверил непроверенным данным (надеюсь, никто не пострадал). В итоге, отечественное ПО для зануления написал + под линукс будет скоро.

(добавлено 11.08.2022) Еще один способ занулить место (но только на виртуальном диске): архивировать Acronis, создать новый виртуальный диск, восстановиться на него, заменить старый виртуальный диск новым. Но в этом случае 2 проблемы:
- часть Linux не способны архивироваться без посекторного копирования или без свободного пространства (например, OpenSuse v.12.1 - требует и то, и то);
- иногда важно сохранить уникальный идентификатор виртуального диска.
Обновлено ( 12.08.2022 20:04 )