A release of the OpenZFS 2.1 project has been published, which develops the implementation of the ZFS file system for Linux and FreeBSD. The project gained recognition as 'ZFS on Linux' and was previously limited to developing a module for the Linux kernel, but after adding support for FreeBSD, it was recognized as the primary implementation of OpenZFS and was stripped of 'Linux' in its name.
OpenZFS has been tested with Linux kernels from 3.10 to 5.13 and all branches of FreeBSD starting from 12.2-RELEASE. The code is distributed under the open-source CDDL license. OpenZFS is already used in FreeBSD and is included in the distributions of Debian, Ubuntu, Gentoo, Sabayon Linux, and ALT Linux. Packages with the new version will soon be prepared for the main Linux distributions, including Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS provides an implementation of ZFS components related to both the operation of the file system and the functioning of the volume manager. In particular, the following components are implemented: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume), and ZPL (ZFS POSIX Layer). Additionally, the project offers the ability to use ZFS as a backend for the Lustre clustered file system. The project's developments are based on the original ZFS code imported from the OpenSolaris project and enhanced with improvements and fixes from the Illumos community. The project is evolving with the participation of staff from the Lawrence Livermore National Laboratory under a contract with the U.S. Department of Energy.
The code is distributed under the CDDL open-source license, which is incompatible with GPLv2, preventing the integration of OpenZFS into the main branch of the Linux kernel, as mixing code under GPLv2 and CDDL licenses is not permissible. To circumvent this licensing incompatibility, it was decided to distribute the product entirely under the CDDL license as a separately loadable module, which is delivered separately from the kernel. The stability of the OpenZFS codebase is assessed as comparable to other file systems for Linux.
Key Changes:
- Support for dRAID (Distributed Spare RAID) technology has been added, which is a variant of RAIDZ with integrated distributed block processing for hot spare recovery. dRAID inherits all the advantages of RAIDZ but allows for a significant increase in the speed of storage resilvering and redundancy recovery in the array. The virtual dRAID storage is formed from several internal RAIDZ groups, each containing data storage devices and parity block storage devices. These groups are distributed across all drives to optimize the use of available disk bandwidth. Instead of a separate drive for hot spare recovery, dRAID employs the concept of logical distribution of hot spare blocks across all the drives in the array.

- The 'compatibility' property ('zpool create -o compatibility=off|legacy|file[,file…] pool vdev') has been implemented, allowing the administrator to choose a set of features to enable in the pool to create portable pools and maintain compatibility between pools on different versions of OpenZFS and different platforms.
- The ability to save pool statistics in InfluxDB format has been provided, optimized for storing, analyzing, and manipulating data in the form of time series (parameter value snapshots at specified intervals). The command 'zpool influxdb' is suggested for export to InfluxDB format.
- Support for hot adding memory and CPUs has been added.
- New commands and options:
- 'zpool create -u' — prevents automatic mounting.
- 'zpool history -i' — reflects the duration of execution for each command in the operation history.
- 'zpool status' — warning added for disks with non-optimal block size.
- 'zfs send —skip-missing|-s' — ignores missing snapshots during the stream sending process for replication.
- 'zfs rename -u' — renames FS without remounting.
- Support for L2ARC statistics has been added to arcstat, along with options '-a' (all) and '-p' (parsable).
- Optimizations:
- Improved performance of interactive input/output.
- Prefetching speed has been accelerated for workloads related to parallel data access.
- Scalability has been improved by reducing lock contention.
- Import time for the pool has been reduced.
- Reduced fragmentation of ZIL blocks.
- Enhanced performance of recursive operations.
- Improved memory management.
- Accelerated kernel module loading.
Source: opennet.ru

