Mainstreaming High IO Performance with Flash Cache
Servers are growing more and more powerful, but decades-old storage controller technology has not kept pace. This puts storage at an extreme disadvantage just as companies are growing huge infrastructures of virtual and physical systems, applications of all types and very large volumes of primary data.
Advances in solid-state drives have helped by introducing higher performance/lower latency into the computing stack. Now customers do not necessarily have to sacrifice simplicity or budgets for performance improvements. However, these SSD products – which may be at the server, network or storage layers -- can be very expensive. In addition, they're complex to deploy and manage even at the enterprise level, let alone the mid-market.
Customers want and need the performance boost from SSD products, but they are asking if the improvement is worth the expense, management complexity and confusion surrounding SSD offerings.
The answer is: it depends.
Why Flash Matters to Applications
Storage-based SSD solves serious performance issues by providing fast IO processing at the storage controller. That makes it ideal for high performance and low latency storage requirements.
The wrench in the works is that all-flash arrays are quite expensive and small capacity compared to hard disk. That puts them out of reach for most mid-sized businesses and renders them unnecessary for the majority of data center applications.
Some critical Tier 1 application environments can take advantage of dedicated all-flash arrays or even card SSDs at the host to dramatically accelerate applications whose service levels are measured in microseconds. Most mainstream applications do not need the stratospheric IOPS numbers advertised for all-flash storage systems, but there are still crucial performance requirements for mission-critical applications such as databases and OLTP applications, SharePoint, Exchange, virtual servers, and virtual desktops. While businesses of all sizes must maintain high random IO performance and low latency for these applications, they cannot justify paying the premium prices for dedicated all-flash storage.
However, there is a way to apply the high SSD performance with reasonable cost per GB: hybrid storage systems that combine SSDs and spinning disk to provide high performance storage at a reasonable cost. In this environment, the flash-based storage controller provides intelligent storage management. SSDs provide fast performance for more active data, and back-end disk houses the majority of data.
Yet even in this category, systems differ from one another in several important respects. One of the most important differentiations is in fact one of the least obvious: does the array use cache or tiering to deliver active data into the SSD layer? At first glance these two approaches do not look too different, but in fact their differences over time can be substantial.
- Automated Tiering.Data tiering has been around for years. It is the process of matching data value to storage costs. Traditional tiering moves disk-based data from primary down to nearline, archival and tape tiers for economical long-term retention.
Primary tiering using SSD has a very different meaning. SSD tiering moves data back and forth between Tier 0 SSDs and Tier 1 fast spinning disk. Movement occurs in response to application usage, a manual command or a schedule. The data moves, not copies, so it must be highly protected using some form of SSD RAID. These are not granular moves; GB-size blocks and file volumes will move even if the actual data request is very small. Additional RAID calculations may impact performance and add to the cost with additional SSD capacity.
- Caching.Caching has also been around for a long time, but SSD caching changes the equation considerably. Rather than tiering, which requires administrators to understand IO usage and set policies, caching uses predictive algorithms to copy data to the SSD layer for fast IO processing.
The storage array may do write caching as well as read caching; we much prefer to see both. Write caching buffers incoming writes and efficiently aggregates them before doing disk writes. Using SSDs for the read cache enables the array to have a much larger cache, which increases the amount of data the cache can store and accelerate.