Nach mehr als einem Jahr Entwicklung wurde das Release des Projekts OpenZFS 2.3.0 veröffentlicht, das die ZFS-Dateisystemimplementierung fĂŒr Linux und FreeBSD weiterentwickelt. Das Projekt ist bekannt geworden als 'ZFS auf Linux' und beschrĂ€nkte sich frĂŒher auf die Entwicklung eines Moduls fĂŒr den Linux-Kernel. Nach der ZusammenfĂŒhrung mit dem Code aus FreeBSD wurde es jedoch als die Hauptimplementierung von OpenZFS anerkannt und umbenannt.
OpenZFS funktioniert mit Linux-Kernen von 4.18 bis 6.12 und allen FreeBSD-Zweigen, beginnend mit 13.3. Der Code wird unter der freien CDDL-Lizenz vertrieben. OpenZFS wird bereits in FreeBSD verwendet und ist Teil der Distributionen Debian, Ubuntu, Gentoo, NixOS und ALT Linux. Pakete mit der neuen Version werden demnĂ€chst 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:
- Es ist nun möglich, neue Festplatten im laufenden Betrieb zu einem bestehenden RAIDZ-Array hinzuzufĂŒgen, um die SpeicherkapazitĂ€t zu erhöhen, ohne den Betrieb unterbrechen oder eine neue Gruppe von Speichermedien erstellen zu mĂŒssen. Die Neuzuordnung der redundanten Daten unter BerĂŒcksichtigung der neuen Festplatten erfolgt automatisch. Um eine Festplatte zu einer bestehenden Gruppe hinzuzufĂŒgen, kann der Befehl âzpool attach POOL raidzP-N NEW_DEVICEâ verwendet werden, wĂ€hrend der Fortschritt des Hintergrundprozesses zur Erweiterung des Arrays mit âzpool statusâ verfolgt werden kann.
- Die AusfĂŒhrung von Operationen, die mit der Deduplication von Datenblöcken verbunden sind, wurde erheblich beschleunigt. Zu den Optimierungen gehört unter anderem das Format der Deduplication-Tabellen. Um die vorgeschlagenen Optimierungen in bestehenden Pools zu nutzen, muss die Option âfast_dedupâ aktiviert werden, woraufhin neue Deduplication-Tabellen erstellt werden, die parallel zu den alten Tabellen verwendet werden.
- Ein neuer Direct IO-Modus wurde hinzugefĂŒgt, der es ermöglicht, Lese- und Schreiboperationen um den ARC (Adaptive Replacement Cache) herum durchzufĂŒhren. Dieser Modus erhöht die Effizienz in Situationen, in denen Caching die Leistung durch zusĂ€tzliche Kopieroperationen im Speicher negativ beeinflussen kann, beispielsweise bei der Nutzung 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 LĂ€nge von Dateinamen und Verzeichnissen wurde von 255 auf 1023 Zeichen erhöht (die neue LĂ€nge wurde fĂŒr die Unterbringung von 255 4-Byte-Zeichen gewĂ€hlt).
- Es wurden Leistungsoptimierungen in verschiedenen Teilen des Codes vorgenommen.
- Folgende Optionen wurden zum Kernelmodul 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
