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.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *