What are the challenges associated with resizing virtual hard disks?
When Microsoft introduced the VHDX virtual hard disk format, the company offered up a number of improvements over the legacy VHD-based virtual hard disks. One of the big improvements was the ability to more easily resize virtual hard disks. In Windows Server 2012 R2, Microsoft is further enhancing this capability by allowing VHDX files to be resized while the virtual machine is running. This capability does sound great, but there are some caveats you need to know about.
The first thing you have to understand about virtual hard disk resizing is that it may not necessarily accomplish your goals. For example, suppose you have a virtual machine (VM) with a 1 TB virtual hard disk. Let’s also say you need to resize this virtual hard disk to 2 TB. Assuming the virtual hard disk is VHDX-based, you can simply use the Edit Virtual Hard Disk Wizard to resize the virtual hard disk.
But when you restart the VM, you won't immediately notice the newly available space because the Edit Virtual Hard Disk Wizard only resizes the virtual disk. It does not resize volumes or partitions that exist within the virtual disk. To do that, you will have to use the Disk Management Console or some similar tool within the VM. Depending upon how the VM is configured, this could be a simple process or you may have to completely delete and then re-create the partition, which means backing up and restoring all the data residing on that partition.
This is, by far, the biggest caveat associated with resizing virtual hard disks, but there is another one that you need to be aware of. In the case of Windows Server 2012 R2, online virtual disk resizing only works if the virtual hard disk is connected to a SCSI controller (though it doesn’t have to be a physical SCSI controller). This can be problematic for legacy VMs because previous versions of Hyper-V automatically configured virtual hard disks to use IDE controllers instead of SCSI controllers. This problem should get better with time, however, because Generation 2 VMs (which are another new feature of Windows Server 2012 R2) use SCSI controllers by default.
This was first published in August 2013