What you will learn: Flash-based storage is the logical choice to accelerate the performance of virtual machines, due to its low latency and effectiveness at handling random I/O. Learn how to implement flash in your environment to tackle virtual machine performance issues.
The same technology that lets users host multiple virtualized machines on a single physical host also creates a potential I/O challenge that traditional storage systems are unable to handle. This I/O challenge is twofold: the large amount of storage read-and-write traffic a single host can generate at any given time, and the randomness of these reads and writes. Both leave legacy hard drive systems struggling to keep pace.
The storage performance problems caused by server virtualization will only get worse as host servers are upgraded to the latest Intel processors and significantly increased dynamic RAM capacities. This will lead to the potential for three times to five times higher populations of virtual machines (VMs) per physical server.
The good news is that VMware storage performance doesn't have to be the bottleneck. In fact, it can enable new levels of virtual machine density that enhance the virtualization return on investment (ROI). The key is the proper deployment of flash-based storage technology. This feature will take a deeper dive into flash because it's so critical to performance acceleration.
Flash to the rescue
Flash provides the perfect answer to virtualized workload demands, thanks to its zero-latency, high-performance capabilities that make it impervious to random I/O workloads. But flash comes at a premium versus hard disk technology, so data center managers need to deploy their flash resources judiciously.
To respond to the potential opportunity that virtualization presents, flash vendors have raced to market with an almost overwhelming number of configuration options. There are server-side flash offerings that combine with caching software to accelerate performance on specific hosts, and shared storage products that mix flash in with hard drives, or are all-flash configurations.
Simply buying faster storage devices without taking the network into consideration may lead to suboptimal solid-state performance. For our purposes, we'll assume the storage infrastructure (the network) has been optimized to the fullest extent possible. Now we need to determine where high-performance storage can be integrated to deliver the greatest ROI, given the network's capabilities.
Let's dissect the options and provide some guidance on how to select the right configuration for your virtual storage environment.
Managing write I/O
When designing a high-performance storage environment for a virtualized data center, a key factor is accounting for write I/O performance. A virtualized environment typically has a high amount of write I/O. There's the normal write I/O common to any environment and heavier-than-normal use of such features as thin provisioning, cloning and snapshots; all of these dynamically allocate (write) additional volume space as needed. That means a single write can generate a cascade of additional write traffic.
For example, a single update to a file may increase its size; this may cause a volume to be reallocated (thin provisioning) and a clone map and a snapshot table to be updated. Each of these features adds significant storage efficiency capabilities to the virtualized environment. The problem is that if there is a write-latency delay while they're in use, these features can cause a noticeable performance impact and limit how thinly storage can be provisioned, how many snapshots can be maintained and how many VMs can be sourced from a single clone. As a result, many environments have to turn these features off. One of the most important benefits of flash-based devices is that they enable these features to be turned back on or used to the fullest extent possible.
Shared storage performance
One of the most appealing aspects of virtualized servers and desktops is the flexibility and availability they bring to the organization. Capabilities such as Distributed Resource Management, Storage vMotion and VMware vSphere vMotion are most typically enabled by shared storage. It's the logical first place to start when it comes to improving the overall performance of virtual machines.
To that end, flash-based storage has become the logical choice for accelerating the performance of virtual workloads, thanks to its low latency and effectiveness at handling random I/O. There are two basic implementation options available to the data center: a hybrid flash approach and an all-flash array.
Hybrid flash option
When deploying flash with a hybrid approach, the goal is to deliver most of the performance advantage of an all-flash array but at a significantly lower cost. These systems typically use tiering or caching technologies to ensure that the most active data set is on the solid-state section of the storage system.
There are a variety of methods for implementing hybrid flash arrays. For the reasons mentioned above, it's important to identify a storage system where all the write traffic is initially tiered to or cached to a redundant flash area so that basic write performance and advanced storage efficiency features aren't impacted.
While hybrid systems have a price advantage over all-flash arrays, they also have a predictability disadvantage, in that if old data is requested by a VM and it's not in the flash tier, it is has to be accessed from hard-disk storage that typically consists of high-capacity (4 TB) and slow (5,400 rpm) hard disks. It's extremely difficult to gauge the impact of a cache or tier miss in an evaluation lab, so the impact will remain largely unknown until it actually occurs in a production environment. By that point, the user experience will be negatively impacted.
While the high-performance promise of all-flash arrays is very appealing, the price of an all-flash array can be very unappealing. All-flash vendors have been working hard to integrate such capabilities as data deduplication and compression to help drive down the cost of all-flash arrays. Some are even integrating networking directly into the storage system to make establishing a high-performance network even easier.
But the impact of adding these features is diminished performance. Systems like these typically achieve 300,000 IOPS to 500,000 IOPS instead of the 1 million-plus IOPS performance of dedicated and featureless flash appliances. In reality, the overwhelming majority of mainstream virtualized environments typically don't need anything beyond 300,000 IOPS to 500,000 IOPS. As a result, all-flash arrays are becoming a popular option.
Server-side option increases performance, but challenges exist
You can also increase performance through a new shared storage system -- server-side caching software and internally installed flash storage. This is typically done by adding PCI Express solid-state drive (PCIe SSD) boards to the servers already in place, then caching data locally to those systems. Like the hybrid array described earlier, these systems ensure that the most active data for each virtual machine is stored locally on its host server.
In some ways this is ideal. The most active data is cached locally in the server responsible for the VM, so there's no trip across the storage network or need to wait for the shared storage system to retrieve data. In large part, the need to upgrade the storage network and the shared storage system can be avoided for the cost of the PCIe SSD. And assuming that enough PCIe SSD capacity can be purchased, performance should be better than the performance of the other options described earlier, thanks to the direct-attached nature of the storage.
On the other hand, there are three significant challenges with server-side optimization. First, most server-side caching technology is read-only, meaning writes aren't accelerated. This is mostly due to concerns about data loss if an SSD fails while uncommitted writes are still in cache. Some vendors are working on redundant technology to perform write caching, but data is basically at risk until it's out of the server and written to the shared storage device.
The second challenge is dealing with VM migration. Most server-side caching vendors are now VM-aware and will evict the cache when a migration occurs. This means the "moved" VM has to suffer with hard-drive performance on its new host until data can be requalified and promoted into the PCIe SSD cache on the new host.
Again, some caching vendors are working on resolving these challenges by building cache network technology where the old host continues to provide the cache space (with the addition of some latency). Other vendors will copy the cache metadata to the new server so that data doesn't have to be requalified while the cache is being rebuilt, thus reducing the time to reload the cache with the correct data.
The final challenge is price. Depending on the number of servers or hosts to be accelerated, the cost to install a high-capacity PCIe SSD and the appropriate caching software in each of these servers could be significant, and could even exceed the cost of a new shared storage system.
Deciding on strategy
Flash is the obvious answer for creating denser, higher-performing virtual machine environments. The how and where of implementing flash is the question. Most environments should consider flash-enhanced shared storage as a first option. If a hybrid system is under consideration due to price, never overallocate the size of the flash tier, especially in virtual environments.
If predictability is more important, you should strongly consider an all-flash array. Server-side flash offerings should either be a second step to isolate performance stragglers after flash-enhanced shared storage is introduced, or used in instances where the total cost of adding PCIe SSD is less expensive than the cost of upgrading the network and the shared storage.
About the author:
George Crump is a longtime contributor to TechTarget, as well as president and founder of Storage Switzerland LLC, an IT analyst firm focused on the storage and virtualization segments.