Maybe you know it – virtual linux machine is used for anything (installing Oracle for example) – and its size says something about 12GB /df -h/ – what a surprise that your host OS is allocating around 25GB and still wants more, more, MORE!!! 🙂
There are two common ways how to zero-ing unused space: use dd utility or specialized one – as zerofree. Inmortal dd is slow – zerofree is intelligent = I have just ONE choice 🙂 Main point = target file system should be mount as read only.
1st phase – guest
As I´m lazy and create default layout still the same (one 2TB partition + swap), it looks like a problem to mount it as read only. SystemRescueCd is a free live distribution where zerofree is located. After booting this distribution from virtual machine (CD mount through menu), you will just need to set your device id:
And that´s all 🙂 Just wait for finishing. It can take demanding time according your disk usage and size of disk. In my environment with around 12GB used, 2TB disk it took around 2 hours to complete it.
2nd phase – host
If you are using vmdk, not vdi, you have to convert this file /compact is functional only for .vdi/. In my case:
VBoxManage clonehd –format VDI U:\vmware\Ora65_Ora1124\Ora65-clean-disk1.vmdk U:\vmware\Ora65_Ora1124\Oracle11204.vdi
Then you really perform compacting virtual machine on host side:
VBoxManage.exe modifyhd U:\vmware\Ora65_Ora1124\Oracle11204.vdi compact