Since moving to an SSD drive space is a limited resource. For several development tasks I am using a virtual machine whose disk image (dynamically allocated storage) has grown to approximately 45.5 GB. To free up some space quickly (relative term) I decided to shrink this particular disk image.
At the time of this writing the VirtualBox tool ‘modifyhd’ of VBoxManage only supports the disk format ‘VDI’.
!! Before continuing ensure you have a (verified) backup of any disk image to be shrunk.
Preparations within the virtual machine
For the best result make sure all of the disks/drives within the virtual machine have been defragmented.
Wipe out free space
Next step is to overwrite the free space with zero, actually wiping out the data (not just marking the blocks within the FAT tables as ‘free’). You can use the command line tool sdelete and run it on all drives within the virtual machine using the option -z.
sdelete -z c:
Shrinking the disk image
And the last step is to physically shrink the Virtual Disk Image using the tool VBoxManage using the following command
VBoxManage.exe modifyhd c:\path\to\thedisk.vdi --compact
D:\VirtualBox VMs\OHI_WIN7>dir Volume in drive D is Data Volume Serial Number is BC22-D10F Directory of D:\VirtualBox VMs\OHI_WIN7 25-07-2017 16:16 <DIR> . 25-07-2017 16:16 <DIR> .. 01-08-2017 10:14 <DIR> Logs 25-07-2017 16:16 10.849 OHI_WIN7.vbox 25-07-2017 12:30 10.849 OHI_WIN7.vbox-prev 01-08-2017 11:04 49.321.869.312 OHI_WIN7_disk1.vdi 25-07-2017 11:35 <DIR> Snapshots 3 File(s) 49.321.891.010 bytes 4 Dir(s) 29.253.611.520 bytes free
D:\VirtualBox VMs\OHI_WIN7>dir Volume in drive D is Data Volume Serial Number is BC22-D10F Directory of D:\VirtualBox VMs\OHI_WIN7 01-08-2017 11:32 <DIR> . 01-08-2017 11:32 <DIR> .. 01-08-2017 10:14 <DIR> Logs 01-08-2017 11:32 10.849 OHI_WIN7.vbox 25-07-2017 16:16 10.849 OHI_WIN7.vbox-prev 01-08-2017 12:29 42.115.006.464 OHI_WIN7_disk1.vdi 25-07-2017 11:35 <DIR> Snapshots 3 File(s) 42.115.028.162 bytes 4 Dir(s) 36.460.265.472 bytes free
The disk image went from 45.5 GB down to 39.2 GB in size