As a result several vendors have raced to market with server based storage and caching solutions. Companies like Marvell, LSI, Oracle, Texas Memory, EMC and Fusion I/O are all providing products to address this market. However, all server based SSDs and caches are not created equal and a careful examination of the capabilities available is warranted.



Caching vs. Static SSD


The first decision to make when selecting SSD is whether it should be a caching type of solution or a static device like an SSD or a PCIe based SSD. Caching has the advantage of working across a wide variety of workloads and does not require that the administrator go through a sophisticated performance analysis to determine which data set should be accelerated. For the capabilities of a static device to be fully realized a detailed performance analysis of the environment or application should be done.


The advantage that a read cache has is that it does a performance analysis automatically, continually, moving the warmest data set into solid state storage as warranted. Caches also allow a large capacity of mechanical disk to benefit from the smallest amount of the more costly SSD. Performance increases are more widespread by copying the most recently accessed blocks of data to the server based solid state storage area. Typically an SSD cache is a fraction of the size of the actual storage it’s supporting.


Static devices do have the advantage of predicable performance. There is no risk of a cache miss for example since all the data can be loaded onto the solid state storage device. The challenge, however, is isolating the data that needs to be moved to the SSD. There are cases were this can occur but for many data centers, especially cloud compute environments, the data set is too broad and the access to that data too variable to accurately predict which data should be moved to the SSD and when. The SSD area would have to be large enough to hold all the performance sensitive data, all the time. The cost to acquire that much solid state capacity may make a reasonable ROI hard to achieve across a wide selection of data. As a result many server based static SSDs are limited to being point solutions for very small data sets.


Reality is that solid state storage is still a premium investment that data centers decide on because its use can lead to a performance acceleration that improves organizational productivity. To maximize this investment the data on an SSD device should be constantly refreshed, making sure that only the most active data is on this premium tier. This constant analysis and refreshing is very difficult to do with a static SSD but very easy to do with cache.



Protocol Agnostic


The first challenge for server based solid state caches is that many can only accelerate performance on a single protocol, most often the directly attached SCSI or SAS device. The problem is that most servers that could take advantage of or require the performance boost that a server based cache can provide typically have all or at least part of their storage externally connected via Fibre Channel, iSCSI or even NFS.


A server based cache should be able to support a wide variety of protocols and do so simultaneously. It should be able to provide a performance boost as the host boots from a local hard drive set and as it accesses data over the storage network.


An excellent example of this is a virtual server environment that’s using NFS storage for its virtual machines. While NFS is ideal for supporting virtual machine image files the hosts cannot boot from NFS storage, and instead, most customers use an internal storage device to boot the host and store the hypervisor temporal data like swap files. Both the DAS storage for server boot and NFS based virtual machines can benefit from the accelerated performance that an SSD cache can provide so it’s important that the server based cache be able to support multiple protocols and connection types simultaneously.


By caching network based storage a server based cache is removing one of the most significant performance bottlenecks in the storage infrastructure, the network itself. One of its ROI benefits is delaying a network upgrade to improve performance. In addition to reducing network bottlenecks and application latency, a second key benefit is removing the storage array itself as a bottleneck. Application servers running OLTP databases or virtualization (eg. VDI) applications, the storage array’s CPU or disk can often be bottleneck for storage I/O. Therefore another key ROI benefit in server-based caching is deferring storage array upgrades to scale the number of host servers that can be attached to any given storage back-end.



Storage Hardware Agnostic


The next important consideration is that the caching solution be storage hardware agnostic. While some vendors have embedded caches in their application servers and others have embedded caches in their storage server controllers or drives, they only work with that specific brand of storage or controller. Even so-called “hybrid drives” that embed solid state flash on physical hard drives are limited to just the device they are on. As the example above makes clear in virtualized and cloud environments, customers are likely to use a wide variety of storage hardware to meet the demands of the business. The latest version of VMware vSphere 5 furthers the virtualization of storage by making it easier than ever to mix storage types to address specific needs in what VMware calls “storage clusters”.


By placing the SSD cache in the server and then having it support multiple storage protocols and brands of storage hardware, the storage manager is able to realize the maximum benefits of acceleration across the broadest set of storage back-ends, networks, and protocols without being locked in to any specific design. This host-based caching also provides optimal performance because the processor has direct PCIe access to the SSD; there are no networking bottlenecks. Storage performance can be scaled granularly by host, but still provide broad acceleration.



Mixed DRAM/SSD Media Support


While Flash SSD has captured most of the headlines, DRAM based SSD has an important role to play in the enterprise. DRAM does not have the wear-out concerns that flash based storage does, nor does it suffer a performance loss when writing data like flash storage does. In addition, DRAM latencies are orders or magnitude lower than  NAND flash. The economic advantages of flash cannot be ignored though. It allows for solid state storage to be bought affordably in large capacities so that a significant amount of data can be cached, reducing the chances of a cache miss. The ideal configuration is to combine the use of DRAM and flash so that they complement each other in a solution as described below.



Cache Protection & High Availability


