Efter 11 måneders udvikling blev udgivelsen af OpenZFS 2.4.0, der udvikler implementeringen af filsystemet ZFS til Linux og FreeBSD, offentliggjort. Projektet blev kendt som 'ZFS on Linux' og var tidligere begrænset til udviklingen af en modul til Linux-kernen, men efter sammensmeltningen med koden fra FreeBSD blev det anerkendt som den primære implementering af OpenZFS og omdøbt.
OpenZFS er blevet testet med Linux-kernene fra 4.18 til 6.18 og alle versioner af FreeBSD, der starter med 13.3. Koden distribueres under den frie licens CDDL. OpenZFS anvendes allerede i FreeBSD og indgår i distributionerne Debian, Ubuntu, Gentoo, NixOS og ALT Linux. Pakker med den nye version vil snart blive forberedt til de vigtigste Linux-distributioner, herunder Debian, Ubuntu, Fedora, RHEL/CentOS.
OpenZFS tilbyder implementering af ZFS-komponenter, der relaterer til både filsystemets funktionalitet og volumesystemets drift. Komponenterne SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) og ZPL (ZFS POSIX Layer) er implementeret. Projektet giver også mulighed for at bruge ZFS som backend til det klyngebaserede filsystem Lustre. Udviklingen af OpenZFS er baseret på den originale ZFS-kode, importeret fra OpenSolaris-projektet og udvidet med forbedringer og rettelser fra Illumos-samfundet. Projektet udvikles i samarbejde med ansatte fra Livermore National Laboratory under kontrakt med det amerikanske energiministerium.
Koden distribueres under den frie CDDL-licens, som er inkompatibel med GPLv2, hvilket forhindrer integrationen af OpenZFS i hovedgrenen af Linux-kernen, da blanding af kode under GPLv2- og CDDL-licenser er uacceptabelt. For at omgå licenskompatibiliteten blev det besluttet at distribuere produktet til Linux fuldstændigt under CDDL-licensen som et separat modul, leveret adskilt fra kernen. Stabiliteten af OpenZFS-kodebasen vurderes at være sammenlignelig med andre filsystemer til Linux.
Vigtige ændringer:
- Muligheden for at angive standardkvoter for brugere, grupper og projekter er blevet implementeret. I tidligere versioner kunne kvoter kun angives enkeltvis for hver bruger-ID. I den nye version er det nu muligt at angive en standardværdi, der vil blive anvendt, hvis der ikke er angivet en kvote for den specifikke bruger.
- Muligheden for at tilbagekalde direkte input/output-mode (O_DIRECT, Direct I/O) til brugen af en letvægtsmekanisme for ikke-cachet I/O (Uncached I/O) for anmodninger, der ikke er justeret til hukommelsessidegrænser, som ikke understøttes i Direct I/O, er blevet tilføjet.
- En ny ensartet algoritme til begrænsning af hastigheden for skriveoperationer og placering af blokke er blevet foreslået, hvilket reducerer fragmenteringen af vdev (Virtual Device) ved at aggregere flere skriveoperationer og bruge større sammenhængende frie områder i stedet for at placere resultaterne fra enkelte skriveoperationer i små frie områder.
- Ydelsen ved kryptering er blevet forbedret ved brug af AVX2-instruktioner i implementeringen af AES-GCM-algoritmen. I de udførte tests har accelerationen nået op til 80%.
- Det er nu tilladt at placere ZIL-blokke (ZFS Intent Log) ikke kun på normale vdev eller på en separat enhed SLOG, men også på specielle vdev. Hvis en normal vdev er tilsluttet en harddisk, og en speciel vdev er tilsluttet en SSD-enhed, gør ændringen det muligt at undgå situationer, hvor data skrives til SSD-enheden, mens de tilknyttede ZIL-blokke skrives til harddisken, hvilket medfører unødvendige forsinkelser.
- Det er nu muligt at anvende egenskaben special_small_blocks for sektioner (ZVOL), og ikke kun for filsystemer, hvilket muliggør placeringen af små blokke på et separat specialiseret vdev, for eksempel på en SSD-disk.
- Tilføjet skriveryggen "zfs rewrite -P", som så vidt muligt efterlader den logiske oprettelsestid uændret, hvilket gør det muligt at adskille blokke, der blot er flyttet til poolen, fra blokke, der faktisk er ændret af brugeren.
- For kommandoerne "zpool trim", "zpool scrub" og "zpool initialize" er muligheden "-a" (—all) implementeret, som tillader at udføre disse kommandoer for alle importerede pools på én gang.
- Tilføjet kommandoen "zpool scrub -S -E" til at udføre kontrolsum-kontroller af data, der falder inden for angivne tidsintervaller.
- Nye optimeringer af deduplicationsprocessen er blevet tilføjet.
Kilde: opennet.ru
