Workloads need IO resources to operate correctly and with good response in an information chain. No performance is many unhappy users and business processes grinding to a halt.
IO can be networking and storage in this case. As networking IO mostly is less of a problem (but the main line goes for networking IO also), main focus of this blog post is storage IO.
In my opinion it is important to handle or reduce the IO closest to the source before letting it get down to other infrastructure components. The effect should be that the IO downstream can be handled by a smaller simpler storage device or preferably none.
The first side effect of this is that it cuts in the complexity of the infrastructure, costs of handling IO at the storage layer and simplifying project tasks as they won’t need a over-tasked storage engineer or wait for parts to come in (and take the thing partly down and figuring that controllers where not failover tested that much). To put it simple, cuts cost and time.
The second side effect of this is that it improve VM to host consolidation ratio’s. Depending on the sort of VM workload this can be an advantage. With virtual desktops (VD’s) as they will be part of much to same IO workloads (Windows 7 images) to effectiveness of some of the host based solutions will increase.
Most important (unfortunately not seen that often) is knowing your organizations workloads and their IO requirements. VDI is commonly write intensive so trying to reducing read isn’t going to give that much and your storage will still be hit hard. Other application parts are more read heavier. Etc.
What are our options that I have come across?
- Reduce guest IO footprint – OS. Optimize your guest OS so that it needs less CPU, memory and IO. Less to a certain amount that is. If the workload is letting your OS swap to disk because of low memory, IO on the storage will be heavier then sizing the memory to include the workload (and stop swapping). Know the correct sizing of your organizations image. Optimization of Windows can be done via the several optimization guides available (eg. Windows 7 via VMware http://www.vmware.com/files/pdf/VMware-View-OptimizationGuideWindows7-EN.pdf or Citrix http://support.citrix.com/servlet/KbServlet/download/25161-102-648285/XD%20-%20Windows%207%20Optimization%20Guide.pdf) or with tools like VMware OS Optimization Tool Fling http://labs.vmware.com/flings/vmware-os-optimization-tool)
- Reducing guest IO footprint – Virus protection. Moving the virus protection from the guest to the Hypervisor layer by using McAfee MOVE or Trendmicro Deepsecurity. These products use a hosts based virtual appliance to plug directly to the hosts hypervisor (by using vShield for example). Seriously reducing CPU cycles, memory consumption and storage IO coming from the guest.
- Reducing VM IO by offloading swap. Benefits of offloading swap files to host local (flash) storage is the reduction of the space footprint and to offload read and write IO’s to shared storage on to local storage (which in turn must be able to handle the amount of IO, preferably via SSD).
- Reducing VD storage requirements by using composer linked clones or PVS vdisks. With View Composer you create desktop images that share virtual disks with a base image, so you can reduce the required storage capacity.
View Composer uses a base image, or parent virtual machine, and creates a pool of up to 1,000 linked-clone virtual machines. Each linked clone acts like an independent desktop, yet the linked clone requires significantly less storage. When placing the clones disks on local accelarated storage even more response can be offered to the desktop.
- Host caching and deduplication. Several so called accelerators are available to cache IO on flash or RAM, and are able to do inline data deduplication. They work at the hypervisor level by introducing a virtual appliance or hypervisor module, which can be clustered for fault tolerance. These solutions give your workloads more IOPS at lower latency (milli to micro). They can be shared storage backed, but with lower requirements and mainly for capacity. I’m thinking about Atantis ILIO, Infinio and PernixData. Cost effective solutions for better responses.
- IO handling at host cluster – Virtual SAN or VSAN. Radical simple storage from pools (cluster) of vSphere hosts. VSAN uses flash disks (SSD) as a read cache and write buffer. The read cache keeps a list of commonly accessed disk blocks to reduce I/O read latency in the event of a cache hit (that is, the disk block is in cache). The write cache behaves as a non-volatile write buffer, reducing latency for write operations as well.
In the event of a host failure a replicated copy of cache, as well as the replicated disk data are available on one or more VSAN cluster hosts. See more at: http://www.vmware.com/nl/products/virtual-san/features.html#sthash.pLz7NArU.dpuf. Unfortuanally in Beta, so not production worthy yet.
- IO accelerator cards – FusionIO or HP Accelarator cards. Accelerating flash with PCI Express Cards. Integrates with servers at the system bus and kernel level. Lot’s of IO performance with minimal power consumption. Gives more IO then SSD. Great for large data centers. Costly solutions but offers very much IOPS at the host level.
- (Hyper)converged architectures. All your Infrastructure or data center resources in a box with a single management layer. No need for complexity. Easily scalable (it is just like Lego with those blocks), great for starting small and grow incrementally when needed. Includes storage features (depending on system that is) such as flash acceleration on several layers (SSD, PCIe and such), deduplication, compression and replication all at the hosts/block level. Thinking about Nutanix or SimpliVity here.
Of course there will be other solutions out there. Like written before, these are just to ones I have come across. Know of some that are certainly be bound to be in this post, drop a comment and I will take a peek to include them.
– Happy reducing IO @ the host.