DRAM based devices though do have to overcome one key challenge, their volatile nature. When power is lost, standard DRAM will loose its contents. This can be overcome though by using a “super-cap” type of solution that will power the DRAM until system power can be restored, essentially creating non-volatile RAM (NVRAM). Powering the DRAM is a basic requirement for protection from power loss or server reboot.


Cache solutions should also provide an external (to the server) high availability capability in case the server itself fails, essentially a cache mirror. This can be done through software and a high-speed network connection to another device in another server. When data is written to NVRAM it’s also synchronously written to the mirrored device in the other server before the write is reported as committed to the application.  In the event of multiple SSD, PCIe card, or motherboard/server node failure, a synchronous replica of cached data is instantly available to guarantee enterprise-class high availability. Ensuring this is a low-latency procedure is important to ensure data protection does not compromise on application response time.



Read Caching


Almost all caching systems and devices will cache read I/O. It’s how those reads are cached that can make a big difference in performance and longevity of the device. Read caches are ironically very write heavy devices since active data needs to be promoted to the caching tier that is done by copying the data from the mechanical drive and writing the data to the cache area. These cache devices need to use advanced population and eviction algorithms based on sub-LUN and file-level awareness of the various workloads.


The first step after implementation is for the device to conduct a "training". This process monitors host and application activity to learn what data should be in cache and what should not. From that point cached data is continuously monitored, both for performance (eg. evicting “cool” data and replacing with “warm” or “hot” data) as well as to ensure read cache consistency. This means that the cache is constantly copying data from the mechanical hard drive to the solid state cache area and is evicting old data to make room for it.


This constant need for turn over in a cache is another example of where using mixed media solutions can be of benefit. NVRAM is an ideal first landing area for reads that are promoted to cache and can remain there until their activity settles down. From there they can be de-staged to flash. The other advantage to an NVRAM / flash cache is that on a power failure or server crash there is no warm up or cache repopulation time. This is a critical feature in modern caching systems since the size of the combined flash and NVRAM SSD can be large and the time required to re-train the cache and re-populate it can be lengthy.



Write Caching


Most caching devices do not cache random writes, yet it’s an important capability to consider and one that can be done very safely if the manufacturer implements it correctly. Write caching provides a performance boost to potentially the slowest function that a storage system (HDD or SDD) has to perform, the write. Many cache devices do not cache random writes because they are flash only, and the performance gain quickly drops off a cliff within a short time period. Plus the added wear on the flash module (termed write amplication) can lead to a quicker SSD wear out.


Writes are an ideal function to send to NVRAM if mixed solid state storage was implemented on the storage system. The other key value is that the performance increase is immediate, from the first write cycle in which performance is accelerated. There is no training or analysis that must take place.


The other advantage to caching writes to NVRAM is that data can then be better organized as it’s de-staged to flash or HDD. In the case of a busy write where a data segment is being updated many times, initially all of this write activity can be cached to DRAM. Then when random write activity settles down the pruned version of the data segment can be sequentially written to the SSD and eventually HDD. This dramatically improves the life of the SSD by eliminating so many transient writes and it allows the hard disk system to perform better as well, since the writes are coalesced and sequentialized, improving seek performance.



Write Buffering


Write caching also enables write buffering, a feature that holds small writes in NVRAM for some time so that they can be combined with other writes before they are written to flash or possibly overwritten with newer updates. Write buffering also helps with read caching in that case write buffering holds a new write in DRAM until it becomes cold.  This allows for active data to be immediately available and not have to go through the normal promotion process. NVRAM provides the fastest read and write performance and eliminates the latency involved when data is copied back and forth to the flash SSD.


Even write-through and read-only approaches can be accelerated. Write-through caches require that new data be written to a hard disk and not stored in NVRAM. They then wait for a significant amount of read activity to occur to get that data re-promoted back to the cache area. With write buffering, since the data is already captured by the caching device, it simply remains stored in NVRAM as the copy is written to the HDD, saving the re-promotion activity.



Operating System / Hypervisor Aware


Finally, especially with write cache solutions, there needs to be the ability for communication between the cache and the operating system or hypervisor. This is so that the write cache can be flushed prior to a data service function taking place. Flushing of the cache is important to ensure that data that’s being held only in cache is flushed to disk prior to a snapshot or a virtual machine migration taking place, so that a complete copy of data is captured. The caching solution should have a programmable API or come with direct support for the more popular platforms.



Summary


Increasing server or host based performance can be as simple as inserting an SSD, a PCIe Flash Card or a cache card into a server. But for maximum return on this high performance investment system administrators should dive deeper. Of these features the one that can have potentially the most impact is an intelligent NVRAM/SSD write-back cache. It provides acceleration from the moment of installation and removes the single hardest task that a storage system has to perform, random writes. It also enables better read caching efficiency.


There are many vendors offering solutions in this space. One that deserves a hard look is Marvell's DragonFly which meets all of the above requirements without sacrificing reliability. Providing these capabilities on a server by server basis should be an ideal strategy for heavily virtualized and cloud compute environments, as well as large scale OLTP and analytic database applications.

Marvell is a client of Storage Switzerland

George Crump, Senior Analyst