Converting Hyper-V VHDs
=======================
:author: Aaron Ball
:email: nullspoon@iohq.net



I recently was assigned the task of rebuilding our Team Foundation Server with
TFS 2010 for many reasons. One of those is because the old one has a VHD that
is consuming far more resources than it should be (it's a 100 gigabyte vhd and
only 8 gigabytes are in use). I seemed to recall somewhere that Hyper-V could
"compact" a virtual hard drive, but I couldn't remember where. After doing a
bit of searching around Hyper-V, I found what I needed. Here's a few facts
about this before getting started.

First, shrinking a hard drive only applies to Dynamically sizing disks.  Since
these do no shrink on their own (there's a lot of reasons why) but only grow,
they might need to be compacted later to free up host space.  It only reduces
the .vhd file size by shrinking the 'shell' (if you will) to take up the drive
space that is not being used by the guest OS.

In my situation, I was dealing with a drive that was not dynamically sizing but
was static. If the vhd is static, the Compact button will not show up when you
go to edit the drive.

In my case, I did not have to compact the drive. As I said, a drive cannot be
compacted unless it is dynamic. Since mine was static, I converted it to
dynamic to regain the compacting functionality but because of the way the
conversion process works, it automatically 'compacts' the .vhd. My original
static .vhd was 100 gigabytes. The output was 15.5 gigabytes.

Though I did not have to compact my .vhd because the conversion process did it
for me, I'm going to put the instructions on how to compact the .vhd anyways.

For starters, the virtual machine that the hard drive is attached to must be
turned off. Once the server is offline, from within the Hyper-V Manager (it's
an mmc snap-in) go to the virtual machine's properties (right click the machine
and select properties). Select the drive you want to shrink on the left panel
that lists the various devices attached to the virtual machine. After selecting
the drive, on the right panel, select Edit. This will bring up a window that
tells you what editing a drive does and gives you the option to not show that
screen again. Click Next. From here you should have three options (unless the
.vhd is static). Select Compact and click Next. Finally, click Finish and
Hyper-V Manager will shrink the .vhd as much as it can.



Category:Microsoft
Category:Hyper-V


// vim: set syntax=asciidoc:
