Efter mer Àn ett Ärs utveckling har version 2.3.0 av OpenZFS publicerats, vilket utvecklar implementeringen av filsystemet ZFS för Linux och FreeBSD. Projektet har blivit kÀnt som "ZFS on Linux" och var tidigare begrÀnsat till utvecklingen av en modul för Linux-kÀrnan, men efter sammanslagningen med koden frÄn FreeBSD har det erkÀnts som den huvudsakliga implementationen av OpenZFS och har bytt namn.
OpenZFS har testats med Linux-kÀrnor frÄn 4.18 till 6.12 och alla versioner av FreeBSD, som börjar med 13.3. Koden distribueras under den fria licensen CDDL. OpenZFS anvÀnds redan i FreeBSD och ingÄr i distributioner som Debian, Ubuntu, Gentoo, NixOS och ALT Linux. Paket med den nya versionen kommer snart att förberedas för de största Linux-distributionerna, inklusive Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS tillhandahÄller en implementation av ZFS-komponenter relaterade bÄde till filsystemets funktion och volymhanterarens funktion. Komponenterna som har implementerats Àr: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) och ZPL (ZFS POSIX Layer). Projektet möjliggör Àven anvÀndning av ZFS som backend för klusterfilsystemet Lustre. Arbetet med OpenZFS baseras pÄ den ursprungliga koden av ZFS som importerats frÄn projektet OpenSolaris och utvidgats med förbÀttringar och rÀttelser frÄn Illumos-gemenskapen. Projektet utvecklas med deltagande av anstÀllda vid Lawrence Livermore National Laboratory under ett kontrakt med USA:s energidepartement.
Koden distribueras under den fria licensen CDDL, som inte Àr kompatibel med GPLv2, vilket gör det omöjligt att integrera OpenZFS i den primÀra grenen av Linux-kÀrnan, eftersom blandning av kod under licenserna GPLv2 och CDDL Àr oacceptabelt. För att kringgÄ licenskonflikten beslöts det att distribuera produkten för Linux helt under CDDL-licensen som en separat nedladdningsmodul, som levereras separat frÄn kÀrnan. Stabiliteten i kodbasen för OpenZFS bedöms vara jÀmförbar med andra filsystem för Linux.
Huvudsakliga förÀndringar:
- Möjligheten att hÀnga till nya diskar i befintliga RAIDZ-arrayer har implementerats för att öka lagringskapaciteten utan att stoppa arbetet och utan behov av att skapa en ny grupp lagringsenheter. Omskrivning av överskott av data med hÀnsyn till de nya diskarna sker automatiskt. För att lÀgga till en disk till en befintlig grupp kan kommandot "zpool attach POOL raidzP-N NEW_DEVICE" anvÀndas, och för att övervaka slutet av den bakgrundsprocess som expanderar arrayen - "zpool status".
- Utförandet av operationer relaterade till blockdeduplicering har avsevÀrt pÄskyndats. Optimeringarna har bland annat berört formatet pÄ dedupliceringstabeller, sÄ för att aktivera de föreslagna optimeringarna i redan existerande pooler mÄste alternativet "fast_dedup" aktiveras, vilket dÀrefter kommer att skapa nya dedupliceringstabeller som anvÀnds parallellt med de gamla.
- En direkt in- och utgÄngslÀge (Direct IO) har lagts till, vilket möjliggör lÀs- och skrivoperationer utan att anvÀnda ARC-cache (Adaptive Replacement Cache). LÀge tillÄter en ökning av effektiviteten i situationer dÀr caching kan pÄverka prestandan negativt pÄ grund av extra kopieringsoperationer i minnet, till exempel vid anvÀndning av NVMe-enheter.
- MÄnga kommandon (zfs list|get|mount|version, zpool status|list|get|version) har fÄtt alternativet "-j" för att producera utdata i JSON-format.
- Den tillÄtna storleken pÄ filnamn och kataloger har ökat frÄn 255 till 1023 tecken (den nya storleken har valts med hÀnsyn till lagring av 255 4-byte tecken).
- Prestandaoptimeringar har genomförts, som omfattar olika delar av kodbasen.
- Alternativ har lagts till i kÀrnmodulen:
- 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
KĂ€lla: opennet.ru
