ZFSonLinux 0.8: features, stabilization, intrigues. And trim

Just days ago, the fresh stable version of ZFSonLinux was released, a project that is now central to the development of OpenZFS. Farewell, OpenSolaris; hello to the fierce GPL-CDDL incompatible world of Linux.

ZFSonLinux 0.8: features, stabilization, intrigues. And trim
Below is an overview of the most interesting things (as expected, 2200 commits!), and for dessert β€” a bit of intrigue.

New features

Of course, the most anticipated is native encryption. Now you can encrypt only the necessary datasets with the built-in ZFS encryption, and (in my opinion, importantly) β€” you can send encrypted data via zfs send and WITHOUT decrypting check data integrity with built-in tools; all the capabilities for ensuring data integrity in ZFS will be at your disposal!

Next in importance, we should mention the long-awaited TRIM. Yes, it took a long time to reach production. Partly because the issue of SSD wear is not as critical for CoW file systems. But now we can all rest easy β€” zpool trim will save our delicate flash drives.

Now you can delete accidentally added vdev arrays from the pool (but only if they are sparse or mirror). A useful little feature.

Next in our hit parade is pool checkpoints. In short β€” snapshots for the entire state of the pool, BUT allowing the rollback of changes not only to data but also to features enabled on the pool and changes in structure. Another way to ensure safety.

Pool initialization β€” filling the underlying storage with zeros. Useful for working in environments with thin-provisioned disks to explicitly allocate space and avoid unexpected drops in performance later.

Project accounting and quota β€” in the existing quota mechanism, it is now possible to use division into projects.

Channel programs β€” the ability to perform administrative tasks atomically using Lua scripts. There are limits on execution time and memory. If you are into automation β€” this is for you.

Direct IO β€” for simplicity, Direct IO work was integrated; nothing inside changed (just calls go directly around the cache), but now software wanting to operate in this mode will not complain.

Project Pyzfs merged into the main repository and taken under the wing of the ZFSonLinux project. Now there are more tools for management from Python (and it will be more stable in terms of module support). Also, many Python scripts have been adapted for Python3.

And now the delicious part β€” performance

Now during scrub and resilver operations, metadata is read first, and only then the data in the most comprehensive form. serial. This ensures that array recovery and integrity checks are performed at maximum speed.

Allocation classes β€” vdev arrays now have a type of storage device, allowing the separation of metadata / deduplication tables (DDT) / data blocks less than X KBytes onto a dedicated vdev array from more performance-oriented disks. More speed to the god of speed! (and indeed β€” this capability will be very useful in the near future DRAID).

Many administrative commands now work faster due to targeted metadata caching (for example, zfs list, zfs get).

The data allocation process is now parallelized, and now multiple allocators are created for each free space slab (metaslab). With NVMe, everything won't be maximized, but it will improve.

Deferred integrity recovery of the array will prevent overloading the array by simultaneously rebuilding multiple disks, doing so sequentially instead. This will reduce both the impact on performance and the rebuild time.

When importing pools with a large number of volumes the speed of their registration in the system has increased.

Also QAT now allows for the offloading of encryption and checksum computations.

Plus a bunch of minor changes (after all, 2000+ commits in the release!).

And for dessert β€” intrigue

Although ZFS on Linux rapidly adds support for new Linux kernels (currently supporting versions 2.6.32 β€” 5.1*), kernel maintainers show little interest in assisting third-party modules (…we do not care at all about
external kernel modules…
β€” greg k-h). Thus, the kernel calls required for effective operation in branch 5.0 were changed to GPL-only. . In kernels with this patch, the performance of ZFS will be significantly worse. The fact that this functionality can be implemented on the module side is a saving grace, which will likely be done. For now, you can take a cue from NixOS β€” they simply rolled back the patch in the kernel. πŸ™‚

The project has also introduced a Code of Conduct, which sparked a wave of debates. But we stood firm πŸ™‚

Wishing everyone productive backups and stable releases!

Useful links:
β€” release on Github
β€” my introduction to ZFS

Source: habr.com

Buy reliable website hosting with DDoS protection, VPS VDS servers πŸ”₯ Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster