Virtualbox : Shrink VM disk


So you've finally succeeded running a windows virtual machine (VM) on your desktop. You play around the vm; copying files, installing & deleting applications and so on. After a while, you found out that your vm is using let say 20gb out of 100gb (which you set during creating the vm) disk but your local machine (host) report that you have used up 50gb. So how can you claim back that extra 30gb in your host ?



Briefly you have to do these :
1) (VM) Defrag your vm.
2) (VM) Zero-rise your vm disk clear space.
3) (Host) Compact your vm's vdi/disk.

1) (VM) Defrag your vm.
- Start your windows VM & defrag your virtual disk using your choice of defragment utility. This is to rearrange all your files back & to improve your vm performance.

2) (VM) Zero-rise your vm disk clear space.
- Use sdelete to zero-rise those clean space. This has something to do with high-watermark thing
   eg. you have use 10gb space & then you copy in a 4gb file = 14gb. Then you delete that 4gb file, so your vm will report you have 10gb back right ? Yes, but your host will not recognize that & still hold on to that 14gb usage of disk.
- Get the sdelete utility & extract it to a folder eg. C:\Apps\sdelete
- To use sdelete, open up a command prompt (Start => Run => cmd) . 
- Go to the folder where you extract the sdelete utility. eg cd apps\sdelete
- Then run this 'sdelete -z' without the quote & let the utility runs till finish. 
- To know what else sdelete can do, just run 'sdelete' & it will show what other options are available.
- After the sdelete complete, shutdown your vm. So the vm part is finish.



3) (Host) Compact your vm's vdi/disk.
- Take note of your vdi size, you can find the location in your vm settings in the virtualbox.
- Close your Virtualbox & starts the command prompt in your host or local pc.
- Go to your Virtualbox installation folder. eg. cd Program Files\Oracle\VirtualBox
- Type in 'vboxmanage list hdds', this will list out all your vdi or virtual disk image. Take not of the UUID or Location info.
- Lastly, to shrink that vdi type 'vboxmanage modifyhd <uuid/location> --compact'.
     eg. vboxmanage modifyhd 9b1ea8fb-b72b-49db-a7b8-9bfdbfb3664e --compact or
          vboxmanage modifyhd  < full path to your vdi file > --compact 
- And then just wait for the vdi to be automagically shrink like picture below.





Lastly, check again your vdi size, it should be almost the same size as it in you virtual machine.
Hope it works for you as it works for me. Happy trying.

Comments

Popular Posts