Abstract
The new Zoned Namespaces (ZNS) feature set was recently ratified by NVM Express. This extension to the NVMe standard opens new possibilities for reducing flash storage costs and for achieving better system performance. These design goals, which are very often contradictory, are met by ZNS by leveraging the existing zoned block device abstraction first introduced with SMR HDDs. There is a great interest in this technology from cloud providers, file system developers and the storage engineering community as a whole. Developing new applications or adapting existing new applications to NVMe ZNS constraints can be a challenging task depending on the design of the target application. To facilitate development activities, using virtual devices can be of great help, enabling an entire system IO stack debugging and step-by-step execution. The recently published QEMU PCI NVMe emulation driver code extension provides a comprehensive support for ZNS to meet this goal. In this talk, an overview of NVMe ZNS protocol and features will be given and their implementation in QEMU ZNS device emulation driver explained. Examples of how to configure and use ZNS in QEMU will be given, first in its simplest form and then in more advanced configurations. Examples will be shown through a live demonstration using QEMU running on a laptop.
Learning Objectives
Briefly explain how ZNS uses zoned concept to simplify flash management,Explain the audience the new ZNS features that have to be emulated,Talk about software implementation of ZNS code extension in QEMU PCI driver,Show how to configure ZNS namespaces with the new QEMU code addition,Demonstrate in practice how QEMU ZNS namespaces can be manipulated at the host