Со временем файлы динамичиских виртуальных дисков *.vdi увеличиваются в размерах. Даже если вы удаляете данные в гостевых ОС, динамические диски не уменьшаются в размерах автоматически. Для уменьшения их размера в VirtualBox начиная с версии 2.2 используется команда VboxManager modifyhd <uuid>|<filename> --compact. Где <uuid> - код, а <filename> - файл виртуального диска vdi. Данная команда удаляет свободные блоки на диски которые заполнены нулями. Если мы удаляем файлы в гостевой ОС то эти блоки содержат разный «мусор», поэтому мы их должны заполнить нулями. Для гостевых машин windows можно использовать утилиту sdelete(с опцией -c, а в последней версии -z (читайте справку)), а для linux возможно несколько вариантов:
использовать команду: dd if=/dev/zero of=/tmp/zerofile; rm /tmp/zerofile. Данная операция создает файл размером с пустое пространство на виртуальном диске и затем его удаляет. Данный процесс может занять довольно много времени.
использовать утилиту zerofile
Эти действия необходимо выполнять в гостевой ОС. После, чего выключаем гостевую виртуальную машину и выполняем команду в терминале (консоле) хоста:
VBoxManage modifyhd <файл>.vdi --compact .
Учтите что при выполнении первого шага — обнуления блоков, размер виртуального динамического «диска» вырастает до максимального размера. Убедитесь, что у вас достаточно места для данной операции — иначе гостевая ОС может «зависнуть» и данные в ней могут быть повреждены.
PS: Важно! Данная возможность является экспериментальной в версии 2.2, поэтому рекомендуется создать резервную копию файла vdi перед первым использованием.