Release von OpenZFS 2.4.0, Implementierung von ZFS für Linux und FreeBSD

Nach 11 Monaten Entwicklung wurde die Version OpenZFS 2.4.0 veröffentlicht, die die Implementierung des Dateisystems ZFS für Linux und FreeBSD weiterentwickelt. Das Projekt erlangte Bekanntheit als „ZFS on Linux“ und beschränkte sich zuvor auf die Entwicklung eines Moduls für den Linux-Kernel, wurde nach der Fusion mit dem Code von FreeBSD jedoch als die Hauptimplementierung von OpenZFS anerkannt und umbenannt.

Die Funktionalität von OpenZFS wurde mit Linux-Kernen von 4.18 bis 6.18 und allen Versionen von FreeBSD ab 13.3 getestet. Der Code wird unter der freien Lizenz CDDL veröffentlicht. OpenZFS wird bereits in FreeBSD verwendet und ist Bestandteil der Distributionen Debian, Ubuntu, Gentoo, NixOS und ALT Linux. Pakete mit der neuen Version werden in naher Zukunft für die gängigen Linux-Distributionen, einschließlich Debian, Ubuntu, Fedora und RHEL/CentOS, vorbereitet.

OpenZFS bietet eine Implementierung von ZFS-Komponenten, die sowohl mit dem Betrieb des Dateisystems als auch mit der Funktionalität des Volumenmanagers zusammenhängen. Implementierte Komponenten: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) und ZPL (ZFS POSIX Layer). Das Projekt ermöglicht es außerdem, ZFS als Backend für das Cluster-Dateisystem Lustre zu verwenden. Die Fortschritte von OpenZFS basieren auf dem Originalcode von ZFS, der aus dem OpenSolaris-Projekt importiert und durch Beiträge und Verbesserungen der Illumos-Community erweitert wurde. Das Projekt entwickelt sich in Zusammenarbeit mit Mitarbeitern des Lawrence Livermore National Laboratory im Rahmen eines Vertrags mit dem US-Energieministerium.

Der Code wird unter der freien CDDL-Lizenz verbreitet, die nicht mit der GPLv2 kompatibel ist, was die Integration von OpenZFS in den Hauptzweig des Linux-Kernels verhindert, da die Vermischung von Code unter den Lizenzen GPLv2 und CDDL unzulässig ist. Um die Lizenzinkompatibilität zu umgehen, wurde entschieden, das Produkt für Linux vollständig unter der CDDL-Lizenz als separaten herunterladbaren Modul anzubieten, der unabhängig vom Kernel bereitgestellt wird. Die Stabilität des Codebasis von OpenZFS wird als vergleichbar mit anderen Dateisystemen für Linux bewertet.

Wesentliche Änderungen:

  • Die Möglichkeit, Standardquoten für Benutzer, Gruppen und Projekte festzulegen, wurde implementiert. In früheren Versionen konnten Quoten nur einzeln für jede Benutzer-ID festgelegt werden. In der neuen Version kann jetzt ein Standardwert festgelegt werden, der angewendet wird, wenn für einen bestimmten Benutzer keine Quote festgelegt wurde.
  • Die Möglichkeit, den Modus für direkte Eingabe/Ausgabe (O_DIRECT, Direct I/O) zurückzusetzen, wurde hinzugefügt, um einen leichten Mechanismus für nicht zwischenspeicherbare Eingabe/Ausgabe (Uncached I/O) für nicht seitenaligned Anfragen zu verwenden, die in Direct I/O nicht unterstützt werden.
  • Ein neuer einheitlicher Algorithmus zur Geschwindigkeitsbegrenzung von Schreiboperationen und der Platzierung von Blöcken wurde vorgeschlagen, der die Fragmentierung von vdev (Virtual Device) verringert, indem mehrere Schreiboperationen aggregiert und größere zusammenhängende freie Bereiche verwendet werden, anstatt die Ergebnisse einzelner Schreiboperationen in kleinen freien Bereichen zu speichern.
  • Die Leistung der Verschlüsselung wurde durch die Nutzung von AVX2-Befehlen in der Implementierung des AES-GCM-Algorithmus verbessert. In den durchgeführten Tests wurde eine Beschleunigung von bis zu 80 % erzielt.
  • Die Platzierung von ZIL-Blöcken (ZFS Intent Log) ist jetzt nicht nur auf normalen vdev oder einem separaten SLOG-Gerät, sondern auch auf speziellen vdev erlaubt. Wenn ein normaler vdev mit einer Festplatte verbunden ist, während ein spezieller vdev mit einem SSD-Laufwerk verbunden ist, ermöglicht diese Änderung, Situationen auszuschließen, in denen Daten auf eine SSD geschrieben werden, während die zugehörigen ZIL-Blöcke auf einer Festplatte landen, was zu überflüssigen Verzögerungen führt.
  • Die Eigenschaft special_small_blocks kann jetzt auch für ZVOLs eingerichtet werden, nicht nur für Dateisysteme, was die Platzierung kleiner Blöcke auf einem separaten speziellen vdev, beispielsweise auf einer SSD, ermöglicht.
  • Der „zfs rewrite -P“-Modus wurde hinzugefügt, der das logische Erstellungsdatum nach Möglichkeit unverändert lässt, sodass Blöcke, die einfach in den Pool verschoben wurden, von Blöcken, die tatsächlich vom Benutzer geändert wurden, unterschieden werden können.
  • Für die Befehle „zpool trim“, „zpool scrub“ und „zpool initialize“ wurde die Option „-a“ (—all) implementiert, die es ermöglicht, diese Befehle sofort für alle importierten Pools auszuführen.
  • Der Befehl „zpool scrub -S -E“ wurde hinzugefügt, um die Überprüfung der Prüfziffern von Daten innerhalb der angegebenen Zeitspanne durchzuführen.
  • Neue Optimierungen des Deduplizierungsprozesses wurden hinzugefügt.

Quelle: opennet.ru

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster