By now you have probably heard about the new storage tiering feature in Windows Server 2012 R2. But there's another new storage feature that is just as significant but has received a lot less press: Storage QoS.
In a server virtualization environment, a host server's physical resources are shared among the parent partition (the host operating system) and the various virtual machines (VMs) running on the host. In most cases it is possible to limit a virtual machine's hardware use and prevent it from consuming resources that are needed by other VMs running on the host. For example, you can allocate a maximum amount of memory to a VM, which effectively caps the VM's physical memory usage. Likewise, you can allocate a specific number of CPU cores to a VM, which limits its CPU consumption.
The one resource that Microsoft Hyper-V has never allowed administrators to directly limit is storage I/O. In fact, administrators sometimes allocate physical logical unit numbers (LUNs) directly to a VM (as a SCSI pass-through disk or through virtual Fibre Channel) simply as a way of isolating the VM's disk I/O so that it does not impact other VMs.
Control over disk I/O will be much easier through the Hyper-V Storage QoS feature in Windows Server 2012 R2 that allows you to put a cap on IOPS. As an alternative, administrators can specify a minimum level for IOPS, which effectively acts as an IOPS reservation.
Storage QoS is implemented on a per-virtual hard disk (VHD) basis. That means it is possible to set limits where they are needed while leaving other VHDs alone, even in situations when a single VM is connected to multiple VHDs.
Although it is easy to look at the Storage QoS feature solely as a performance feature, it can also help administrators make more efficient use of storage capacity. Suppose, for example, that a particular VHDX file needed 10,000 IOPS. In the past, the solution would have likely been to find 10 drives that could deliver 1,000 IOPS each and combine those drives into an array that could deliver the required 10,000 IOPS to the VM.
Now suppose that each of the disks in the array was 1 TB in size, effectively yielding a 10 TB array. If the database that resides on the array is only 2 TB in size, then 8 TB of storage are being wasted so that the array can deliver the required level of performance. Storage QoS will make it possible to use storage more efficiently by allowing administrators to carve up capacity on an as-needed basis, while still guaranteeing performance levels.