In Hyper-V on Windows Server 2012 R2, the Quality of Service Management setting enables administrators to allocate storage IOPS where they're most needed. But this feature suffers from scalability issues. Microsoft reworked it in Windows Server 2016 to let administrators create Storage QoS policies and overcome problems when a large number of virtual machines share a storage device.
In Windows Server 2012 R2, Quality of Service Management lets admins allocate a minimum number of IOPS and can prevent IOPS overconsumption. However, it applies storage I/O limits based on virtual hard disks used, as shown in Figure 1. While this method can work for smaller organizations that don't have a large number of VMs, it becomes impractical to manage as the number of VMs increases.
With Hyper-V in Windows Server 2016, administrators can create Storage QoS policies on scale-out file servers; admins can then assign policies to virtual hard disks or VMs. There are two main benefits to assigning policies in this way.
First, Storage QoS policies allow end-to-end storage performance monitoring. Administrators can set I/O reservations -- or I/O limits -- and monitor Hyper-V and its underlying storage to ensure the policies are properly enforced. Second, Storage QoS allows for policy sharing -- admins can apply a single policy to multiple VMs or virtual hard disks. This allows storage bandwidth to be shared evenly among multiple virtual hard disks, which is particularly useful in multi-tenant environments where each tenant has been allocated a specific amount of storage I/O. It can also be useful in situations where multiple VMs are being collectively deployed as a service and need to receive comparable levels of storage performance.
Defining Storage QoS policies
There are two types of Storage QoS policies. Aggregate policies apply a single reservation or a single limit to a collection of virtual hard disks. This approach allows all virtual hard disks in the set to share a limited amount of storage bandwidth so the collection of virtual hard disks cannot exceed a specific bandwidth threshold.
A dedicated Storage QoS policy is applied on a per-virtual-hard-disk basis, so each virtual hard disk receives its own reservation and limit that functions independently of any other reservations or limits that exist.
Storage QoS heavily depends on the Windows Failover Clustering service. The administrator must configure the scale-out file server as a storage cluster. All servers in the cluster must run Windows Server 2016. In addition, a compute cluster based on Windows Server 2016 is also required, and at least one of the servers within the compute cluster must have the Hyper-V role installed.
How well do you know Windows Server 2012 R2 storage features?
Windows Server 2012 R2 included many important storage changes for virtualization. Take this quiz and see if you know what they are.
In addition, admins can only manage Storage QoS through PowerShell, which is different than Windows Server 2012 R2 Quality of Service Management policies. For example, you could create a policy by using the following command:
New-StorageQosPolicy –Name <policy name> -Policy type <dedicated or aggregated> -MinimumIops <minimum IOPS> -MaximumIops <maximum IOPS>
Each policy is assigned a policy ID, and a policy is applied to a VM by referencing the policy ID, such as:
Get-VM –Name <virtual machine name> | Get-VMHardDiskDrive | Set-VMHardDiskDrive –QoSPolicyID <policy ID number>
For additional information about the compute cluster requirements for Storage QoS, check out this Microsoft TechNet article.
How to monitor storage in Windows Server 2012 R2
Navigating Microsoft's software-defined storage option