Last week, as part of a quick post I scribbled about Pure Storage, I asked the question – Are they still innovating?
Fair question I thought – after all, not a lot has changed in their product over the last ~2 years. But then I struggled to think of areas where they could realistically still innovate.
At first, I struggled….
Anyway, I was lying awake the other night thinking about this (as you do) and remembered a conversation I’d had with them a while back. They’d been talking about consumer-grade flash, and how their OS (Purity) was designed from the ground up to work with it in the best way possible blah blah blah…. Anyway, we’d also been bemoaning the crappiness of traditional storage arrays and their hideous flash + spinning rust tiering implementations blah blah blah. So I’d asked them “what about having different tiers of flash in an all-flash array?”. Something like SLC, MLC and TLC. Or probably not even bothering with the SLC. And as we discussed this, the more I thought “yeah” that could be rockin!
Tiered All-flash Array (TAFA)
But hang on a second…. if I think traditional storage arrays implementing tiering with flash, 10K and 7.2K drives is a monstrosity, why would an all-flash array with two or three tiers of flash be any better? Well……
For starters – and probably the most important point – is that although TLC (Triple Level Cell) flash has the kind of write endurance that would barely satisfy a compliance archive, it’s actually a pretty damn fast. Seriously… according to some of what I’ve read, the IOPS and latency difference between TLC and MLC is nowhere near the differences you’ll get between 7.2K NL-SAS and MLC. Nowhere near!
So in a traditional tiered storage implementation, the lowest tier is usually 7.2K NL-SAS drives. These drives give high capacity but perform like a two-legged blind dog that’s lost it’s sense of smell – especially the bigger drives (4TB and up). So on traditional arrays with a mix of rotating rust and well-greased flash, it’s a real trade-off between capacity and performance – and trade-off suck!! But if your an all-flash array, and your lowest tier is TLC flash, then you get the high capacity but don’t have to sacrifice performance. There is no more trade-off.
TLC Flash Performance
On the performance front, read and write performance for MLC and TLC doesn’t have to be a million miles apart. In fact, unless you’re doing something wrong, read performance of TLC should probably be about the same as read performance of MLC. Write performance…. Hmmmmmm…. yeah probably not quite the same. But we shouldn’t be talking orders of magnitude different. May be TLC should have 1/2 or 2/3 the write performance of MLC!? Not too shabby!
Sure, you don’t want to be writing to it like an Etch A Sketch, as it’ll wear out faster the break pads on an F1 car. But on an array like a Pure Storage AFA, the array’s OS should be clever enough to keep writes to TLC to an absolute minimum! After all, the AFA guys are always banging on about how clever their software is, and how amazing it is at working properly with flash. So if they really are half decent, then it should be a walk-in-the-park making TLC a viable option as a so-called capacity tier.
Point being……. the actual IOPS and latency figures of TLC flash are much more in-line with MLC flash, you just can’t write to it that often. But like we said….. if its your bottom tier, you won’t be writing to it much anyway! Plus, lash some half-decent array code on top of it and you’ll hardly ever be writing to it. Sounds like a winner to me!
Another Reason Tiering Just Flash is Better than Tiering Flash and Disk!
Oh and another reason why a tiered AFA will be better than a traditional array with a combo of flash and spinning disk tiers….. those traditional arrays just weren’t designed to work well with flash! Yes, most of them have been updated or flash-optimised, but honestly, that’s a bit like trying to add an egg to a cake after it’s baked. A tiered AFA on the other hand has the flash intelligence added into the mix before the baking! Tastes a lot better and much less chance of making you sick.
Just after a quick bit of thinking I’m not sure I came up with any majors.
One thing that did come to mind was resource constraint on the existing crop of all-flash arrays. Adding additional workload to them could become an issue, and could further impact abilities to scale (up or down).
After all, most of the AFAs out there at the moment are fairly small – a few shelves of flash drives seems the limit right now. And that’s no doubt for a reason. If you’re deduping and compressing everything in and out of the array, you need CPU grunt to do that and RAM/SLC flash to hold the mapping tables and the likes. So throwing additional overhead into the mix might put even more strain on the modestly spec’d Intel based AFAs already out there. Keeping track of how many writes a particular part of the address space is getting could be non-trivial – at least if you’re mapping at a small enough granularity….
Like I say, I talked to guys at Pure – and other companies as well – about this a year or so back. I’ve no idea if they’re working on it, but it’s dead centre of their raison d’etre – flash at the price of disk. Well… with decent dedupe and compression algo’s, plus a nifty little tiering system like this, what’s stopping them giving us flash for the price of off-shore tech support…CHEAP!!