Po 11 měsících vývoje byl zveřejněn nový projekt OpenZFS 2.4.0, který vyvíjí implementaci souborového systému ZFS pro Linux a FreeBSD. Projekt získal popularitu jako "ZFS on Linux" a dříve se omezoval pouze na vývoj modulu pro jádro Linux, ale po sloučení s kódem z FreeBSD byl uznán jako hlavní implementace OpenZFS a přejmenován.
Fungování OpenZFS bylo ověřeno s jádry Linux od 4.18 do 6.18 a se všemi větvemi FreeBSD od verze 13.3. Kód je distribuován pod svobodnou licencí CDDL. OpenZFS se již používá ve FreeBSD a je součástí distribucí Debian, Ubuntu, Gentoo, NixOS a ALT Linux. Balíčky s novou verzí budou brzy připraveny pro hlavní distribuce Linux, včetně Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS poskytuje implementaci komponent ZFS, které se vztahují jak k fungování souborového systému, tak k fungování správce svazků. Byly implementovány komponenty: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) a ZPL (ZFS POSIX Layer). Projekt také umožňuje použití ZFS jako backendu pro clusterový souborový systém Lustre. Práce OpenZFS vycházejí z původního kódu ZFS, importovaného z projektu OpenSolaris a rozšířeného o vylepšení a opravy od komunity Illumos. Projekt se rozvíjí za účasti zaměstnanců Livermorské národní laboratoře na základě smlouvy s Ministerstvem energetiky USA.
Kód je distribuován pod svobodnou licencí CDDL, která je nekompatibilní s GPLv2, což brání integraci OpenZFS do hlavní větve jádra Linuxu, protože míchání kódu pod licencemi GPLv2 a CDDL není přípustné. Aby se vyřešila licenční nekompatibilita, bylo rozhodnuto distribuovat produkt pro Linux výhradně pod licencí CDDL jako samostatně stahovatelný modul dodávaný odděleně od jádra. Stabilita kódové základny OpenZFS je hodnocena jako srovnatelná s jinými FS pro Linux.
Hlavní změny:
- Byla zavedena možnost nastavení výchozích kvót pro uživatele, skupiny a projekty. V minulých verzích bylo možné nastavovat kvóty pouze jednotlivě pro každého uživatelského identifikátora. V nové verzi je možné nastavit výchozí hodnotu, která bude použita, pokud nebyla pro konkrétního uživatele kvóta nastavena.
- Byla přidána možnost přepnutí režimu přímého vstupu/výstupu (O_DIRECT, Direct I/O) na použití lehkého mechanismu nekešovaného vstupu/výstupu (Uncached I/O) pro požadavky, které nejsou zarovnány na hranici paměťové stránky, které Direct I/O nepodporuje.
- Byl navržen nový jednotný algoritmus pro omezení rychlosti zápisových operací a umístění bloků, který snižuje fragmentaci vdev (Virtual Device) tím, že agreguje několik zápisových operací a používá pro ně větší, souvislé volné oblasti místo ukládání výsledků jednotlivých zápisových operací do malých volných oblastí.
- Byla zvýšena výkonnost šifrování díky použití instrukcí AVX2 v implementaci algoritmu AES-GCM. V provedených testech dosahuje zrychlení až 80%.
- Bylo povoleno umísťování ZIL bloků (ZFS Intent Log) nejen na běžné vdev nebo na samostatné zařízení SLOG, ale také na speciální vdev. Pokud je běžný vdev spojen s pevným diskem, zatímco speciální vdev s SSD, tato změna umožňuje vyhnout se situacím, kdy jsou data zapisována na SSD, zatímco související bloky ZIL na pevný disk, což způsobuje zbytečné zpoždění.
- Bylo povoleno nastavit vlastnost special_small_blocks pro sekce (ZVOL), a ne pouze pro souborové systémy, což umožňuje organizovat umístění drobných bloků na samostatném speciálním vdev, například na SSD úložišti.
- Byl přidán přepisovací režim „zfs rewrite -P“, který co nejvíce zachovává logický čas vytvoření, což umožňuje rozlišit bloky, které byly pouze přesunuty do poolu, od bloků, které byly skutečně změněny uživatelem.
- Pro příkazy „zpool trim“, „zpool scrub“ a „zpool initialize“ byla implementována volba „-a“ (—all), která umožňuje tyto příkazy vykonat okamžitě pro všechny importované pooly.
- Byl přidán příkaz „zpool scrub -S -E“ k provádění kontroly kontrolních součtů dat, která spadají do určených časových intervalů.
- Byly přidány nové optimalizace procesu deduplikace.
Zdroj: opennet.ru
