zfs-2.2.0
Supported Platforms
- Linux: compatible with 3.10 - 6.5 kernels
- FreeBSD: compatible with releases starting from 12.2-RELEASE
New Features
-
Block cloning (#13392) - Block cloning is a facility that allows a file (or parts of a file) to be "cloned", that is, a shallow copy made where the existing data blocks are referenced rather than copied. Later modifications to the data will cause a copy of the data block to be taken and that copy modified. This facility is used to implement "reflinks" or "file-level copy-on-write". Many common file copying programs, including newer versions of
/bin/cp
on Linux, will try to create clones automatically. -
Linux container support (#12209, #14070, #14097, #12263) - Added support for Linux-specific container interfaces such as
renameat(2)
, support for overlayfs, idmapped mounts in a user namespace, and namespace delegation support for containers. -
Scrub error log (#12812, #12355) -
zpool status
will report all filesystems, snapshots, and clones affected by a shared corrupt block.zpool scrub -e
can be used to scrub only the known damaged blocks in the error log to perform a fast, targeted repair when possible. -
BLAKE3 checksums (#12918) - BLAKE3 is a modern cryptographic hash algorithm focused on high performance. It is much faster than sha256, sha512, and can be up 3x faster than Edon-R. BLAKE3 is the recommended secure checksum.
-
Corrective "zfs receive" (#9372) - A new type of
zfs receive
which can be used to heal corrupted data in filesystems, snapshots, and clones when a replica of the data already exists in the form of a backup send stream. -
Vdev properties (#11711) - Provides observability of individual vdevs in a programmatic way.
-
Vdev and zpool user properties (#11680) - Lets you set custom user properties on vdevs and zpools, similar to the existing zfs dataset user properties.
Performance
-
Fully adaptive ARC (#14359) - A unified ARC which relaxes the artificial limits imposed by both the MRU/MFU distribution and data/metadata distinction. This allows the ARC to better adjust to highly dynamic workloads and minimizes the need for manual workload-dependent tuning.
-
SHA2 checksums (#13741) - Optimized SHA2 checksum implementation to use hardware acceleration when available.
-
Edon-R checksums (#13618) - Reworked the Edon-R variants and optimized the code to make several minor speed ups.
-
ZSTD early abort (#13244) - When using the zstd compression algorithm, data that can not be compressed is detected quickly, avoiding wasted work.
-
Prefetch improvements (#14603, #14516, #14402, #14243, #13452) - Extensive I/O prefetching analysis and optimization.
-
General optimization (#14121, #14123, #14039, #13680, #13613, #13606, #13576, #13553, #12789, #14925, #14948) - Numerous performance improvements throughout.
Additional Information
-
Documentation - OpenZFS documentation for Linux and FreeBSD.
-
Change log - Complete v2.1.0 - v2.2.0 change log
Thanks to 202 contributors
git shortlog -s zfs-2.1.0..zfs-2.2.0 639 Ahelenia Ziemiańska 1 Aidan Harris 5 Akash B 10 Alan Somers 1 Alejandro Colomar 2 Alek Pinchuk 4 Aleksa Sarai 8 Alexander Lobakin 126 Alexander Motin 22 Allan Jude 2 Alyssa Ross 23 Ameer Hamza 1 Andrea Gelmini 2 Andrea Righi 1 Andreas Vögele 4 Andrew Innes 1 Andrew Turner 3 Andrew Walker 4 Andriy Gapon 1 Anton Gubarkov 6 Antonio Russo 1 Armin Wehrfritz 3 Arshad Hussain 1 Arun KV 22 Attila Fülöp 1 Benedikt Neuffer 1 Brandon Thetford 8 Brian Atkinson 183 Brian Behlendorf 16 Brooks Davis 1 Charles Suh 3 Chris Lindee 1 Chris Zubrzycki 12 Christian Schwarz 6 Chunwei Chen 1 Clemens Lang 26 Coleman Kane 3 Colm Buckley 2 D. Ebdrup 40 Damian Szuberski 1 Damiano Albani 1 Daniel Berlin 1 Daniel Hiepler 1 Daniel Kolesa 1 Daniel Reichelt 1 Daniel Stevenson 1 David Hedberg 1 Dimitri John Ledkov 3 Dimitry Andric 1 Dmitri John Ledkov 3 Don Brady 1 Doug Rabson 1 Edmund Nadolski 1 Ethan Coe-Renner 6 Fedor Uporov 1 Felix Dörre 4 Finix Yan 1 Francesco Mazzoli 36 George Amanakis 20 George Melikov 7 George Wilson 2 Georgy Yakovlev 1 Gian-Carlo DeFazio 4 Gionatan Danti 1 Glenn Washburn 1 Gordon Bergling 1 Graham Perrin 3 Gregory Bartholomew 1 Han Gao 1 Harald van Dijk 1 Harry Sintonen 1 Herb Wartens 2 InsanePrawn 1 Jason Harmening 1 Jason King 1 Jeremy Visser 4 Jitendra Patidar 1 John Poduska 8 John Wren Kennedy 1 Jonathon Fernyhough 24 Jorgen Lundman 1 José Luis Salvador Rufo 1 Julian Brunner 6 Justin Gottula 1 Justin Hibbits 2 Ka Ho Ng 3 Kay Pedersen 1 Kevin Bowling 4 Kevin Jin 1 Kristof Provost 1 Krzysztof Piecuch 3 Kyle Evans 1 Laevos 2 Laura Hild 1 Laurențiu Nicola 1 Lauri Tirkkonen 1 Luís Henriques 2 Manoj Joseph 1 Marcel Menzel 1 Marcin Skarbek 4 Mariusz Zaborski 20 Mark Johnston 1 Mark Maybee 7 Martin Matuška 2 Martin Rüegg 23 Mateusz Guzik 6 Mateusz Piotrowski 1 Matt Fiddaman 12 Matthew Ahrens 1 Matthew Thode 1 Matthias Blankertz 1 Max Zettlmeißl 1 Michael Franzl 1 Michal Vasilek 3 Mike Swanson 1 Minsoo Choo 1 Mohamed Tawfik 1 Nathaniel Wesley Filardo 1 Neal Gompa (ニール・ゴンパ) 1 Nick Terrell 2 Olaf Faaland 1 Pablo Correa Gómez 1 Palash Gandhi 31 Paul Dagnelie 5 Paul Zuchowski 1 Pavel Snajdr 21 Pawel Jakub Dawidek 2 Peter Levine 1 Phil Kauffman 1 Philipp Riederer 2 Ping Huang 1 Piotr Kubaj 2 Piotr P. Stefaniak 2 Prakash Surya 1 Rafael Kitover 1 Reno Reckling 2 Riccardo Schirone 83 Rich Ercolani 1 Richard Laager 197 Richard Yao 40 Rob Norris 11 Rob Wing 1 Roberto Ricci 1 Romain Dolbeau 1 Ryan Hirasaki 1 Ryan Lahfa 88 Ryan Moeller 1 Sam Hathaway 1 Sam James 1 Samuel Wycliffe 1 Samuel Wycliffe J 1 Satadru Pramanik 5 Savyasachee Jha 1 Scott Colby 1 Sean Eric Fagan 11 Serapheim Dimitropoulos 1 Shaan Nobee 4 Stoiko Ivanov 1 Stéphane Lesimple 2 Teodor Spæren 1 TerraTech 1 Till Maas 1 Timothy Day 37 Tino Reichardt 2 Tomohiro Kusumi 25 Tony Hutter 1 Tony Nguyen 6 Toomas Soome 1 Toyam Cox 1 Trevor Bautista 16 Umer Saleem 8 Val Packett 1 Valmiky Arquissandas 3 Vince van Oosten 1 Violet Purcell 1 Vipin Kumar Verma 1 Volker Mauel 2 Václav Skála 9 WHR 1 Walter Huf 1 Will Andrews 1 Windel Bouwman 1 Wojciech Małota-Wójcik 2 Xinliang Liu 1 Yann Collet 1 Yanping Gao 13 Youzhong Yang 4 Yuri Pankov 1 Zach Dykstra 1 Zhu Chuang 1 buzzingwires 2 chrisrd 1 grembo 1 hedong zhang 1 hping 1 illiliti 1 jokersus 1 jumbi77 1 naivekun 1 ofthesun9 1 omni 1 Érico Nogueira
-
Module options - The default values for the module options were selected to yield good performance for the majority of workloads and configurations. They should not need to be tuned for most systems but are available for performance analysis and tuning. See the module parameters documentation for the complete list of the options and what they control.
New module options
- dbuf_metadata_cache_shift
- dbuf_mutex_cache_shift
- ddt_zap_default_bs
- ddt_zap_default_ibs
- metaslab_force_ganging_pct
- metaslab_preload_limit
- metaslab_preload_pct
- spa_upgrade_errlog_limit
- zap_micro_max_size
- zfs_arc_meta_balance
- zfs_blake3_impl
- zfs_brt_prefetch
- zfs_fletcher_4_impl
- zfs_max_dataset_nesting
- zfs_recv_best_effort_corrective
- zfs_scrub_error_blocks_per_txg
- zfs_vdev_def_queue_depth
- zfs_vdev_failfast_mask
- zfs_vdev_max_ms_shift
- zfs_xattr_compat
- zfs_zil_saxattr
- zil_maxcopied
- zstd_abort_size
- zstd_earlyabort_pass
- zvol_enforce_quotas
- spl_taskq_thread_timeout_ms
Removed module options
Modified module options