You can use Storage QoS in both Hyper-V and vSphere, but in Hyper-V, you implement it at the VHD level, while,...
in vSphere, you do so through Storage I/O Control.
One of the problems that has long plagued virtualized environments is the so-called noisy neighbor syndrome. The VMs running on a host server all share a common pool of physical hardware resources. If a VM consumes a disproportionate share of those resources, then it reduces the resources available for other VMs.
In most cases, excess resource consumption isn't a problem so long as whoever created the VM was mindful of resource management. For example, a VM configured to use a maximum of 8 GB of RAM isn't going to suddenly demand 16 GB of RAM. However, the same can't always be said for storage IOPS.
The essence of the noisy neighbor syndrome is that a VM consumes so many storage IOPS that the performance of neighboring VMs begins to suffer because their own IOPS needs can't be met. You can address this problem by using a feature called Storage Quality of Service (QoS).
Storage QoS enables you to limit the total number of IOPS a VM can generate. As an alternative, you might also reserve a specific number of IOPS so a VM's basic needs are always met.
Both Microsoft Hyper-V and VMware vSphere support Storage QoS, but they implement the feature in different ways.
Hyper-V Storage QoS
Microsoft implements Hyper-V's Storage QoS capabilities at the virtual hard disk (VHD) level. You can access these settings in Hyper-V Manager by right-clicking on a VM and then selecting the Settings command from the shortcut menu. This causes Hyper-V Manager to open the Settings window for the VM.
The next thing you must do is expand the VM's storage controller and then locate the VHD you wish to enable Storage QoS for. If you simply click on a VHD, then Hyper-V shows you basic settings, such as the VHD location. However, there's a plus icon just to the left of the listing for the VHD. Clicking on this icon reveals an Advanced Features container; some versions of Hyper-V call this container Quality of Service. This is where you find Storage QoS settings.
As you can see in Figure 1 below, the Advanced Features container includes a checkbox that you can use to enable what Microsoft refers to as Quality of Service management. When you select this checkbox, you enable Storage QoS for the selected VHD but not for other VHDs that are attached to the VM and not for the host server as a whole.
The Advanced Features tab enables you to set a minimum IOPS value to create an IOPS reservation, or you can set a maximum IOPS value to create an IOPS limit. However, you can't provide values for both settings simultaneously.
In a vSphere environment, the system implements Storage QoS through a feature called Storage I/O Control (SIOC). VMware supports SIOC for storage that's connected through Network File System, iSCSI, or Fibre Channel. However, you can't use raw device mapping. Also, VMware doesn't support SIOC for datastores that have multiple extents.
You must enable VMware SIOC at the datastore level before you can use the feature. To do so, open Web Client, and then navigate to your datastore. Click on the datastore, and then go to Manage > Settings. In Settings, select the General tab, and then click on the Edit button, shown in Figure 2. Finally, click on the option to enable VMware SIOC. As you can see in Figure 3, you can also set the percentage of peak throughput.
To enable Storage QoS for a VM -- or rather a VM's VHD -- right-click on the VM, and choose Edit Settings from the shortcut menu. Expand the Hard Disk container, and then click on the Limit IOPS option. As you can see in Figure 4 below, you have the ability to set an IOPS limit for the VM.
Storage QoS is just one way of managing virtual resources. Add this feature to your arsenal of tools and strategies to ensure your environment runs as smoothly as possible.