Vboxmanage/compact
You have to do the following steps:
- Run defrag in the guest (Windows only)
- Nullify free space:
With a Linux Guest run this:
dd if=/dev/zero of=/var/tmp/bigemptyfile bs=4096k rm /var/tmp/bigemptyfile
or
telinit 1 mount -o remount,ro /dev/sda1 zerofree -v /dev/sda1
With a Windows Guest
- download SDelete from Sysinternals
- and run this:
sdelete.exe c: -z
replace C: with the drive letter of the VDI
Shutdown the guest VM
- Now run VBoxManage's modifymedium command with the
--compact
option:
With a Linux Host run this:
vboxmanage modifymedium --compact /path/to/thedisk.vdi
With a Windows Host run this:
VBoxManage.exe modifymedium --compact c:\path\to\thedisk.vdi
With a Mac Host run this:
VBoxManage modifymedium --compact /path/to/thedisk.vdi
VBoxManage is located here: /Applications/VirtualBox.app/Contents/MacOS/VBoxManage
This reduces the vdi size.
# vboxmanage modifymedium --compact windows10.vdi 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%