The Next Step in SSD Evolution: NVMe Zoned Namespaces Explained
by Billy Tallis on August 6, 2020 12:00 PM EST- Posted in
- SSDs
- Storage
- Western Digital
- NVMe
- SMR
- Radian Memory
Comparison With Other Storage Paradigms
Zoned storage is just one of several efforts to enable software to make its IO more SSD-friendly and to reduce unnecessary overhead from the block storage abstraction. The NVMe specification already has a collection of features that allow software to issue writes with appropriate sizes and alignment for the SSD, and features like Streams and NVM Sets to help ensure unrelated IO doesn't land in the same erase block. When supported by the SSD and host software, these features can provide most of the QoS benefits ZNS can achieve, but they aren't as effective at preventing write amplification. Applications that go out of their way to serialize writes (eg. log-structured databases) can expect low write amplification, but only if the filesystem (or another layer of the IO stack) doesn't introduce fragmentation or reordering commands. Another downside is that these several features are individually optional, so applications must be prepared to run on SSDs that support only a subset of the features the application wants.
The Open Channel SSD concept has been tried in several forms. Compared to ZNS, Open Channel SSDs put even more requirements on the host software (such as wear leveling), which has hindered adoption. However, capable hardware has been available from several vendors. The LightNVM Open Channel SSD specification and associated projects have now been discontinued in favor of ZNS and other standard NVMe features, which can provide all of the benefits and functionality of the Open Channel 2.0 specification while placing fewer requirements on host software (but slightly more on SSD firmware). The other vendor-specific open channel SSD specifications will probably be retired when the current hardware implementations reach end of life.
ZNS and Open Channel SSDs can both be seen as modifications to the block storage paradigm, in that they continue to use the concept of a linear space of Logical Block Addresses of a fixed size. Another recently approved NVMe TP adds a command set for Key-Value Namespaces, which completely abandon the fixed-size LBA concept. Instead, the drive acts as a key-value database, storing objects of potentially variable size, identified by keys of a few bytes. This storage abstraction looks nothing like how the underlying flash memory works, but KV databases are very common in the software world. A KV SSD allows such a database's functionality to be almost completely offloaded from the CPU to the SSD. Implementing a KV database directly in the SSD firmware avoids a lot of the overhead of implementing a KV database on top of block storage that is running on top of a traditional Flash Translation Layer, so this is another viable route to making IO more SSD-friendly. KV SSDs don't really have the cost advantages that a ZNS-only SSD can offer, but for some workloads they can provide similar performance and endurance benefits, and save some CPU time and RAM in the process.
45 Comments
View All Comments
Luminar - Thursday, August 6, 2020 - link
So if this is software, what's stopping this vendors from making this a retroactive firmware update?BinaryTB - Thursday, August 6, 2020 - link
$$$$$Luminar - Thursday, August 6, 2020 - link
If only drive controllers were jailbreakable.althaz - Friday, August 7, 2020 - link
I mean, they technically are. But it's not really worth the expense.close - Friday, August 7, 2020 - link
Storage is the kind of segment where I'd 100% take reliability over performance. Slow storage is still storage, unreliable storage is a data shredder.JlHADJOE - Friday, August 7, 2020 - link
ヽ༼ຈل͜ຈ༽ノSteven Wells - Saturday, August 8, 2020 - link
Great point @close. So many concepts of host managed storage all come down to “but Mr Drive Vendor this is fully reliable, right? Even if I totally screw up the host side management?”close - Sunday, August 9, 2020 - link
Well nothing is 100% reliable and you should always plan on the possibility of it failing. But for example "jailbreaking" the controller to use some form of custom firmware that would increase performance almost certainly at the cost of reliability is really like shooting all of your storage at its feet to make it run faster. Sooner or later you'll hit the foot.Go for something that's validated and proven if your data matters. There's no guarantee, just a better likelihood of not loosing it.
dotjaz - Friday, August 7, 2020 - link
If only jailbreak QA is better than OEM, oh wait, there is none.Billy Tallis - Thursday, August 6, 2020 - link
I think Radian might actually be doing that. In general though, adding a feature of this size and complexity in a firmware update is something your customers will want to put through a full QA/qualification cycle before deploying. And by the time a customer is done updating their software stack to use ZNS, it's probably time to buy (or start qualifying) new SSDs anyways.