There are three generalised approaches to using flash memory in storage architectures, categorised in the diagram below:
Three Categories of Solution Design
The Performance Optimised category takes a no-compromise-on-cost approach to designing for performance. A centralised storage controller that leverages flash memory characteristics to dramatically reduce IO latency and improve IOPS. Significant new engineering work is required to optimise read performance (stripe across multiple memory components), to optimise write performance (wear levelling, garbage collection management and striping across multiple memory components) and latency optimisation (choice of interface, Infiniband, PCI, Fibre Channel or 10gE, internal data path optimisation, no compression or deduplication). Violin Memory adopts this approach in the 6000 Flash Memory Array, as do WhipTail Technologies with their XLR8r Storage Array, and Texas Memory Systems with their RamSan-820.
The Caching or Tiered category stores most of the data on conventional magnetic media with flash memory used either in the form of a PCI based card in one or more of the connected servers or as an extra storage tier contained within the central controller along with conventional magnetic disk. The engineering for this approach only becomes complex if both read and write caching is configured (as the write component drives a requirement to manage cache concurrency across PCI cards in multiple servers). Flash as a storage tier is on general availability from most controller manufacturers although automated intra-tier migration of the hottest data is still a fairly new technology. Fusion-io offer product in this space with their ioDrive, ioCACHE combination as does EMC with the VFCache product, these are both limited to read cache at this time.
The Capacity Optimised category, by far the most popular architecture, sacrifices some of the potential latency and IOPS improvements of the Performance Optimised approach by trading this for enhanced capacity. This enables IOPS and latency improvements over conventional disk arrays, at a per-gigabyte price point that is more generally affordable and could address price sensitive markets and use cases. Compressing and deduplicating the data in-line as it is written enhances the controller’s data storage capacity. By leveraging the high performance characteristics of flash memory the latency and IOPS penalty is reduced to the point that performance is still better than an all-magnetic media solution. Most of the new breed of flash storage vendors has entered this space including Pure Storage, SolidFire, Tintri, Nimbus Data Systems, GreenBytes and others.
The introduction of flash components into a well-designed storage controller has a number of effects: The price per raw (uncompressed, duplicated) gigabyte increases, the average latency reduces and the average number of IOPS increases.
In a magnetic only design, increases in IOPS can only be delivered by worse than linear price increases. This has been the single most significant driver for the rapid migration to flash based storage.
Performance Enhanced designs address use cases where increased IOPS and reduced latency are the problem rather than capacity and usually delver better price-performance than other designs.
Caching designs take an evolutionary approach for problems where capacity demands are still significant but a performance boost is required.
Capacity Optimised approaches try to solve both capacity and performance problems in one design with the bold aspiration to replace magnetic only solutions.
Not even remotely to scale