Heraufstufen von Bcachefs auf den Linux-Kernel

Kent Overstreet, der Autor des SSD-Blockgeräte-Caching-Systems BCache, das Teil des Linux-Kernels ist, fasste in seiner Rede auf der LSFMM 2023-Konferenz (Linux Storage, Filesystem, Memory Management) die Ergebnisse der Arbeit zur Förderung des Bcachefs-Dateisystems zusammen & BPF Summit) in die Hauptzusammensetzung des Linux-Kernels ein und sprach über Pläne für die Weiterentwicklung dieses FS. Im Mai wurde ein aktualisierter Satz von Patches mit der Implementierung des Bcachefs FS zur Überprüfung und Aufnahme in die Hauptzusammensetzung des Linux-Kernels vorgeschlagen. FS Bcachefs entwickelt seit etwa 10 Jahren. Die Bereitschaft, die Implementierung von Bcachefs vor der Aufnahme in den Kern zu überprüfen, wurde Ende 2020 bekannt gegeben, und die aktuelle Version der Patches berücksichtigt die bei der vorherigen Überprüfung festgestellten Kommentare und Mängel.

Das Entwicklungsziel von Bcachefs besteht darin, das XFS-Niveau in Bezug auf Leistung, Zuverlässigkeit und Skalierbarkeit zu erreichen und gleichzeitig zusätzliche Funktionen bereitzustellen, die Btrfs und ZFS innewohnen, wie z. B. die Einbeziehung mehrerer Geräte in eine Partition, mehrschichtige Speicherlayouts, Replikation (RAID 1/10), Caching, transparente Datenkomprimierung (LZ4-, gzip- und ZSTD-Modi), State Slices (Snapshots), Integritätsüberprüfung durch Prüfsummen, die Möglichkeit, Reed-Solomon-Fehlerkorrekturcodes zu speichern (RAID 5/6), verschlüsselte Speicherung von Informationen (ChaCha20 und Poly1305). werden verwendet). In Bezug auf die Leistung liegt Bcachefs vor Btrfs und anderen Dateisystemen, die auf dem Copy-on-Write-Mechanismus basieren, und weist eine Leistung auf, die der von Ext4 und XFS nahe kommt.

Zu den neuesten Errungenschaften in der Entwicklung von Bcachefs gehört die Stabilisierung der Implementierung von zum Schreiben verfügbaren Snapshots. Im Vergleich zu Btrfs sind Snapshots in Bcachefs jetzt viel besser skalierbar und frei von den mit Btrfs verbundenen Problemen. In der Praxis wurde die Funktion von Snapshots bei der Organisation von MySQL-Backups getestet. Bcachefs hat auch viel Arbeit geleistet, um die Skalierbarkeit zu verbessern – das Dateisystem schnitt beim Testen im 100-TB-Speicher gut ab und Bcachefs wird voraussichtlich in naher Zukunft im 1-PB-Speicher implementiert. Es wurde ein neuer Nowow-Modus 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 Probleme mit hohem Speicherverbrauch beim Wiederherstellen und Überprüfen von Dateisystemen mit dem Dienstprogramm fsck zu lösen.

Von den Plänen für die Zukunft wird der Wunsch erwähnt, die Rust-Sprache bei der Entwicklung von Bcachefs zu verwenden. Laut dem Autor von Bcachefs liebt er es, Code zu programmieren und nicht, Code zu debuggen, und jetzt ist es verrückt, Code in C zu schreiben, wenn es eine bessere Option gibt. Rust ist bei Bcachefs bereits an der Implementierung einiger User-Space-Dienstprogramme beteiligt. Darüber hinaus wird die Idee geschmiedet, Bcachefs in Rust nach und nach komplett neu zu schreiben, da die Verwendung dieser Sprache die Debugging-Zeit erheblich spart.

Was die Verlagerung von Bcachefs in den Mainstream des Linux-Kernels betrifft, kann sich der Einführungsprozess aufgrund des großen Umfangs der Änderungen (2500 Patches und etwa 90 Codezeilen) verzögern, der schwer zu überprüfen ist. Um die Überprüfung zu beschleunigen, haben einige Entwickler vorgeschlagen, die Patch-Serie in kleinere und logisch getrennte Teile aufzuteilen. Während der Diskussion machten einige Teilnehmer auch auf die Entwicklung des Projekts durch einen Entwickler und die Gefahr aufmerksam, dass der Code ungepflegt bleiben könnte, wenn seinem Entwickler etwas zustoßen würde (zwei Mitarbeiter von Red Hat sind an dem Projekt interessiert, aber ihre Arbeit ist noch nicht abgeschlossen). begrenzte Fehlerbehebungen).

Bcachefs wird unter Verwendung von Technologien entwickelt, die bereits bei der Entwicklung des Bcache-Blockgeräts getestet wurden und den Zugriff auf langsame Festplatten auf schnellen SSDs zwischenspeichern sollen (seit Version 3.10 im Kernel enthalten). Bcachefs verwendet den Copy-on-Write (COW)-Mechanismus, bei dem Änderungen nicht zum Überschreiben von Daten führen – der neue Status wird an einen neuen Speicherort geschrieben, woraufhin sich der aktuelle Statusindikator ändert.

Ein Merkmal von Bcachefs ist die Unterstützung der mehrschichtigen Verbindung von Laufwerken, bei der der Speicher aus mehreren Schichten besteht – die schnellsten Laufwerke (SSDs) sind mit der untersten Schicht verbunden, die zum Zwischenspeichern häufig verwendeter Daten verwendet wird, und die oberste Schicht bildet größere und günstigere Festplatten, auf denen weniger benötigte Daten gespeichert werden. Zwischen den Schichten kann Writeback-Caching verwendet werden. Laufwerke können einer Partition dynamisch hinzugefügt und von ihr getrennt werden, ohne die Nutzung des Dateisystems zu unterbrechen (Daten werden automatisch migriert).

Source: opennet.ru

Kommentar hinzufügen