Support for zone storage devices in various versions of Linux-based operating systems

In a previous blog post, we covered the concept of zoned storage and the benefits of this technology. But how ready is your IT infrastructure for its implementation? Although work on support for zoned storage devices in Linux-based operating systems began in 2014, some distributions still fail to fully support such drives. To make it easier for you to navigate, we have prepared today’s material, which describes in detail the features of the implementation of zonal data storage in various versions of kernels and popular Linux distributions.
Recommended Linux Kernel Versions
Support for zoned block storage was first introduced in Linux kernel 4.10. Initially, it was limited to a ZBD (Zoned Block Device) user interface at the block level, the ability to manage the sequential write queue at the SCSI level, and native support for the F2FS file system. Subsequent kernels include additional features and tools to optimize work with zone storage devices:
- 4.13.0 – added dm-zoned zoned block device mapper;
- 4.16.0 – implemented support for block infrastructure with multiple queues;
- 5.6.0 – added support for the zonefs file system, which allows working with separate zones of zone block devices as with regular files;
- 5.8.0 – Introduces a generic block-level interface that supports Zone Append write operations; it became possible to emulate these operations at the SCSI level using ordinary write commands;
- 5.9 – Added support for the NVMe ZNS (Zoned Name Spaces) command set.
The chronology of these changes can be easily traced in the diagram below.

Considering the above, when choosing an operating system, you should give preference to a distribution that uses the latest stable version of the kernel, since it will include all the available functions and tools for working with zone block devices, and also contain fixes for all problems and errors known at the time of release. … If you plan to use LTS versions of Linux, then distributions of operating systems based on kernels 4.14, 4.19 and 5.4 will be the best choice for you, since backports of all patches released for the main, currently being developed revision of the kernel will be guaranteed to be applied to them.
Supported Linux distributions
Here are some comparison tables to help you assess the level of support for zoned block devices in various Linux distributions that come with pre-compiled binary kernels.
Fedora

Fedora is an operating system developed by the Fedora Project community under the auspices of Red Hat. This distribution first received support for the ZBD interface in version 26. Starting with revision 27, Fedora also includes dm-zoned, compiled as a preloaded kernel module. The latest stable release, Fedora 33, adds support for the NVMe ZNS command set.
Distribution kit | Core | Supported technologies | ||
ZBD | dm-zoned | ZNS | ||
Fedora 26 (EOL) | 4.11 | Yes | Not | Not |
Fedora 27 (EOL) | 4.13 | Yes | Yes | Not |
Fedora 28 | 4.16 | Yes | Yes | Not |
Fedora 29 | 4.18 | Yes | Yes | Not |
Fedora 30 | 5.0 | Yes | Yes | Not |
Fedora 31 | 5.3 | Yes | Yes | Not |
Fedora 32 | 5.6 | Yes | Yes | Not |
Fedora 33 | 5.8 | Yes | Yes | Yes |
Debian

Debian was one of the first Unix-like operating systems based on the Linux kernel and had a significant impact on the development of this type of OS in general. Support for zone block devices has appeared in this distribution since version 10, codenamed Buster.
Distribution kit | Core | Supported technologies | |
ZBD | dm-zoned | ||
Debian 9 (Stretch) | 4.9 | Not | Not |
Debian 10 (Buster) | 4.19 | Yes | Yes |
Ubuntu

Ubuntu is one of the most popular free Linux distributions, the code for which was originally based on Debian. New stable versions of the operating system are released every 6 months, and releases with long-term support (LTS) are released every two years. The ability to work with zoned block devices via ZBD was first implemented in version 17.04 of Zesty Zapus with the transition to kernel 4.10, and in the next release support for dm-zoned was added.
Distribution kit | Core | Supported technologies | |
ZBD | dm-zoned | ||
12.04 LTS (Precise Pangolin) | 3.2 | Not | Not |
14.04 LTS (Trusty Tahr) | 3.13 | Not | Not |
16.04 LTS (Xenial Xerus) | 4.4 | Not | Not |
17.04 (Zesty Zapus) | 4.10 | Yes | Not |
17.10 (Artful Aardvark) | 4.13 | Yes | Yes |
18.04 LTS (Bionic Beaver) | 4.15 | Yes | Yes |
18.10 (Cosmic Cuttlefish) | 4.18 | Yes | Yes |
19.04 (Disco Dingo) | 5.0 | Yes | Yes |
19.10 (Eoan Ermine) | 5.3 | Yes | Yes |
04/20 LTS (Focal Fossa) | 5.4 | Yes | Yes |
20.10 (Groovy Gorilla) | 5.8 | Yes | Yes |
Red Hat Enterprise Linux

