Efter 11 mÄnaders utveckling har versionen av projektet OpenZFS 2.4.0 slÀppts, som utvecklar filsystemet ZFS för Linux och FreeBSD. Projektet blev 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 erkÀndes det som den primÀra implementeringen av OpenZFS och döptes om.
OpenZFS har testats med Linux-kÀrnor frÄn 4.18 till 6.18 och alla versioner av FreeBSD, med början frÄn 13.3. Koden distribueras under den fria licensen CDDL. OpenZFS anvÀnds redan i FreeBSD och ingÄr i distributionerna Debian, Ubuntu, Gentoo, NixOS och ALT Linux. Paket med den nya versionen kommer snart att förberedas för de frÀmsta 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 ange standardkvoter för anvÀndare, grupper och projekt har implementerats. I tidigare versioner kunde kvoter endast sÀttas individuellt för varje anvÀndaridentifierare. I den nya versionen har möjligheten att ange ett standardvÀrde införts, vilket kommer att tillÀmpas om ingen kvot har satts för en specifik anvÀndare.
- Möjligheten att ÄtergÄ frÄn direkt I/O-lÀge (O_DIRECT, Direct I/O) till anvÀndningen av en lÀttviktsmekanism för okasherat I/O (Uncached I/O) för förfrÄgningar som inte Àr justerade pÄ minnessidgrÀnser, vilket inte stöds i Direct I/O, har lagts till.
- En ny enhetlig algoritm för att begrÀnsa hastigheten för skrivoperationer och blockplacering har föreslagits, vilket minskar fragmenteringen av vdev (Virtual Device) genom att aggregera flera skrivoperationer och anvÀnda större sammanhÀngande lediga omrÄden för dem istÀllet för att placera resultaten frÄn enskilda skrivoperationer i smÄ lediga omrÄden.
- Prestandan för kryptering har förbÀttrats tack vare anvÀndningen av AVX2-instruktioner i implementeringen av AES-GCM-algoritmen. I genomförda tester uppnÄddes en acceleration pÄ 80%.
- Möjligheten att placera ZIL-block (ZFS Intent Log) inte bara pÄ normala vdev eller pÄ ett separat SLOG-enhet utan ocksÄ pÄ specialvdev har tillÄtits. Om en normal vdev Àr kopplad till en hÄrddisk, medan en specialvdev Àr kopplad till en SSD-enhet, gör förÀndringen det möjligt att undvika situationer dÀr data skrivs till SSD, medan de relaterade ZIL-blocken hamnar pÄ hÄrddisken, vilket leder till onödiga fördröjningar.
- Möjligheten att stÀlla in egenskapen special_small_blocks för ZVOL-partitioner, och inte bara för filsystem, har lagts till, vilket möjliggör organisering av placeringen av smÄ block pÄ en separat specialvdev, till exempel pÄ en SSD.
- En ÄterskrivningslÀge "zfs rewrite -P" har lagts till, vilket i möjligaste mÄn behÄller det logiska skapandetidpunkten, vilket gör att det gÄr att sÀrskilja block som bara flyttats till poolen frÄn block som faktiskt Àndrats av anvÀndaren.
- För kommandona "zpool trim", "zpool scrub" och "zpool initialize" har en "-a" (âall) alternativ implementerats, vilket gör att dessa kommandon kan köras direkt för alla importerade pooler.
- Ett kommando "zpool scrub -S -E" har lagts till för att utföra kontrollsumma-kontroller pÄ data som faller inom angivna tidsintervall.
- Nya optimeringar av dedupliceringsprocessen har lagts till.
KĂ€lla: opennet.ru
