This is the third and final tech preview of storage features which were shown at VMworld 2012. Already we have looked at two tech previews – Distributed Storage and Virtual Volumes (VVOLs). This next feature is vFlash or Virtual Flash, and will look at a project underway here at VMware to integrate local flash devices with vSphere. This will make significant performance improvements and reduce I/O latency for many workloads running in the Virtual Machine.

To date, VMware has done very little around flash. We only have the smartd introduced in vSphere 5.1 to monitor Solid State Drives (SSD) attributes and the swap to SSD feature. Those of you who have read the technical preview article on Distributed Storage will have read about SSD being used as a cache (for both read and write I/O). This post discusses an additional project called vFlash, the purpose of which is to integrate vSphere with local flash devices. What we are looking to do is to enable a new tier of storage for your Virtual Machines. For those of you unfamiliar with flash technology, I recently wrote a blog article on my personal blog which will give you a pretty decent overview.

Please note that since this is a tech preview article, there is no guarantee when this feature will appear (if ever), nor is there any guarantee that the end product will encompass any or all of the attributes discussed in the post. It is simply to give you an idea of what we are working on, and what features the final product might include. vFlash was discussed at VMworld 2012 & my colleague Duncan provides a nice overview of the session on his blog here.

vFlash Infrastructure

We want our customers to be able to select off the shelf flash devices, be they SSD or PCIe I/O Accelerator cards. Once the flash devices are plugged into vSphere hosts, we have a toolset available in vSphere to manage flash as a resource, just like you currently manage CPU and memory resources. Basically, you will be creating a flash pool, the contents of which will be carved up to provide flash resources to individual VMs using constructs that you are already familiar with, such as reservations, limits & shares.

vFlash is a framework. VMware will be providing our own default software to plugin (vFC) to the framework, but other flash vendors can create their own plugins (vFlash Cache Modules) containing bespoke and proprietary algorithms for utilizing their specific cache/flash devices. The vision is to publish a set of APIs to support this, and share them with potential partners.

The vFlash infrastructure does not specify which Virtual Disk data is to be cached in vFlash. That decision is left up to the vFlash Cache Module. It is envisioned that the vFlash Framework will support multiple vFlash Cache Modules per ESXi host. Different Virtual Machines running on the same host can be configured to use different vFlash Cache Modules. This permits the vFlash caching algorithm used for a given Virtual Disk to be tailored to the storage I/O behavior of the application running in the Virtual Machine using that Virtual Disk.

That caching software can come in two forms – VM-aware caching & VM-transparent caching. With VM-transparent caching, the VMs will share a pool of flash resources and are not aware that they are doing so; they will simply benefit from having flash in their I/O path. With VM-aware caching, chunks of flash can be allocated on a per VM basis, and these will show up as SCSI disks in the Guest OS.

VM-aware Caching (vFlash Memory)

This is where a flash resource is presented directly to the VM. A new virtual hardware device called vFlash Memory is added to the Virtual Machine. The interesting part of this approach is that the caching algorithm needs to be controlled by the VM, and not by the caching software on the hypervisor. This may possibly entail the installation of agents in the Guest OS, in a similar fashion to how some flash vendors currently do things. The cache appears as a disk drive to the Guest OS, which can then be formatted and used appropriately by applications in the Guest OS, and thus can benefit from having access to a flash device.

VM-transparent Caching (vFlash Cache)

This is where the VM is unaware that there is a flash cache in the I/O path, but benefits from it all the same. A new virtual hardware device called vFlash Cache is added to the VM. In this case, cache software on the hypervisor is there to provide a suitable algorithm for the I/O. Options available during the configuration of VM-transparent caching will include reservation size, the choice of vFlash Cache Module, mode of operation (write-back or write-thru), block size (tuned to Guest OS requirements) and what to do with the flash contents during a migration (migrate or drop). The user will have the option of migrating flash contents if the destination host is compatible. The default option is to attempt to migrate the content, but if the destination host is incompatible, then we will drop the flash contents and rebuild it on the destination host. Obviously this will have a performance impact as the flash contents would need to ‘warm up’ on the destination host. VMs with flash cannot be migrated to a destiantion host with insufficient vFlash resources because even if the contents are not migrated, the flash contents will need to be rebuilt at the destination host and we need to ensure that appropriate resources are available to do this. vCenter compatability checks will fail the migration if the destination host does not have sufficient cache resources.

Similarly, when considering vSphere HA, flash will need to be pre-allocated or set aside to ensure that enough resources are available for virtual machines to successfully restart on remaining hosts in the event of a host failure.

Direct attached flash storage is gaining significant momentum right now, and is an ideal reource to provide low latency for latency sensitive applications, enabling even more tier 1 applications to be virtualized. VMware wants to enable our customers to leverage flash resources through well known and well understood vSphere mechanisms.

Get notification of these blogs postings and more VMware Storage information by following me on Twitter:  @VMwareStorage