Nach mehr als zwei Jahren Entwicklung wurde die Version 2.2 des OpenZFS-Projekts veröffentlicht, das die Implementierung des ZFS-Dateisystems fĂŒr Linux und FreeBSD weiterentwickelt. Das Projekt ist bekannt geworden als âZFS on Linuxâ und beschrĂ€nkte sich zuvor auf die Entwicklung eines Moduls fĂŒr den Linux-Kernel, wurde aber nach der UnterstĂŒtzung von FreeBSD als die Hauptimplementierung von OpenZFS anerkannt und umbenannt.
OpenZFS wurde mit Linux-Kernen von 3.10 bis 6.5 und allen Versionen von FreeBSD, beginnend mit 12.2-RELEASE, getestet. Der Code wird unter der freien Lizenz CDDL vertrieben. OpenZFS wird bereits in FreeBSD verwendet und ist Teil der Distributionen Debian, Ubuntu, Gentoo, Sabayon Linux und ALT Linux. Pakete mit der neuen Version werden in KĂŒrze fĂŒr die gĂ€ngigen Linux-Distributionen, einschlieĂlich Debian, Ubuntu, Fedora, RHEL/CentOS, vorbereitet.
OpenZFS bietet eine Implementierung von ZFS-Komponenten, die sowohl mit der Funktionsweise des Dateisystems als auch mit dem Betrieb des Volume-Managers verbunden sind. Insbesondere sind die Komponenten SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) und ZPL (ZFS POSIX Layer) implementiert. ZusĂ€tzlich stellt das Projekt die Möglichkeit zur VerfĂŒgung, ZFS als Backend fĂŒr das Cluster-Dateisystem Lustre zu verwenden. Die Entwicklungen des Projekts basieren auf dem Original-ZFS-Code, der aus dem OpenSolaris-Projekt importiert und durch Verbesserungen und Korrekturen aus der Illumos-Community erweitert wurde. Das Projekt wird mit der UnterstĂŒtzung von Mitarbeitern des Lawrence Livermore National Laboratory im Rahmen eines Vertrags mit dem US-Energieministerium weiterentwickelt.
Der Code wird unter der Open-Source-Lizenz CDDL verbreitet, die mit GPLv2 inkompatibel ist. Dies verhindert die Integration von OpenZFS in den Hauptzweig des Linux-Kernels, da eine Mischung von Code unter den Lizenzen GPLv2 und CDDL unzulĂ€ssig ist. Um diese LizenzinkompatibilitĂ€t zu umgehen, wurde die Entscheidung getroffen, das Produkt vollstĂ€ndig unter der Lizenz CDDL als separat ladbares Modul bereitzustellen, das unabhĂ€ngig vom Kernel geliefert wird. Die StabilitĂ€t der OpenZFS-Codebasis wird als vergleichbar mit anderen Dateisystemen fĂŒr Linux eingeschĂ€tzt.
HauptÀnderungen:
- Ein Blockklonmechanismus wurde hinzugefĂŒgt, der es ermöglicht, eine Kopie einer Datei oder eines Teils davon zu erstellen, ohne Daten zu duplizieren, indem in der zweiten Kopie Verweise auf bereits vorhandene Datenblöcke der ursprĂŒnglichen Datei verwendet werden, ohne sie tatsĂ€chlich zu kopieren. Wenn Ănderungen an der ursprĂŒnglichen Datei oder ihrer Kopie vorgenommen werden, erfolgt das Kopieren der Blöcke und das EinfĂŒgen der Ănderungen in die erstellten Kopien (Copy-on-Write-Modus auf Dateiebene). Auf der Grundlage des Klonmechanismus wurde die reflink-Operation implementiert, die in verschiedenen Kopierwerkzeugen zur automatischen Erstellung von Klonen verwendet werden kann, z. B. in den neuen Versionen von /bin/cp in Linux.
- Die UnterstĂŒtzung von Technologien, die fĂŒr die Containerisolierung in Linux verwendet werden, wie der Systemaufruf renameat, das Overlay-Dateisystem overlayfs, das Mapping von Benutzeridentifikatoren beim Mounten und die Delegation von NamensrĂ€umen fĂŒr Container, wurde hinzugefĂŒgt.
- Ein Fehlerprotokoll wurde implementiert, das Fehler aufzeigt, die bei der DurchfĂŒhrung von PrĂŒfoperationen fĂŒr PrĂŒfziffern (Scrub) entdeckt wurden. Bei AusfĂŒhrung des Befehls âzpool statusâ werden Informationen zu allen Dateisystemen, Snapshots und Klonen ausgegeben, die vom beschĂ€digten Block betroffen sind. Um bekannte beschĂ€digte Blöcke schnell wiederherzustellen, kann der Befehl âzpool scrub -eâ verwendet werden.
- Die Möglichkeit, die kryptografische Hash-Funktion BLAKE3 fĂŒr PrĂŒfziffern zu verwenden, wurde hinzugefĂŒgt, die sich durch eine sehr hohe Hash-Berechnungsgeschwindigkeit auszeichnet (drei Mal schneller als Edon-R und deutlich schneller als sha256 und sha512) bei gleichzeitiger Sicherstellung der ZuverlĂ€ssigkeit auf dem Niveau von SHA-3.
- Die Operation âzfs receive -câ wurde implementiert, die zur Wiederherstellung beschĂ€digter Daten (nicht Metadaten) im Dateisystem, in Snapshots und Klonen verwendet werden kann, wenn ein repliziertes Backup vorhanden ist, das zuvor mit dem Befehl âzfs sendâ erstellt wurde.
- Die UnterstĂŒtzung fĂŒr die programmatische Festlegung und das Lesen von Eigenschaften fĂŒr einzelne virtuelle Festplatten vdev wurde hinzugefĂŒgt.
- Es wurde die Möglichkeit zur Bindung von beliebigen benutzerdefinierten Eigenschaften an vdev und zpool hinzugefĂŒgt, Ă€hnlich wie bei benutzerdefinierten Eigenschaften fĂŒr zfs-Datasets.
- Die Implementierung des adaptiven Caches ARC (Adaptive Replacement Cache) wurde verbessert, was die Leistung bei LesevorgÀngen erhöht. ARC passt sich jetzt besser an hohe Lasten an und minimiert die Notwendigkeit einer manuellen Optimierung der Einstellungen.
- Die UnterstĂŒtzung fĂŒr Hardwarebeschleunigungsmechanismen zur Berechnung von SHA2-Checksummen wurde hinzugefĂŒgt.
- Die Implementierung der Edon-R-Checksummen wurde neu geschrieben und optimiert.
- Bei der Verwendung des zstd-Algorithmus zur Datenkompression wurde die Bestimmung von Situationen beschleunigt, in denen eine Kompression sinnlos ist (Daten sind nicht komprimierbar).
- Es wurden Verbesserungen am Mechanismus der Vorabladung (Prefetch) vorgenommen, die die Leistung bei intensivem Ein-/Ausgabeverkehr erhöhen.
- Es wurden eine Reihe allgemeiner Optimierungen vorgenommen, die die Leistung steigern.
Quelle: opennet.ru
