VirtualBox is a Net Reliant favorite when it comes to virtualization. It is a professional, enterprise grade solution that runs on Windows, Linux, Macintosh, and Solaris hosts.
VirtualBox allows for flexible storage management by allowing for the creation of dynamically allocated guest images.
Most users go for the dynamically expanding images in VirtualBox as they do not want to limit themselves to a small virtual disk size and at the same time do not want to waste disk space on their host while the guest doesn't actually need it.
Although these images will initially be very small and occupy minimal storage space, over time the images will grow. This is due to the image expanding every time a disk sector (virtual) is written to for the first time.
To help reduce excess disk usage, VirtualBox provides a mechanism for compacting dynamically allocated guest images. Below are the steps to follow if your guest operating system is Linux:
Step 1: Start the Linux Virtual Machine
Start the Linux Virtual Machine and log in with administrative rights.
Step 2: Clean any free disk space
The most effective way to clean free disk space on a Linux drive is to use the Linux dd utility which is a bit-stream duplicator. Open up a terminal window and type the following command:
dd if=/dev/zero of=zerofillfile bs=1M
This command will zero-fill any free disk space on the virtual Linux drive.
Once the dd has completed, you will see a message in your terminal window indicating that there is no space left on the device:
dd: writing 'zerofillfile': No space left on device
You can now remove zerofillfile using the Linux rm utility:
Step 3: Shutdown the Linux Virtual Machine
End your session and shutdown the Linux Virtual Machine.
Step 4: Compact the Linux guest image
To compact the Linux guest image, use the VirtualBox VBoxManage utility. Assuming a Windows host, use the following command at the DOS prompt:
VBoxManage modifyhd --compact "[drive]:\[path_to_image_file]\[name_of_image_file].vdi"
Ensure that you replace the items in square brackets with your parameters.
If your Windows host complains that VBoxManage cannot be found or is an invalid command, you may need to explicitly specify the path to the VirtualBox executables. So a complete example for compacting a Linux guest image at the DOS prompt is as follows:
C:\> path C:\Program Files\Oracle\VirtualBox
C:\> VBoxManage modifyhd --compact "C:\netreliant_VMs\linux_001.vdi"
Once the VirtualBox VBoxManage utility is running you will see progress indicators in 10% increments starting from 0% to 100%. And once the process is complete, you should have a smaller disk image file.