Red Hat Enterprise Linux is an operating system from Red Hat for corporate users. Its distinctive features are extended commercial support (up to 10 years with the possibility of extending up to 13 years) and high stability of work, the price for which is extremely rare global updates: even the most current 8.3 distribution kit is based on the 4.180-240 kernel.
Although this version already supports ZBD and includes dm-zoned, in RHEL the corresponding options are disabled by default, so working with zonal devices will not work out of the box – the kernel will have to be recompiled first.
Distribution kit | Core | Supported technologies | |
ZBD | dm-zoned | ||
RHEL 8 | 4.180-80 | Not | Not |
RHEL 8.1 | 4.180-147 | Not | Not |
RHEL 8.2 | 4.180-193 | Not | Not |
RHEL 8.3 | 4.180-240 | Not | Not |
As for RHEL 6 and 7, since the listed releases were based on kernels 2.6.32 and 3.10, respectively, they are not able to work correctly with zoned storage devices.
Distribution kit | Core | Supported technologies | |
ZBD | dm-zoned | ||
RHEL 6.0 | 2.6.32-71 | Not | Not |
RHEL 6.1 | 2.6.32-131 | Not | Not |
RHEL 6.2 | 2.6.32-220 | Not | Not |
RHEL 6.3 | 2.6.32-279 | Not | Not |
RHEL 6.4 | 2.6.32-358 | Not | Not |
RHEL 6.5 | 2.6.32-431 | Not | Not |
RHEL 6.6 | 2.6.32-504 | Not | Not |
RHEL 6.7 | 2.6.32-573 | Not | Not |
RHEL 6.8 | 2.6.32-642 | Not | Not |
RHEL 6.9 | 2.6.32-696 | Not | Not |
RHEL 6.10 | 2.6.32-754 | Not | Not |
RHEL 6 ELS + | 2.6.32-754 | Not | Not |
RHEL 7.0 | 3.10.0-123 | Not | Not |
RHEL 7.1 | 3.10.0-229 | Not | Not |
RHEL 7.2 | 3.10.0-327 | Not | Not |
RHEL 7.3 | 3.10.0-514 | Not | Not |
RHEL 7.4 | 3.10.0-693 | Not | Not |
RHEL 7.5 | 3.10.0-862 | Not | Not |
RHEL 7.6 | 3.10.0-957 | Not | Not |
RHEL 7.7 | 3.10.0-1062 | Not | Not |
RHEL 7.8 | 3.10.0-1127 | Not | Not |
RHEL 7.9 | 3.10.0-1160 | Not | Not |
CentOS

CentOS is a community-developed operating system based on the Red Hat Enterprise Linux source code. The numbering of the CentOS and RHEL distributions, as well as the capabilities of the respective operating system releases, are 100% the same. As with Red Hat Enterprise Linux, support for zoned block devices was introduced in CentOS 8, but the kernel will have to be recompiled to activate the required options.
SUSE Linux Enterprise Server

SUSE Linux Enterprise Server (SLES) is an operating system aimed at corporate users, which was developed by the German company SUSE on the basis of the distribution kit of the same name. Major versions of SLES are released at intervals of 2-3 years, while service packs are released approximately every 12 months. Full support for zoned block devices has been added to SUSE Linux Enterprise Server since version 12.4.
Distribution kit | Core | Supported technologies | |
ZBD | dm-zoned | ||
11.3 | 3.0.76 | Not | Not |
11.4 | 3.0.101 | Not | Not |
12.0 | 3.12 | Not | Not |
12.1 | 3.12 | Not | Not |
12.2 | 4.4 | Not | Not |
12.3 | 4.4 | Not | Not |
12.4 | 4.12 | Yes | Yes |
15 | 4.12 | Yes | Yes |
15.1 | 4.12.14 | Yes | Yes |
15.2 | 5.3.18 | Yes | Yes |
openSUSE

