This vendor-written tech primer has been edited by Network World to eliminate product promotion, but readers should note it will likely favor the submitter's approach.
Enhancements to server and storage technology created an I/O performance gap in the enterprise storage network that has since been addressed by SSD-based caches and PCIe-based flash cards, but there are different approaches to deploying SSDs. This article compares SSD caching approaches and suggests a new approach that overcomes the individual drawbacks of each approach while combining their relative advantages.
The purpose of SSD-based caching is to address the I/O performance gap by reducing I/O latency and increasing IOPS performance. Any enterprise caching solution under consideration should be easy to deploy, OS/application transparent, and support caching on individual servers as well as multi-server clusters, including support for highly virtualized environments and clustered applications. It should also maintain existing SAN data protection and compliance policies, and deliver benefits across the widest range of applications in the enterprise.
[ IN THE NEWS: Samsung buys SSD caching vendor Nvelo
CLEAR CHOICE TEST: The skinny on solid state drives ]
Today, there are three main approaches to SSD caching in networks: array-based caching, caching appliances and server-based caching.
* Storage array-based SSD caching. Initial deployments of SSD caches involved installing SSDs/PCI-flash cards, along with the required software and firmware functionality, within shared storage arrays. Due to the plug-compatibility of early SSDs, these initial implementations did not require extensive modifications to existing array hardware or software and, in many cases, were available as upgrades to existing equipment.
Applying SSD caching to improve performance inside storage arrays offers several advantages that closely parallel the fundamental advantages of centralized network-attached storage arrays, including: efficient sharing of valuable resources, maintenance of existing data protection regimes, and providing a single point of change where network topologies and related procedures need not change.
However, adding SSD caching to storage arrays requires upgrading and, in some cases, replacing existing arrays (including data migration effort and risk). Even if all of the disk drives are upgraded to SSDs, the expected performance benefit is not fully realized due to contention-induced congestion latency at over-subscribed network and array ports. The performance benefits of SSD caching in storage arrays may be short-lived and caching may not scale smoothly. The initial per-server performance improvements are likely to decrease over time as the overall demands on the arrays and storage networks increase with growing workloads, and with physical server and virtual server attach rates. [Also see: "Can flash live up the hype?"]
* Caching appliances. Caching appliances are network-attached devices that are inserted into the data path between servers and primary storage arrays connected to a SAN switch. Like array-based caching, appliances share relatively expensive and limited resources, but do not require upgrades to existing arrays. Because these devices are independent of the primary storage arrays, they can be distributed to multiple locations within a storage network to optimize performance for specific servers or classes of servers.
In common with arrays, however, caching appliances are vulnerable to congestion in the storage network and at busy appliance ports. The appliance approach offers better scalability than array-based caching because it is conceptually simple to add incremental appliances into a storage network. However, each additional appliance represents a large capital outlay, network topology changes and single point of failure outages.
In contrast to array-based caching, appliances are new elements in the enterprise IT environment and require changes to policies, procedures, run books and staff training. In addition, bus and memory bandwidth limitations of the industry-standard components at the heart of most caching appliances restrict their ability to smoothly scale performance. Given that these appliances sit in-band on shared network storage links, infrastructure architects and managers have grounds for concern about the real-world scalability of these devices.
* Server-based caching. The final option for SSD caching placement is at the server edge of the storage network, directly attached to I/O intensive servers. Adding large caches to servers with high I/O requirements places the cache closest to the application and in a position where it is insensitive to congestion in the storage infrastructure.
The cache is also in the best position to integrate application understanding to optimize overall performance. Server-based caching requires no upgrades to storage arrays, no additional appliance installation on the data path of critical networks, and storage I/O performance can scale smoothly with increasing application demands.
As a side benefit, by "short stopping" a large percentage of the I/O demand of critical servers at the network edge, SSD caching in servers effectively reduces the demand on storage networks and arrays. This demand reduction improves storage performance for other attached servers, and can extend the useful life of existing storage infrastructure.
While the current implementations of server-based SSD caching are very effective at improving the performance of individual servers, however, providing storage acceleration across clustered server environments is beyond their reach, and limits the performance benefits to a relatively small set of single server applications.
Several serious drawbacks exist with server-based SSD caching, as currently deployed, including:
- Creating silos of server-captive cache resources prevents sharing of expensive SSD resources, making for a much more expensive solution to achieve a specified performance level.
- Complex layers of driver software increase management and maintenance requirements, increase interoperability risks and can consume server processor and memory resources.
Addressing the drawbacks
A new approach to server-based SSD caching can address the drawbacks of traditional implementations. Rather than creating a discrete captive-cache for each server, the SSD cache can be combined with a SAN HBA and create a shared cache resource among multiple servers. Caches from multiple cards can be clustered as a central resource. This eliminates silos of captive SSD capacity and reduces the cost to achieve a specific performance level.
In addition, the new approach uses a simple HBA driver to appear to the host as a standard SAN HBA. The new technology incorporates a new class of host-based, intelligent I/O optimization engines that provide integrated storage network connectivity, an SSD interface, and the embedded processing required to make all SSD management and caching tasks entirely transparent to the host. The only host-resident software required for operation is a standard host operating system driver. All "heavy lifting" is performed transparently onboard the SSD/HBA card by an embedded multicore processor.
Moreover, caches from multiple cards can be clustered to provide a large high performance cache pool to support the high I/O demand of clustered applications and highly virtualized environments.
Finally, the new approach guarantees cache coherence and eliminates potential cache corruption by establishing a LUN cache owner to which all cache requests are directed. The LUN cache owner monitors the state of every cache and is updated as to any changes as they occur. Because only one SSD card is ever actively caching a LUN, and all other members of the accelerator cluster process all I/O requests for that LUN through that LUN cache owner, all storage accelerator cluster members work on the same copy of data. Cache coherence is guaranteed without the complexity and overhead of coordinating multiple copies of the same data.
By clustering caches and enforcing cache coherence through a single LUN cache owner, this implementation of server-based caching addresses all of the concerns of traditional server-based caching.