Po več kot dveh letih razvoja je bil objavljen izid projekta OpenZFS 2.2, ki nadgrajuje implementacijo datotečnega sistema ZFS za Linux in FreeBSD. Projekt si je pridobil sloves kot „ZFS on Linux“ in je bil prej omejen na razvoj modula za jedro Linux, toda po prenosu podpore za FreeBSD je bil priznan kot osnovna implementacija OpenZFS in preimenovan.
Delovanje OpenZFS je preverjeno s jedri Linux od 3.10 do 6.5 in z vsemi vejami FreeBSD, ki se začnejo z 12.2-RELEASE. Koda se distribuira pod prosto licenco CDDL. OpenZFS se že uporablja v FreeBSD in je vključeno v distribucije Debian, Ubuntu, Gentoo, Sabayon Linux in ALT Linux. Paketi z novo različico bodo v kratkem pripravljeni za glavne distribucije Linuxa, vključno z Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS zagotavlja implementacijo komponent ZFS, povezanih tako z delovanjem datotečnega sistema kot z delovanjem upravljalnika volumenov. Zlasti so uresničene komponente: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) in ZPL (ZFS POSIX Layer). Dodatno projekt omogoča uporabo ZFS kot backend za klusterno datotečno sistem Lustre. Delo projekta temelji na izvirni kodi ZFS, uvoženi iz projekta OpenSolaris in razširjeni z izboljšavami in popravki skupnosti Illumos. Projekt se razvija s sodelovanjem zaposlenih na Lawrence Livermore National Laboratory po pogodbi z ameriškim Ministrstvom za energijo.
Koda se distribuira pod prosto licenco CDDL, ki ni združljiva z GPLv2, kar ne omogoča integracije OpenZFS v glavno vejo jedra Linux, saj mešanje kode pod licencami GPLv2 in CDDL ni dovoljeno. Da bi zaobšli to licenčno nezdružljivost, so se odločili, da bodo izdelek celotno distribuirali pod licenco CDDL v obliki ločeno prenosnega modula, ki se dobavlja ločeno od jedra. Stabilnost kode baze OpenZFS je ocenjena kot primerljiva z drugimi datotečnimi sistemi za Linux.
Glavne spremembe:
- Dodana je mehanizam kloniranja blokova, koji omogućava kreiranje kopije datoteke ili njenog dela bez dupliranja podataka, koristeći u drugoj kopiji linkove na već postojeće blokove podataka izvorne datoteke bez njihovog fizičkog kopiranja. U slučaju izmene izvorne datoteke ili njene kopije, vrši se kopiranje blokova i unošenje izmena u kreirane kopije (copy-on-write režim na nivou datoteka). Na bazi mehanizma kloniranja implementirana je operacija reflink, koja se može koristiti za automatsko kreiranje klonova u različitim alatima za kopiranje, na primer, u novim verzijama /bin/cp u Linuxu.
- Dodana je podrška za tehnologije koje se koriste za kontejnersku izolaciju u Linuxu, kao što su sistemski poziv renameat, FS overlayfs, mapiranje identifikatora korisnika prilikom montaže i delegacija prostora imena za kontejnere.
- Implementiran je log grešaka, uočenih prilikom izvršavanja operacija provere kontrolnih suma (scrub). Prilikom izvršavanja komande „zpool status“ prikazuju se informacije o svim FS, snaphot-ima i klonovima koje zahvata oštećen blok. Za pokušaj brzog vraćanja poznatih oštećenih blokova može se koristiti komanda „zpool scrub -e“.
- Dodana je mogućnost korišćenja za kontrolne sume kriptografske hash funkcije BLAKE3, koja se odlikuje vrlo visokom brzinom izračunavanja hasha (tri puta brže od Edon-R i znatno brže od sha256 i sha512) uz obezbeđivanje pouzdanosti na nivou SHA-3.
- Implementirana je operacija „zfs receive -c“, koju je moguće koristiti za obnavljanje oštećenih podataka (ne metapodataka) u FS, snaphot-ima i klonovima, u slučajevima kada postoji replikovana rezervna kopija, ranije sačuvana komandom „zfs send“.
- Dodana je podrška za softversko postavljanje i čitanje svojstava za pojedinačne virtuelne diskove vdev.
- Dodana je mogućnost vezivanja za vdev i zpool proizvoljnih korisničkih svojstava, po uzoru na korisnička svojstva za zfs dataset.
- Unapređena je implementacija adaptivnog keša ARC (Adaptive Replacement Cache), koja poboljšava performanse operacija čitanja. ARC sada bolje reaguje na visoke opterećenja i minimizira potrebu za ručnom optimizacijom postavki.
- Dodana je podrška za mehanizme hardverske akceleracije izračunavanja kontrolnih suma SHA2.
- Prepisana in optimizirana izvedba kontrolnih zneskov Edon-R.
- Pri uporabi algoritma zstd za stiskanje podatkov je bilo pospešeno določanje situacij, v katerih je stiskanje brez smisla (podatki se ne dajo stisniti).
- Izboljšave so bile uvedene v mehanizem predhodnega nalaganja (Prefetch), kar pospešuje delovanje pri intenzivnem vnosu/iznosu.
- Uvedena je bila serija splošnih optimizacij, ki povečujejo zmogljivost.
Izvor: opennet.ru
