In my last post I discussed a few of the technical aspects of flash that make it a unique storage media, particularly the complexity of garbage collection. Here we take a look at flash packaging and how that impacts architectural decisions. For this post I’ll focus on the question: “Should I use commodity SSDs?” and move on to PCIe cards and Enterprise Flash Drives in subsequent posts.
It’s easy to see why HDD form factor SSDs seem attractive: they have the same look and feel as a regular disk drive, they do usually weigh less, and they fit in the same HDD connectors you have in your existing server. That's all you need to see great flash speed, right? Sure they look good in the benchmarks, and while some benchmark sites have become a lot more sophisticated in measuring SSD performance, the SSDs have also become more sophisticated at Specsmanship.
In the end the commodity SSD fails in the enterprise for a lot more reasons than just its inability to live up to exaggerated performance claims. The commodity SSD isn't going to have the error protection or failed component recovery of an "Enterprise Flash Drive". The commodity drive is single bus attached so at best it can be used in simple server settings, but not in proper RAID enclosures with redundant controllers. The algorithms in commodity SSDs are optimized around the access patterns of your standard desktop machine and none of these optimizations are going to help your enterprise server.
Similarly, compression or dedupe built into the SSD sound like great ideas for the average desktop PC (and they sure do improve benchmark numbers) but not necessarily for the enterprise. Enterprise apps and services, or the storage arrays they are plugged into, are often already performing those functions. Additionally, encrypting the data right from the application is also becoming more and more common, which totally defeats these benchmark-oriented optimizations.
The commodity SSD isn't meant to be sold to someone focused solely on performance, it’s meant to be as cheap as possible. So when a few months later you buy some replacements for a failed drive, or to expand your storage capacity, imagine your surprise when you find they have half the performance they used to have, because they got great pricing on Flash chips that were 2X as big, and so the vendor put half the number of chips in as the ones they sold you last month, half the chips, half the IOPs, but the price per bit is great isn't it? The price per IOP? Not so great. (And yes, some vendor really did do that.)
So clearly packaging matters, particularly when you are talking about deploying in a demanding enterprise environment. The real objective is not so much about packaging flash, but optimally aggregating flash for the enterprise. I’ll get more into that in the next two posts.