Bcachefs Promotion in den Linux-Kernel

Kent Overstreet, der Autor des in den Linux-Kernel integrierten Cache-Systems für SSD-Speichergeräte BCache, fasste in seinem Vortrag auf der LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) die Ergebnisse der Arbeit zur Integration des Dateisystems Bcachefs in den Hauptteil des Linux-Kernels zusammen und erläuterte die Pläne für die weitere Entwicklung dieses Dateisystems. Im Mai wurde ein aktualisierter Patch-Satz für die Überprüfung und Aufnahme in den Hauptteil des Linux-Kernels vorgeschlagen, der die Implementierung des Dateisystems Bcachefs enthält. Das Dateisystem Bcachefs wird seit etwa 10 Jahren entwickelt. Bereits Ende 2020 wurde die Bereitschaft zur Überprüfung der Implementierung von Bcachefs angekündigt, und die aktuellen Patches berücksichtigen die im vorherigen Review festgestellten Anmerkungen und Mängel.

Das Ziel der Entwicklung von Bcachefs ist es, die Leistungsfähigkeit, Zuverlässigkeit und Skalierbarkeit von XFS zu erreichen und dabei zusätzliche Funktionen zu bieten, die für Btrfs und ZFS charakteristisch sind, wie etwa die Einbeziehung mehrerer Geräte in eine Partition, mehrschichtige Speicheranordnungen, Replikation (RAID 1/10), Caching, transparente Datenkompression (Modi LZ4, gzip und ZSTD), Status-Schnappschüsse, 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 (unter Verwendung von ChaCha20 und Poly1305). In Bezug auf die Leistung übertrifft Bcachefs Btrfs und andere Dateisysteme, die auf dem Copy-on-Write-Mechanismus basieren, und zeigt Geschwindigkeiten, die mit Ext4 und XFS vergleichbar sind.

Zu den jüngsten Fortschritten in der Entwicklung von Bcachefs gehört die Stabilisierung der Snapshot-Implementierung, die schreibbar ist. Im Vergleich zu Btrfs skalieren Snapshots in Bcachefs jetzt deutlich besser und sind frei von den Problemen, die Btrfs eigen sind. In der Praxis wurden die Snapshots bei der Organisation von MySQL-Backups getestet. In Bcachefs wurde auch viel Arbeit in die Verbesserung der Skalierbarkeit investiert – das Dateisystem hat sich bei Tests in Speichern mit einer Größe von 100 TB gut bewährt, und in naher Zukunft wird die Einführung von Bcachefs in einem 1 PB großen Speicher erwartet. Ein neuer nocow-Modus wurde hinzugefügt, um den „Copy-on-Write“-Mechanismus (nocow) zu deaktivieren. Im Laufe des Sommers planen sie, die Implementierung von Fehlerkorrekturcodes und RAIDZ in einen stabilen Zustand zu bringen und die Probleme mit dem hohen Speicherverbrauch während der Wiederherstellung und Überprüfung des Dateisystems mit dem fsck-Tool zu lösen.

Für die Zukunft wird der Wunsch geäußert, bei der Entwicklung von Bcachefs die Programmiersprache Rust zu verwenden. Der Autor von Bcachefs ist der Meinung, dass er lieber programmiert als den Code zu debuggen, und es jetzt etwas Verrücktes ist, Code in C zu schreiben, wenn eine bessere Option verfügbar ist. Rust wird bereits in Bcachefs für die Implementierung einiger im Benutzerspeicher ausgeführter Dienstprogramme verwendet. Darüber hinaus wird die Idee verfolgt, Bcachefs schrittweise vollständig in Rust neu zu schreiben, da die Verwendung dieser Sprache die Debugging-Zeit erheblich verkürzt.

Was die Integration von Bcachefs in den Hauptkern von Linux betrifft, könnte sich der Annahmeprozess aufgrund der ausreichend großen Änderungsgröße (2500 Patches und etwa 90.000 Codezeilen), die schwer zu überprüfen ist, hinziehen. Um die Überprüfung zu beschleunigen, haben einige Entwickler vorgeschlagen, die Patch-Serie in kleinere und logisch getrennte Teile zu unterteilen. Während der Diskussion haben einige Teilnehmer zudem auf die Entwicklung des Projekts durch einen einzelnen Entwickler hingewiesen und die Gefahr betont, dass der Code ohne Pflege bleiben könnte, falls dem Entwickler etwas zustößt (zwei Mitarbeiter von Red Hat zeigen Interesse an dem Projekt, aber ihre Arbeit beschränkt sich bisher auf die Behebung von Fehlern).

Bcachefs entwickelt sich unter Verwendung von Technologien, die bereits bei der Entwicklung des Blockgeräts Bcache erprobt wurden, das zum Caching des Zugriffs auf langsame Festplatten auf schnellen SSDs dient (im Kernel seit Version 3.10). In Bcachefs wird der Copy-on-Write (COW) Mechanismus verwendet, bei dem Änderungen nicht zu einer Überschreibung der Daten führen — der neue Zustand wird an einem neuen Ort geschrieben, woraufhin der Zeiger auf den aktuellen Zustand geändert wird.

Ein charakteristisches Merkmal von Bcachefs ist die Unterstützung der mehrschichtigen Anbindung von Speichermedien, bei der der Speicher aus mehreren Schichten besteht – die schnellsten Speicher (SSD) werden an die unterste Schicht angeschlossen, um häufig verwendete Daten zwischenzuspeichern, während die obere Schicht aus größeren und kostengünstigeren Festplatten besteht, die weniger gefragte Daten speichern. Zwischen den Schichten kann Caching im Writeback-Modus verwendet werden. Speichermedien können dynamisch zum Partition hinzugefügt und davon getrennt werden, ohne die Nutzung des Dateisystems zu unterbrechen (Daten migrieren automatisch).

Quelle: opennet.ru

60GB SSD 8Gb DDR4