I am hosting several virtual machines on a host running Hyper-V Server 2008 R2. The disks were originally provisioned on a different server (2008, not R2) about 16 months ago, and were migrated onto this server one year ago. Most guests are running Windows 7.
Recently I was comparing the VHD size to used space reported by the guest, and noticed that several machines had VHD files that were 50-100% larger than actually needed. So I decided to try compacting the VHD files to free up space on the host. I followed instructions I found on the internet, roughly as follows:
- Run CHKDSK in the guest machine
- Run a defrag in the guest machine (Windows built-in defrag)
- Shut down the guest
- Open "Edit Disk..." tool in Hyper-V Manager
- Select the VHD of interest and choose to compact it
The first time I tried this, it worked flawlessly and reduced the size of my VHD by about 50%. But for the disks of every other guest, I get this error message:
The server encountered an error trying to edit the virtual disk. 'The system failed to compact 'C:\example.vhd'. Error Code: The requested operation could not be completed due to a file system limitation
No guests have NTFS compression enabled. There are no snapshots of these disks. What else could be causing this error?
Edit: Bonus points for anybody who describes a solution to keep dynamic VHD sizes in check automatically.