OpenZFS 2.3.0 veröffentlicht, Implementierung von ZFS für Linux und FreeBSD

Nach mehr als einem Jahr Entwicklung wurde die Veröffentlichung des Projekts OpenZFS 2.3.0 bekannt gegeben, das die Implementierung des Dateisystems ZFS für Linux und FreeBSD weiterentwickelt. Das Projekt wurde als „ZFS on Linux“ bekannt und beschränkte sich früher auf die Entwicklung eines Moduls für den Linux-Kernel, wurde aber nach der Fusion mit dem Code aus FreeBSD als die Hauptimplementierung von OpenZFS anerkannt und umbenannt.

Die Arbeit von OpenZFS wurde mit Linux-Kernen von 4.18 bis 6.12 und allen FreeBSD-Zweigen ab 13.3 getestet. Der Code wird unter der freien CDDL-Lizenz verbreitet. OpenZFS wird bereits in FreeBSD verwendet und ist Teil der Distributionen Debian, Ubuntu, Gentoo, NixOS und ALT Linux. Pakete mit der neuen Version werden in Kürze für die wichtigsten Linux-Distributionen vorbereitet, einschließlich Debian, Ubuntu, Fedora, RHEL/CentOS.

OpenZFS bietet eine Implementierung der ZFS-Komponenten, die sowohl mit dem Betrieb des Dateisystems als auch mit der Funktionsweise des Volume-Managers verbunden sind. Es wurden die Komponenten SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) und ZPL (ZFS POSIX Layer) implementiert. Das Projekt ermöglicht es auch, ZFS als Backend für das Cluster-Dateisystem Lustre zu verwenden. Die Arbeiten an OpenZFS basieren auf dem ursprünglichen ZFS-Code, der aus dem Projekt OpenSolaris importiert und durch Verbesserungen und Korrekturen der Illumos-Community erweitert wurde. Das Projekt wird mit Unterstützung von Mitarbeitern des Lawrence Livermore National Laboratory im Rahmen eines Vertrags mit dem US-Energieministerium weiterentwickelt.

Der Code wird unter der freien Lizenz CDDL veröffentlicht, die nicht mit GPLv2 kompatibel ist, was eine Integration von OpenZFS in den Hauptzweig des Linux-Kernels verhindert, da eine Vermischung von Code unter den Lizenzen GPLv2 und CDDL nicht zulässig ist. Um die Lizenzunverträglichkeit zu umgehen, wurde beschlossen, das Produkt für Linux vollständig unter der Lizenz CDDL in Form eines separat ladbaren Moduls zu verbreiten, das von dem Kernel getrennt bereitgestellt wird. Die Stabilität der Codebasis von OpenZFS wird als vergleichbar mit anderen Dateisystemen für Linux bewertet.

Hauptänderungen:

  • Die Möglichkeit, neue Festplatten im laufenden Betrieb zu einem bestehenden RAIDZ-Verbund hinzuzufügen, wurde implementiert, um die Speicherkapazität ohne Unterbrechung des Betriebs und ohne die Notwendigkeit der Erstellung einer neuen Gruppe von Speichermedien zu erhöhen. Die Umverteilung überflüssiger Daten unter Berücksichtigung der neuen Festplatten erfolgt automatisch. Zum Hinzufügen einer Festplatte zu einer bestehenden Gruppe kann der Befehl „zpool attach POOL raidzP-N NEW_DEVICE“ verwendet werden, und zur Überwachung des Abschlusses des Hintergrundprozesses zur Erweiterung des Verbunds kann „zpool status“ verwendet werden.
  • Die Ausführung von Operationen, die mit der Deduplication von Datenblöcken verbunden sind, wurde erheblich beschleunigt. Die Optimierungen umfassten unter anderem das Format der Deduplication-Tabellen, sodass zur Nutzung der vorgeschlagenen Optimierungen in bereits bestehenden Pools die Option „fast_dedup“ aktiviert werden muss; danach werden neue Deduplication-Tabellen erstellt, die parallel zu den alten Tabellen verwendet werden.
  • Ein Direct IO-Modus wurde hinzugefügt, der das Lesen und Schreiben von Operationen über den ARC-Cache (Adaptive Replacement Cache) hinweg ermöglicht. Der Modus verbessert die Effizienz in Situationen, in denen das Caching aufgrund zusätzlicher Kopieroperationen im Speicher die Leistung negativ beeinflussen kann, zum Beispiel bei der Verwendung von NVMe-Geräten.
  • Die meisten Befehle (zfs list|get|mount|version, zpool status|list|get|version) haben die Option „-j“ für die Ausgabe im JSON-Format erhalten.
  • Die zulässige Größe von Datei- und Verzeichnisnamen wurde von 255 auf 1023 Zeichen erhöht (die neue Größe wurde unter Berücksichtigung der Platzierung von 255 4-Byte-Zeichen ausgewählt).
  • Leistungsoptimierungen wurden in verschiedenen Teilen des Codes durchgeführt.
  • Im Kernelmodul wurden folgende Optionen hinzugefügt:
    • dmu_ddt_copies
    • raidz_expand_max_copy_bytes
    • raidz_expand_max_reflow_bytes
    • raidz_io_aggregate_rows
    • spa_cpus_per_allocator
    • spa_num_allocators
    • zap_shrink_enabled
    • zfetch_max_idistance
    • zfs_active_allocator
    • zfs_arc_shrinker_seeks
    • zfs_dedup_log_flush_entries_min
    • .zfs_dedup_log_flush_flow_rate_txgs
    • zfs_dedup_log_flush_min_time_ms
    • zfs_dedup_log_flush_passes_max
    • zfs_dedup_log_mem_max
    • zfs_dedup_log_mem_max_percent
    • zfs_dedup_log_txg_max
    • zfs_dio_enabled
    • zfs_dio_write_verify_events_per_second
    • zfs_resilver_defer_percent
    • zfs_scrub_after_expand
    • zfs_snapshot_no_setuid
    • zfs_vdev_direct_write_verify
    • zio_taskq_write_tpq

Quelle: opennet.ru

60GB SSD 8Gb DDR4