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.

The Software Model Ecosystem Status
Comments Locked

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.

Log in

Don't have an account? Sign up now