What is the Hyper-V VHD Set format and how is it optimized?

VHD File Set -- a file format new to Windows Server 2016 -- is helpful for IT administrators using guest clusters. Get up to speed on the basics and learn how to optimize it.

Hyper-V VHD Set, introduced in Windows Server 2016, is a virtual disk model you can use as a shared disk for guest clusters and clustering between VMs.

Hyper-V VHD Set supports all standard features, including online resizing and Hyper-V replica support; you can even include it in application-consistent checkpoints.

To create Hyper-V VHD Set files, you can use either Hyper-V Manager or PowerShell.

In Hyper-V Manager, navigate to Action, select New and then click Hard Disk. In the Choose Disk Format wizard, select VHD Set and follow the onscreen steps.

To create Hyper-V VHD Set files using PowerShell, execute the following PowerShell commands:

New-VHD -Path C:\Temp\ClusterWitnessDisk.VHDS -SizeBytes 1GB -Dynamic

New-VHD -Path C:\Temp\ClusterDataDisk.VHDS -SizeBytes 10GB -Dynamic

The New-VHD command line might take a few minutes to complete based on the size of VHDS file, as shown in Figure 1 below.

The New-VHD PowerShell command
Figure 1. Creating VHDS files using the New-VHD PowerShell command

You need to specify the VHDS extension when you create VHD Set files with PowerShell.

Once you create the Hyper-V VHD Set files, you can attach them to the VMs that will participate in the cluster using the PowerShell commands below:

Add-VMHardDiskDrive -VMName "ClusterVM1" -ControllerNumber 0 -ControllerLocation 1 -Path C:\Temp\ClusterWitnessDisk.VHDS -ShareVirtualDisk

Add-VMHardDiskDrive -VMName "ClusterVM2" -ControllerNumber 0 -ControllerLocation 1 -Path C:\Temp\ClusterWitnessDisk.VHDS –ShareVirtualDisk

Optimize Hyper-V VHD Set files with PowerShell

Similar to VHD and VHDX files, you can optimize Hyper-V VHD Set files. You will, however, need to use the Optimize-VHDSet PowerShell command instead of the Optimize-VHD cmdlet that you use for VHD and VHDX files.

To optimize a VHD Set file, execute the following PowerShell command:

Optimize-VHDSet -Path C:\Temp\ClusterDataDisk.VHDS

When you execute the command above, the process compacts the Hyper-V VHD Set file by reclaiming unused blocks and rearranging the blocks so information stored in the VHD Set can be read faster. This improves the performance of the VHD Set file.

You can also resize the VHD Set files by executing the following PowerShell command:

Resize-VHD -Path C:\Temp\ClusterDataDisk.VHDS -SizeBytes 30GB

You can only use Hyper-V VHD Set files for guest clustering. VHD Set files aren't meant for general VM deployments.

Dig Deeper on IT systems management and monitoring

Software Quality
App Architecture
Cloud Computing
Data Center