Kent Overstreet hat die Version 1.33.0 des Dateisystems Bcachefs veröffentlicht. Das Release umfasst zwei Pakete: bcachefs-kernel-dkms mit einem Kernel-Modul, das mit Hilfe des DKMS (Dynamic Kernel Module Support) Systems kompiliert wird, und bcachefs-tools mit dem im Benutzerraum laufenden Dienstprogramm bcachefs, das Befehle zum Erstellen (mkfs), Einhängen, Wiederherstellen und Überprüfen des Dateisystems implementiert. Die Pakete sind für Debian, Ubuntu, Fedora, openSUSE, NixOS und Arch Linux zusammengestellt. Das DKMS-Modul unterstützt Kernels von Linux ab Version 6.16.
In der neuen Version wurde die Funktionalität „reconcile“ (rebalance_v2) hinzugefügt, die als die bedeutendste Änderung im Dateisystem der letzten zwei Jahre gekennzeichnet ist. Im Gegensatz zum zuvor verfügbaren „rebalance“-Modus ermöglicht der „reconcile“-Mechanismus die Neuverteilung nicht nur von Daten (zum Beispiel das Replizieren mehrerer Kopien auf verschiedene Speicher), sondern auch von Metadaten im Dateisystem (zum Beispiel zur Übertragung von Metadaten nach der Hinzufügung eines weiteren Speichers zum Pool). Darüber hinaus ist reconcile jetzt für alle Eingabe-/Ausgabeoptionen anwendbar und nicht nur für Hintergrundkopier- und Komprimierungsoperationen. Im reconcile werden auch automatisch Änderungen an den Optionen oder Einstellungen der Geräte berücksichtigt, und degradierte Daten sowie Metadaten werden sofort repliziert.
Im reconcile werden separate Indizes verwendet für: hochpriorisierte Operationen; Optimierung der Datenverarbeitung auf Datenträgern; Daten, deren Verarbeitung momentan nicht möglich ist (zum Beispiel aufgrund von Speichermangel). Unterstützung für die Erstellung eines Dateisystems auf einem einzigen Speichermedium im Modus mit doppelter Replikation (replicas=2) wurde hinzugefügt – in dieser Konfiguration führt die Hinzufügung eines zweiten Speichers zur automatischen Replikation der Daten auf die hinzugefügte Festplatte, ohne dass der Benutzer irgendwelche Aktionen durchführen muss.
Unter den weiteren Änderungen:
- Die Befehle „reconcile status“ und „reconcile wait“ wurden hinzugefügt. Die Montageoptionen „mount_trusts_udev“ und „writeback_timeout“ wurden hinzugefügt. Die Befehle „data rereplicate“ und „data job drop_extra_replicas“ wurden als veraltet markiert.
- Ein Wiederherstellungsmodus „merge_btree_nodes“ wurde hinzugefügt, der alle Knoten in btree-Strukturen überprüft, die unter die Fusionierungsoperationen fallen.
- Der Code wurde für den Übergang zur Nutzung der Programmiersprache Rust vorbereitet. Die Anzahl der im Code verwendeten goto-Operationen wurde von 2500 auf 600 reduziert. Anstelle von hartcodierten Vektoren wurde das Makro DARRAY() verwendet, das eine ähnliche Funktionalität wie dynamische Arrays in C++ und Rust bietet. Zur Behandlung von Fehlern wurde das Makro try() verwendet, das aus Rust entlehnt ist.
- Im Team "bcachefs fs usage" wurde sichergestellt, dass die Informationen über degradierte Daten korrekt sind.
- Die Verarbeitung der von dem Befehl "bcachefs fs top" angezeigten Zähler wurde überarbeitet. Das Hinzufügen neuer Zähler wurde vereinfacht und die Möglichkeit zur Umwandlung von Tracepoints in Printbufs wurde implementiert.
- Die Qualität der Fehlermeldungen wurde verbessert, die nun Informationen über die Art der Ausfälle (Software- oder Hardwarefehler), Maßnahmen zur Fehlerbehebung (z. B. Start des Wiederherstellungsprozesses) und Fehlercodes von Blockgeräten sowie fehlende Geräte enthalten. Beim Scannen der B-Baum-Strukturen wird auch über die Möglichkeit zur Wiederherstellung defekter Knoten informiert.
- Beim Schreiben in das Protokoll wurde die Möglichkeit hinzugefügt, separate Grenzen für die Intensität der Ausgabe verschiedener Fehlerarten festzulegen. Solche Grenzen helfen, den Verlust von Meldungen über einmalige Hardwareprobleme im Hintergrund vieler Softwarefehler zu verhindern.
- Für alle Wiederherstellungsphasen wurden Fortschrittsanzeigen hinzugefügt.
Das Bcachefs-Projekt entwickelt ein Dateisystem, das darauf abzielt, erweiterte Funktionen, die für Btrfs und ZFS typisch sind, mit der Leistung, Zuverlässigkeit und Skalierbarkeit zu kombinieren, die für XFS charakteristisch sind. Bcachefs unterstützt Funktionen wie das Einbinden mehrerer Geräte in eine Partition, mehrschichtige Speicheranordnungen (untere Schicht mit häufig verwendeten Daten auf schnellen SSDs und obere Schicht mit weniger gefragten Daten von Festplatten), Replikation (RAID 1/10), Caching, transparente Datenkompression (Modi LZ4, gzip und ZSTD), Zustands-Snapshots, Integritätsprüfung durch Prüfziffern, die Möglichkeit zur Speicherung von Reed-Solomon-Fehlerkorrekturcodes (RAID 5/6) und die Speicherung von Informationen in verschlüsselter Form (Verwendung von ChaCha20 und Poly1305). In Bezug auf die Leistung übertrifft Bcachefs Btrfs und andere auf Copy-on-Write basierende Dateisysteme und zeigt eine Arbeitsgeschwindigkeit, die nahe an Ext4 und XFS liegt.
Quelle: opennet.ru
