In mid-2020, the NVMe Organization released the first revision of the Zoned Namespace specification (ZNS). This new specification has received a lot of attention, with promises of longer living drives that achieve higher performance under certain conditions. Since then, a number of companies have published roadmaps that include products with ZNS support. In this article, we'll review the significance of this specification and what ZNS drives are good for.
First, this specification is significant because it brings a new command set for host systems to use when accessing SSDs and to get more out of those SSDs under certain workloads.
Traditionally applications on host systems write data to the SSD, and the controller on the SSD makes decisions about where that data should be written to on the device. You may assume that when data is written to an SSD, it's written once to its new 'home' in the flash memory, and that's it. However, some important limitations of flash memory can necessitate the data to be written and re-written to the drive several times. Data can be written in relatively small units but can only be re-written after an entire, larger block of data is erased.
For example, typically, when an SSD has free space in it, an application is free to write data to the SSD, and the controller decides which block should store that data. Let's say a block has been fully written, but then the application asks to delete the data in the first half of the block and keep the data in the second half of the block. The controller will flag that 'deleted' data as being stale. It's not actually erased because the erase operation can only be performed on the whole block, and doing that would also erase the data in the second half of the block - and that's data that the application wants to preserve. In order to preserve drive capacity that data in the second half of the block may be re-written to an entirely different block, and only then will the first block be completely erased, making that space free again. This re-writing is referred to as Write Amplification. It's like a game of Tetris where the data needs to be kept efficiently and compactly without any 'gaps' of wasted flash memory.
Clearly, this re-writing of data is not without purpose since it enables more efficient use of the space on the drive. The drawback is that this re-writing effectively shortens the life of the SSD, which has a limit on the number of times that it can be overwritten. For single-level cell (SLC), multi-level cell (MLC), and triple-level cell (TLC) flash, this is not usually a concern since the endurance of the drive, that is, the number of times it can be overwritten, is extremely high. However, quad-level cell (QLC) flash drives, which have higher capacities, have lower endurance, and we need to pay close attention to managing the number of drive overwrites. This is where ZNS can become very useful.