Kent Overstreet, der Autor des BCache-Systems zur Zwischenspeicherung von Blockgeräten auf SSDs, fasste in seinem Vortrag auf der LSFMM 2023 (Linux Storage, Filesystem, Memory Management & BPF Summit) die Ergebnisse der Arbeiten zur Förderung des Dateisystems Bcachefs in den Linux-Kernel zusammen und teilte die zukünftigen Entwicklungspläne für dieses FS mit. Im Mai wurde ein aktualisierter Patchsatz zur Überprüfung und für die Einbeziehung in den Linux-Kernel vorgeschlagen, der die Implementierung des Bcachefs-Dateisystems enthält. Das Bcachefs-Dateisystem entwickelt sich seit etwa 10 Jahren. Bereits Ende 2020 wurde die Bereitschaft zur Überprüfung der Implementierung von Bcachefs vor der Aufnahme in den Kernel bekannt gegeben, und die aktuellen Patchversionen berücksichtigen die während der vorherigen Überprüfung festgestellten Mängel und Verbesserungen.
Das Ziel der Entwicklung von Bcachefs besteht darin, die Leistungsfähigkeit, Zuverlässigkeit und Skalierbarkeit von XFS zu erreichen und gleichzeitig zusätzliche Funktionen, die charakteristisch für Btrfs und ZFS sind, anzubieten. Dazu gehören unter anderem die Integration mehrerer Geräte in ein Volume, mehrschichtige Anordnungen von Speichermedien, Replikation (RAID 1/10), Caching, transparente Datenkompression (im LZ4-, Gzip- und ZSTD-Modus), Status-Schnappschüsse, Integritätsüberprüfung durch Prüfziffern sowie die Möglichkeit der Speicherung von Reed-Solomon-Fehlerkorrekturcodes (RAID 5/6) und Informationen in verschlüsselter Form (unter Verwendung von ChaCha20 und Poly1305). In puncto Leistung übertrifft Bcachefs Btrfs und andere Dateisysteme, die auf dem Copy-on-Write-Mechanismus basieren, und weist Geschwindigkeiten auf, die nahe an Ext4 und XFS liegen.
Zu den jüngsten Entwicklungen in der Bcachefs-Entwicklung gehört die Stabilisierung der schreibbaren Snapshots. Im Vergleich zu Btrfs skalieren Snapshots in Bcachefs jetzt erheblich besser und sind frei von Problemen, die typischerweise bei Btrfs auftreten. In der Praxis wurden die Snapshots bei der Organisation von MySQL-Backups getestet. Außerdem wurde in Bcachefs viel Arbeit in die Verbesserung der Skalierbarkeit investiert – das Dateisystem hat sich bei Tests in Speichersystemen mit einer Größe von 100 TB gut bewährt, und in naher Zukunft wird die Implementierung 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 wir, die Implementierung von Fehlerkorrekturcodes und RAIDZ auf einen stabilen Zustand zu bringen und Probleme mit dem hohen Speicherbedarf während der Wiederherstellung und Überprüfung des Dateisystems mit dem fsck-Tool zu lösen.
In zukünftigen Plänen wird der Wunsch erwähnt, bei der Entwicklung von Bcachefs die Programmiersprache Rust zu verwenden. Der Autor von Bcachefs hat eine Vorliebe für das Programmieren und nicht für das Debuggen von Code, und jetzt ist es ihm wahnsinnig, in C zu programmieren, wenn eine bessere Option zur Verfügung steht. Rust wird bereits in Bcachefs für die Implementierung einiger in User-Space ausgeführter Tools genutzt. Darüber hinaus wird die Idee verfolgt, Bcachefs schrittweise vollständig in Rust neu zu schreiben, da der Einsatz dieser Sprache die Debugging-Zeit erheblich verkürzt.
Was die Aufnahme von Bcachefs in den Kern des Linux-Betriebssystems betrifft, könnte der Prozess aufgrund des umfangreichen Umfangs der Änderungen (2.500 Patches und etwa 90.000 Codezeilen) länger dauern, da diese schwer zu überprüfen sind. Um die Überprüfung zu beschleunigen, haben einige Entwickler vorgeschlagen, die Patch-Serie in kleinere, logisch getrennte Teile aufzuteilen. Während der Diskussion wiesen einige Teilnehmer auch auf die Entwicklung des Projekts durch einen einzelnen Entwickler hin und äußerten Bedenken, dass der Code möglicherweise unbetreut 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 Fehlerbehebungen).
Bcachefs entwickelt sich unter Verwendung bewährter Technologien aus der Entwicklung des Blockgeräts Bcache, das zum Caching des Zugriffs auf langsame Festplatten mit schnellen SSD-Speichern konzipiert wurde (eingeführt mit Version 3.10 des Kernels). Bcachefs nutzt einen Copy-on-Write (COW) Mechanismus, bei dem Änderungen nicht zur Überschreibung von Daten führen — der neue Zustand wird an einem neuen Ort geschrieben, nach dem der Zeiger auf den aktuellen Zustand geändert wird.
Ein besonderes Merkmal von Bcachefs ist die Unterstützung einer mehrschichtigen Anbindung von Speichermedien, bei der der Speicher aus mehreren Schichten zusammengesetzt wird — die untere Schicht besteht aus den schnellsten Speichermedien (SSD), die zum Caching häufig verwendeter Daten genutzt werden, während die obere Schicht aus größeren und kostengünstigeren Festplatten besteht, die die weniger benötigten Daten speichern. Zwischen den Schichten kann ein Caching im Writeback-Modus angewendet werden. Speichergeräte können dynamisch hinzugefügt und vom Volume getrennt werden, ohne dass der Betrieb des Dateisystems gestoppt werden muss (die Daten migrieren automatisch).
Quelle: opennet.ru
