Linux – Compact a VHD on a linux host

linuxvhdvirtualbox

On a Linux host (Linux Mint 18), how can I compact a VHD file ?

So far my search always returns solutions with Hyper-V or situations with a Linux guest on a Windows host, but have the inverse: a Windows guest running with VirtualBox on a Linux host.

Best Answer

I kind of feel stupid because I found an answer while trying to circumvent the usage of VHD files on Linux. Cloning the disk to the VDI format (after runing sdelete on the Windows guest) also shrinks it to the smallest size:

vboxmanage clonemedium INPUT.VHD OUTPUT.VDI --format VDI --variant standard

It also works from VHD to VHD

vboxmanage clonemedium INPUT.VHD OUTPUT.VDI --format VDI --variant standard

This solutions is not as efficient as "compacting" because you need extra storage to store a second copy of the virtual disk and after the process has finished you need to swap the files.