Compact a VirtualBox Windows Guest on Ubuntu Linux
I use VirtualBox to run Windows XP as a virtual machine within Ubuntu Linux and periodically like to compact the virtual drive (VDI) file.
Being a bit boneheaded, every time I do this, I spend ten minutes searching for instructions, so I thought I’d post them here both for myself, and for anyone else it may help.
Steps to Compact a VirtualBox WinXP Guest in Linux
- While in your Windows XP virtual machine, download the sdelete program and save it to your c: drive in Windows. This program allows you to ‘zero out’ the free space on the drive by writing zeros to the unused sectors.
- In WinXP go to Start/Run and type ‘cmd‘ to open a command prompt.
- Change directory (cd) to the location where you saved the sdelete.exe file.
- Enter ’sdelete -c c:/’ to execute the program.
- Once sdelete is finished, shut down the Windows virtual machine.
- Open a terminal in Linux and cd to the directory that contains the VDI you’d like to compact.
- Type ‘VBoxManage modifyvdi xxxxx.vdi’ compact where xxxxx.vdi represents the filename of the virtual disk you’d like to compact.
- After the command is runs, your VDI will be reduced in size.
There’s a ton of information on Sun’s VirtualBox site and forum. Here’s a forum thread that I found especially helpful.










November 11th, 2008 at 23:30
Interesting–I haven’t thought of ever compacting my vdi files. I think I’ll give this a try now that I see my HD space ever dwindling (mostly due to VirtualBox in the first place!)
Thanks for posting the instructions
November 12th, 2008 at 09:00
No problem. I ran it yesterday on my main WinXP virtual machine and the VDI went from 8.3 to 7GB. Let me know how it works for you.
November 19th, 2008 at 02:57
Ah storage space is like a cupboard, you can get in a lot there but never enough and the room is cluttered!