NVMe Zoned Namespaces¶
NVMe™ Zoned Namespace (ZNS) is a technical proposal under standardization by the NVM Express organization. Members of the NVM Express organization can access the current draft of this new specification.
NVMe Zoned Namespaces (ZNS) divides the logical address space of a namespace into zones. Each zone provides an LBA range that must be written sequentially and if written again must be explicitly reset. This operation principle allows the creation os namespaces that expose the natural boundaries of the device and offload management of internal mapping tables to the host.
The NVMe Zoned Namespaces (ZNS) specification introduce a new type of NVMe drive that provide several benefits over traditional NVMe SSDs. These benefits are as follow.
- Reduced write amplification
- Allow reducing media over-provisioning
- Reduced internal controller DRAM usage
- Improved throughput and latency
ZNS SSDs achieve these improvements by exposing a namespace logical address space using zones which, similarly to HDDs Shingled Magnetic Recording (SMR) zones, must be written sequentially and explicitly reset before rewritting. This principle is shown in the figure below.
NVMe Zoned Namespace data placement in zones
With the zones aligned to the internal physical properties of the device, several inefficiencies in the placement of data can be eliminated. In particular, the problem commonly known as the log-on-log challenge is naturally solved.
The zoned block interface presented by ZNS drives allows the host and ZNS SSD to collaborate and eliminate multiple layers of indirection.
The internals of Solid State Drives are such that they implement a log-structured data structure, where data is written sequentially to the media. The interface between the host and device is limited to very few commands, mainly read, write, and trim (discard), which can be considered a narrow storage interface. The interface does not allow the host to understand the physical characteristics of the media within the SSD, and therefore often writes inefficiently to the device.
By using ZNS, the device can expose a set of zones with the requirement that each zone must be written sequentially, matching the physical SSD media requirements. This allows the host and device to collaborate and place data efficiently on the SSD.
Typically, conventional SSDs overcome the shortcomings of the narrow read/write interface using physical media over-provisioning, such that when the log-structured "file-system" blocks within the device must be garbage collected, there is a high probability of finding blocks with invlaid data that can be easily rewritten. Typically, SSDs are over-provisioned from 7% to 28% of the exposed capacity.
By integrating with zones, the host places data efficiently, and therefore, high over-provisioning for excellent performance is no longer necessary. The lower over-provisioning improves the cost of the device as more storage space is exposed to the host.
Typically, a conventional SSD controller manages a fully-associative mapping table used to define the mapping of the host visible logical blocks to a physical address on the media. This table generally is about 1GB in size per 1TB of media and is stored in the controller DRAM of the SSD (for performance reasons).
As ZNS SSDs expose logical blocks through zones that can only be writen sequentially, the device controller can now reduce the size of the mapping table while still providing the same benefits of being able to move data internally, without notifying the host.
Linux Ecosystem Implications¶
NVMe Zoned Namespaces will be compatible with Linux® kernel zoned block device interface. The kernel and userspace tools for zoned block devices will be updated to enable NVMe Zoned Namespaces support when the specification is ratified and published.
Further information on NVMe Zoned Namespace can be seen in the following presentation given at the OCP 2019 Global Summit.
Zoned Namespace Presentation at the OCP 2019 Global Summit