Po viac ako roku vývoja bol zverejnený release projektu OpenZFS 2.3.0, ktorý vyvíja implementáciu súborového systému ZFS pre Linux a FreeBSD. Projekt sa stal známy ako „ZFS na Linuxe“ a pôvodne sa obmedzoval na vývoj modulu pre jadro Linux, ale po zlúčení s kódom z FreeBSD bol uznaný ako hlavná implementácia OpenZFS a premenovaný.
Práca OpenZFS bola overená s jadrami Linux od verzie 4.18 po 6.12 a so všetkými vetvami FreeBSD, počínajúc verziou 13.3. Kód je distribuovaný pod voľnou licenciou CDDL. OpenZFS sa už používa vo FreeBSD a je súčasťou distribúcií Debian, Ubuntu, Gentoo, NixOS a ALT Linux. Balíky s novou verziou budú čoskoro pripravené pre hlavné distribúcie Linux, vrátane Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS poskytuje implementáciu komponentov ZFS, ktoré sa týkajú ako fungovania súborového systému, tak aj fungovania správcu zväzkov. Implementované komponenty: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) a ZPL (ZFS POSIX Layer). Projekt tiež umožňuje používať ZFS ako backend pre clusterový súborový systém Lustre. Nápady OpenZFS sú založené na pôvodnom kóde ZFS, importovanom z projektu OpenSolaris a rozšírenom vylepšeniami a opravami od komunity Illumos. Projekt sa vyvíja za účasti zamestnancov Livermoreskej národnej laboratória na základe zmluvy s Ministerstvom energetiky USA.
Kód sa šíri pod voľnou licenciou CDDL, ktorá nie je kompatibilná s GPLv2, čo neumožňuje dosiahnuť integráciu OpenZFS do hlavnej vetvy jadra Linux, pretože zmiešanie kódu pod licenciami GPLv2 a CDDL je neprípustné. Na obídenie licenčnej nekompatibility sa rozhodlo šíriť produkt pre Linux úplne pod licenciou CDDL vo forme samostatne načítateľného modulu, dodávaného oddelene od jadra. Stabilita kódovej základne OpenZFS je hodnotená ako porovnateľná s inými FS pre Linux.
Hlavné zmeny:
- Bola implementovaná možnosť pridávania nových diskov do existujúceho RAIDZ poľa za účelom zvýšenia kapacity úložiska bez zastavenia prevádzky a bez potreby vytvárania novej skupiny diskov. Preusporiadanie redundatných dát s ohľadom na nové disky je vykonávané automaticky. Na pridanie disku k existujúcej skupine sa môže použiť príkaz „zpool attach POOL raidzP-N NEW_DEVICE“, a na sledovanie dokončenia pozadia procesu rozšírenia poľa — „zpool status“.
- Výrazne sa urýchlila realizácia operácií súvisiacich s deduplikáciou blokov dát. Optimalizácie sa okrem iného dotkli formátu tabuliek deduplikácie, preto na využitie navrhnutých optimalizácií v už existujúcich bazénoch je potrebné zapnúť možnosť „fast_dedup“, po čom budú vytvorené nové tabuľky deduplikácie, ktoré budú používané paralelne so starými tabuľkami.
- Bol pridaný režim priameho vstupu/výstupu (Direct IO), ktorý umožňuje vykonávať operácie čítania a zapisovania obídením vyrovnávacej pamäte ARC (Adaptive Replacement Cache). Režim zvyšuje efektivitu práce v situáciách, keď môže vyrovnávanie negatívne ovplyvniť výkon kvôli dodatočným operáciám kopírovania v pamäti, napríklad pri používaní zariadení NVMe.
- Do väčšiny príkazov (zfs list|get|mount|version, zpool status|list|get|version) bola pridaná možnosť „-j“ na výstup v formáte JSON.
- Povolená dĺžka názvov súborov a adresárov sa zvýšila z 255 na 1023 znakov (nová dĺžka bola zvolená so zohľadnením umiestnenia 255 4-bajtových znakov).
- Boli vykonané optimalizácie výkonu, ktoré sa dotýkajú rôznych častí kódovej základne.
- Do jadrového modulu boli pridané možnosti:
- dmu_ddt_copies
- raidz_expand_max_copy_bytes
- raidz_expand_max_reflow_bytes
- raidz_io_aggregate_rows
- spa_cpus_per_allocator
- spa_num_allocators
- zap_shrink_enabled
- zfetch_max_idistance
- zfs_active_allocator
- zfs_arc_shrinker_seeks
- zfs_dedup_log_flush_entries_min
- .zfs_dedup_log_flush_flow_rate_txgs
- zfs_dedup_log_flush_min_time_ms
- zfs_dedup_log_flush_passes_max
- zfs_dedup_log_mem_max
- zfs_dedup_log_mem_max_percent
- zfs_dedup_log_txg_max
- zfs_dio_enabled
- zfs_dio_write_verify_events_per_second
- zfs_resilver_defer_percent
- zfs_scrub_after_expand
- zfs_snapshot_no_setuid
- zfs_vdev_direct_write_verify
- zio_taskq_write_tpq
Zdroj: opennet.ru
