Nakon više od godinu dana razvoja, objavljena je verzija projekta OpenZFS 2.3.0, koja unapređuje implementaciju datotečnog sustava ZFS za Linux i FreeBSD. Projekt je postao poznat kao 'ZFS na Linuxu' i ranije se ograničavao na razvoj modula za Linux kernel, ali nakon spajanja s kodom iz FreeBSD-a, priznat je kao glavna implementacija OpenZFS i preimenovan je.
Rad OpenZFS-a testiran je s Linux kernelima od 4.18 do 6.12 i svim verzijama FreeBSD-a, počevši od 13.3. Kod se distribuiše pod slobodnom licencom CDDL. OpenZFS se već koristi u FreeBSD-u i deo je distribucija Debian, Ubuntu, Gentoo, NixOS i ALT Linux. Paketi s novom verzijom uskoro će biti pripremljeni za glavne Linux distribucije, uključujući Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS pruža implementaciju komponenti ZFS-a, povezanih kako s radom datotečnog sustava, tako i s funkcioniranjem upravitelja volumena. Implementirane su komponente: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) i ZPL (ZFS POSIX Layer). Projekt također omogućuje korištenje ZFS-a kao backend-a za klaster datotečnog sustava Lustre. Radna postignuća OpenZFS-a temelje se na izvornoj ZFS kodu, uvezenoj iz projekta OpenSolaris, proširenoj poboljšanjima i ispravkama zajednice Illumos. Projekt se razvija uz sudjelovanje zaposlenika Livermore nacionalne laboratorije prema ugovoru s Ministarstvom energetike SAD-a.
Kod se distribuira pod slobodnom licencom CDDL, koja nije kompatibilna s GPLv2, što sprječava integraciju OpenZFS-a u glavnu granu Linux jezgre, jer miješanje koda pod GPLv2 i CDDL licencama nije dopušteno. Da bi se zaobišla licencna nekompatibilnost, odlučeno je da se proizvod za Linux distribuira potpuno pod CDDL licencom kao odvojeni modul koji se isporučuje odvojeno od jezgre. Stabilnost kodne baze OpenZFS procijenjena je kao usporediva s drugim FS-ovima za Linux.
Glavne promjene:
- Implementirana je mogućnost dodavanja novih diskova u postojeći RAIDZ niz bez zaustavljanja rada i bez potrebe za stvaranjem nove grupe uređaja. Preusmjeravanje suvišnih podataka uzimajući u obzir nove diskove obavlja se automatski. Za dodavanje diska postojećoj grupi može se koristiti komanda 'zpool attach POOL raidzP-N NEW_DEVICE', a za praćenje završetka pozadinskog procesa proširenja niza — 'zpool status'.
- Significantly sped up the execution of operations related to block data deduplication. Optimizations, among other things, affected deduplication table format, so to utilize the proposed optimizations in existing pools, the 'fast_dedup' option must be enabled, after which new deduplication tables will be created that will be used in parallel with the old tables.
- Dodana je direktna ulaz/izlaz moda (Direct IO), koja omogućava operacije čitanja i pisanja mimo ARC keša (Adaptive Replacement Cache). Ovaj način povećava efikasnost rada u situacijama kada keširanje može negativno uticati na performanse zbog dodatnih kopirajućih operacija u memoriji, na primer, prilikom korišćenja NVMe uređaja.
- U većinu komandi (zfs list|get|mount|version, zpool status|list|get|version) dodana je opcija '-j' za izlaz u JSON formatu.
- Dozvoljena veličina imena datoteka i direktorija povećana je s 255 na 1023 znaka (nova veličina odabrana je s obzirom na postavljanje 255 4-bajtnih znakova).
- Uključene su optimizacije performansi koje pokrivaju različite dijelove kodne baze.
- Dodane su opcije u modul jezgre:
- 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
Izvor: opennet.ru
