The increasing availability of cheap, fast SSDs (solid-state drives) in the enterprise primary storage market is exciting, to say the least. SSDs offer tremendous transactional throughput and extremely low latency -- neatly solving two problems that plague many storage environments. However, they still come at a premium over traditional spinning disks and don't yet offer the same enterprise-ready high-density capacity. Knowing where to apply SSDs in your environment is critical to a cost-effective deployment.
The most common application for high-performance flash-based SSDs is in OLTP (online transaction processing) environments and high-density VDI farms. These types of workloads generally consist of extremely large amounts of relatively small, entirely random reads and writes. This mix is very difficult for traditional spinning disk to keep up with.
The randomized nature of OLTP workloads renders most controller and on-disk caches useless, which fully exposes the relatively high seek time of the mechanical disk heads that are being used. The most common solution to this problem is to use a large number of high-performance disks to satisfy the workload. By increasing the number of disk spindles that the data set is spread across, the storage infrastructure can increase the overall number of transactions it can process.
However, this approach can be tremendously wasteful. Let's say, for instance, that you have a 1TB database that must be able to respond to 10,000 disk transactions per second in order to meet your users' demands. To deliver that kind of performance, you'd need about 60 active 15,000-rpm SAS or Fibre Channel disks dedicated to that workload. Assuming that fairly common 300GB disks are used, you've just effectively deployed 18TB of raw disk to host 1TB of data -- a massive capacity inefficiency. Despite its wastefulness, this solution is so common that it actually has a name: short-stroking.
Using SSDs can effectively do away with the need to short-stroke large amounts of spinning disk. Instead of deploying lots of traditional disks and only using a small percentage of their capacity, you can deploy a fairly small number of SSDs, get the performance you need and not waste capacity (not to mention money, power, and rack space).
Striking a balance
However, not every workload is this cut-and-dried. Most real-world storage environments don't just cater to a single high-performance workload. Instead, they often must serve the needs of many smaller applications with varying workloads and capacity requirements. While you could blindly deploy SSDs for everything, you'd likely end up buying a significant amount of unneeded transactional performance just to meet your capacity requirements. Essentially, this is no better than short-stroking.