<p>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.</p>
<p>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:</p>
<ul>
<li>
<p>Run CHKDSK in the guest machine</p>
</li>
<li>
<p>Run a defrag in the guest machine (Windows built-in defrag)</p>
</li>
<li>
<p>Shut down the guest</p>
</li>
<li>
<p>Open “Edit Disk…” tool in Hyper-V Manager</p>
</li>
<li>
<p>Select the VHD of interest and choose to compact it</p>
</li>
</ul>
<p>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:</p>
<pre><code class="lang-auto">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
</code></pre>
<p>No guests have NTFS compression enabled. There are no snapshots of these disks. What else could be causing this error?</p>
<p><em>Edit</em>: Bonus points for anybody who describes a solution to keep dynamic VHD sizes in check automatically.</p>