Как сжать чрезмерно увеличившийся виртуальный диск VirtualBox с Debian

У виртуальных динамических дисков VDI, созданных в программе VirtualBox есть одна особенность, которая при определённых обстоятельствах может доставить пользователю некоторые неудобства. Динамические виртуальные диски имеют свойство расширяться, но если затем вы удалите с такого диска все файлы, его размер останется прежним. Таким образом виртуальная машина может раздуться до весьма значительных размеров, заняв на физическом носителе неоправданно много места.

Чтобы сжать виртуальный диск, необходимо использовать ключ — compact.

Но перед тем как приступать к сжатию, нужно удалить с виртуального диска все ненужные файлы, а затем выполнить его зачистку с помощью утилиты zerofree

Для начала нужно установить утилиту

# apt-get install zerofree

Если в CentOS 7 пакет не найден, добавляем репозиторий:

# yum install epel-release

и далее снова пробуем установить пакет zerofree командой выше.

 

После этого необходимо перезагрузить виртуальную систему, в дополнительных опциях загрузки выбрав recovery mode - в Debian/Ubuntu

В CentOS - переходим в режим восстановления командой:

# systemctl rescue

после загрузки и ввода пароля для root можем посмотреть какие разделы смонтировались

# mount | grep "sda"

Предположим, что нужный нам раздел - /dev/sda1

Далее вводим команды

# echo "u" > /proc/sysrq-trigger
# mount /dev/mapper / -o remount,ro
# zerofree -v /dev/sda1

После этого начнется очистка, ждем пока процесс не завершится на 100%

Теперь выключаем систему

# shutdown -h now

Очистка раздела завершена, можем приступать к сжатию виртуального диска

cd C:\Program Files\Oracle\VirtualBox
VboxManage.exe modifyhd "D:\path\to\dir\your_disk.vdi" --compact

Непосредственно изменение размера произойдет в конце операции, не нужно пугаться когда бегут проценты 0%...10%...20%...30%...40%...... а размер файла не уменьшается