Для того, чтобы сжать виртуальный жесткий диск VirtualBox необходимо:
1) Заполнить нулями всё незанятое место в гостевой ОС GNU/Linux. Для этого я использую утилиту pv:
sudo apt install pv
Для автоматизации процесса я использую следующий скрипт. Он заполняет нулями свободное место, затем удаляет временный файл и выключает виртуальную машину:
#!/bin/sh
dd if=/dev/zero | pv | dd of=/bigemptyfile bs=4096k
sleep 5
rm /bigemptyfile
shutdown -h now
2) Затем уже в хостовой системе нужно перейти в каталог с файлами виртуальной машины и запустить в консоли
VBoxManage modifyhd ИМЯ_ВМ.vdi compact