Efter mere end to års udvikling er udgivelsen af projektet OpenZFS 2.2 offentliggjort, som udvikler implementeringen af filsystemet ZFS til Linux og FreeBSD. Projektet er blevet kendt som 'ZFS on Linux' og var tidligere begrænset til udviklingen af en modul til Linux-kernen, men efter overførslen af understøttelse til FreeBSD er det blevet anerkendt som den primære implementering af OpenZFS og omdøbt.
OpenZFS' arbejde er verificeret med kernerne Linux fra 3.10 til 6.5 og alle versioner af FreeBSD, begyndende med 12.2-RELEASE. Koden distribueres under den frie licens CDDL. OpenZFS anvendes allerede i FreeBSD og indgår i distributionerne Debian, Ubuntu, Gentoo, Sabayon Linux og ALT Linux. Pakker med den nye version vil snart blive forberedt til de vigtigste Linux-distributioner, herunder Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS giver en implementering af ZFS-komponenter relateret til både driften af filsystemet og funktionen af volume manageren. Især er komponenter som SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) og ZPL (ZFS POSIX Layer) blevet implementeret. Derudover muliggør projektet brugen af ZFS som backend for det klyngede filsystem Lustre. Projektets resultater er baseret på den originale ZFS-kode, der er importeret fra OpenSolaris-projektet og udvidet med forbedringer og rettelser fra Illumos-samfundet. Projektet udvikles med deltagelse af ansatte fra Livermore National Laboratory under kontrakt med det amerikanske energiministerium.
Koden distribueres under den åbne CDDL-licens, som ikke er kompatibel med GPLv2, hvilket forhindrer integrationen af OpenZFS i den primære gren af Linux-kernen, da sammensmeltning af kode under GPLv2- og CDDL-licenser ikke er tilladt. For at omgå denne licensmæssige inkompatibilitet blev det besluttet at distribuere produktet fuldstændigt under CDDL-licensen som et separat downloadable modul, der leveres adskilt fra kernen. Stabiliteten af OpenZFS-kodebasen vurderes som sammenlignelig med andre filsystemer for Linux.
Vigtige ændringer:
- Der er tilføjet en mekanisme til blokkloning, der gør det muligt at oprette en kopi af en fil eller dens dele uden at duplikere data, ved at bruge referencer til allerede eksisterende datablokke i den anden kopi uden faktisk at kopiere dem. Hvis der foretages ændringer i den originale fil eller dens kopi, udføres blokkopiering, og ændringerne implementeres i de oprettede kopier (copy-on-write til filniveau). Baseret på kloningsmekanismen er operationen reflink implementeret, som kan bruges til automatisk at skabe kloner i forskellige kopieringsværktøjer, for eksempel i de nye versioner af /bin/cp i Linux.
- Der er tilføjet support til teknologier, der anvendes til containerisolering i Linux, såsom systemopkaldet renameat, overlayfs, mapping af brugeridentiteter ved montering og delegation af navnerum til containere.
- Der er implementeret en fejl-log för fejl fundet under kontrol af kontrolsummen (scrub). Når kommandoen 'zpool status' udføres, vises oplysninger om alle FS'er, snapshots og kloner, der påvirkes af den beskadigede blok. For at forsøge at hurtigt gendanne kendte beskadigede blokke kan kommandoen 'zpool scrub -e' anvendes.
- Der er tilføjet mulighed for at bruge den kryptografiske hash-funktion BLAKE3 til kontrolsummer, kendetegnet ved en meget høj hastighed af hash-beregningen (tre gange hurtigere end Edon-R og betydeligt hurtigere end sha256 og sha512) samtidig med at pålidelighed på niveau med SHA-3 sikres.
- Operation «zfs receive -c» has been implemented, which can be used to restore corrupted data (not metadata) in the file system, snapshots, and clones, in cases where a replicated backup has been previously saved by the «zfs send» command.
- Support for software setting and reading properties for individual virtual disks vdev has been added.
- The ability to bind arbitrary user properties to vdev and zpool has been added, similar to user properties for the zfs dataset.
- The implementation of the Adaptive Replacement Cache (ARC) has been improved, enhancing the performance of read operations. ARC now better adapts to high loads and minimizes the need for manual optimization of settings.
- Support for hardware acceleration mechanisms for computing SHA2 checksums has been added.
- The implementation of Edon-R checksums has been rewritten and optimized.
- When using the zstd algorithm for data compression, the determination of situations where compression is pointless (data is not compressible) has been accelerated.
- Improvements have been made to the prefetch mechanism, speeding up operations under heavy input/output.
- A series of general optimizations have been made to improve performance.
Kilde: opennet.ru