openSUSE (formerly SUSE Linux and SuSE Professional) is a popular Linux distribution sponsored by SUSE Linux GmbH. At the heart of the openSUSE concept is the creation of user-friendly open source tools for software developers and system administrators.
openSUSE has received support for the ZBD interface required for working with zoned block storages since Leap 15.0, and dm-zoned has been added to the 5.3 kernel in Leap 15.2.
Distribution kit | Core | Supported technologies | |
ZBD | dm-zoned | ||
Leap 15.0 | 4.12 | Yes | Not |
Leap 15.1 | 4.12 | Yes | Not |
Leap 15.2 | 5.3 | Yes | Yes |
Tumbleweed | 5.9+ | Yes | Yes |
Does your operating system support zone storage?
As mentioned above, the Zoned Block Device (ZBD) interface supporting the T10 ZBC and T13 ZAC standards has been added to the Linux kernel since version 4.10, so the first thing to do is check the current version. kernel using the terminal command uname. For example, using Fedora 29, the output from this command will look like this:
uname -r
5.0.13-200.fc29.x86_64
In our case, the fifth version of the kernel is used, in which support for zone storage devices has already been added. However, in order for such drives to be able to interact with the operating system, the kernel must be initially compiled with the CONFIG_BLK_DEV_ZONED parameter active.
To check if this option is enabled, you can directly access the operating system configuration file located in the / boot or / directory, or use the command:
cat /boot/config-`uname -r` | grep CONFIG_BLK_DEV_ZONED
or
cat /lib/modules/`uname -r`/config | grep CONFIG_BLK_DEV_ZONED
For kernels exporting configuration settings via the proc virtual file system, the following commands can be used:
modprobe configs
cat /proc/config.gz | gunzip | grep CONFIG_BLK_DEV_ZONED
or
modprobe configs
zcat /proc/config.gz | grep CONFIG_BLK_DEV_ZONED
If the corresponding option is active, you will see the following output:
CONFIG_BLK_DEV_ZONED=y
If the terminal displays
CONFIG_BLK_DEV_ZONED=n
this means that support for zoned block devices is disabled and the kernel must be recompiled first. By the way, if you try to run the above commands on an operating system that uses a kernel earlier than 4.10, their output will be empty.
The CONFIG_BLK_DEV_ZONED configuration parameter controls support for zone block device emulation at the null_blk driver level, SCSI support for ZBC and ZAC SMR drives, and access to a set of zone namespace commands required to work with NVMe SSDs. As for the control of the order of the write commands, everything turns out to be a little more complicated here.
Initially (in kernels from 4.10 to 4.15 inclusive) this function was implemented at the kernel level. However, starting with version 4.16, control of the order of write commands was transferred to the block-level I / O schedulers deadline (works with a single command queue) and mq-deadline (deadline implementation using blk-mq, supports multiple queues), the use of which has become mandatory for correct operation zone storage devices. Later, with the release of kernel 5.0, deadline support was completely removed and the mq-deadline scheduler became the main solution for working with zoned storage devices.
Thus, if you are using an operating system based on kernel 4.16 or later, you need to make sure that deadline or mq-deadline is selected as the I / O scheduler. To do this, just use the following command:
cat /sys/block/sdb/queue/scheduler
[mq-deadline] kyber bfq none
If a different scheduler is used by default, you can change it to the desired one by entering the command:
echo deadline > /sys/block/sdb/queue/scheduler
or
echo mq-deadline > /sys/block/sdb/queue/scheduler
Now you can be confident that the operating system you are using will be able to communicate adequately with zoned storage devices.