Kent Overstreet hat die Version 1.38.6 des Bcachefs-Dateisystems veröffentlicht und die offizielle Einstellung des Projekts fĂŒr experimentelle Entwicklungen bekannt gegeben. In letzter Zeit hat sich die Anzahl der eingehenden Probleme verringert, und die festgestellten Fehler sind weniger schwerwiegend und komplex geworden.
Die Veröffentlichung umfasst zwei Pakete: bcachefs-kernel-dkms mit einem Kernel-Modul, das mit dem DKMS (Dynamic Kernel Module Support)-System kompiliert wird, und bcachefs-tools mit dem im Benutzermodus laufenden Tool bcachefs, das Befehle zur Erstellung (mkfs), Einbindung, Wiederherstellung und ĂberprĂŒfung des Dateisystems implementiert. Die Pakete wurden fĂŒr Debian, Ubuntu, Arch Linux erstellt und werden fĂŒr Fedora, openSUSE und NixOS erwartet. Das DKMS-Modul unterstĂŒtzt Kernels ab Version 6.16.
Trotz der unscheinbaren Versionsnummer, die durch das Fehlen von Ănderungen im Festplattenformat bedingt ist, beinhaltet die Version 1.38.6 eine Reihe signifikanter Leistungsoptimierungen. In den Code zur Verarbeitung von Strukturen im Btree-Format, zur Protokollierung und zur GewĂ€hrleistung des Betriebs des Dateisystems wurden rund 200 Ănderungen eingefĂŒhrt, die die Leistung steigern. Die Logik zur BestĂ€tigung von Transaktionen wurde auf 4 KB Maschinencode reduziert, und es wurden Optimierungen hinzugefĂŒgt, um das Entstehen von konkurrierenden Sperren (âlock contentionâ) beim Arbeiten mit Btrees zu vermeiden; der Prozess des Journal Flush ist vollstĂ€ndig von Sperren befreit.
Auf Server Mit einer 48-Kern-CPU von AMD hat Bcachefs eine Bandbreite von 16,5 GB/s erreicht, wĂ€hrend 48 dbench-Clients ausgefĂŒhrt wurden (zum Vergleich: XFS erzielte ein Ergebnis von 16 GB/s). Patches, die die Leistung in dbench-Tests auf 19 GB/s steigern, wurden vorbereitet, aber fĂŒr die nĂ€chste Veröffentlichung zurĂŒckgestellt (diese Patches erfordern zusĂ€tzliche Tests oder Ănderungen am Festplattenformat). Bei Tests mit dem Tool fio betrug die Leistung von Bcachefs 700 IOPS bei zufĂ€lligen SchreibvorgĂ€ngen mit 4-KB-Blöcken (XFS zeigt in diesem Test eine Million IOPS, wobei XFS auf Blockremapping beschrĂ€nkt ist, wĂ€hrend Bcachefs den kompletten CoW-Zyklus (Copy-on-Write) mit PrĂŒfungen von Checksummen und Aktualisierungen der btree-Struktur verarbeitet.)
Neben Optimierungen bietet die Version Bcachefs 1.38.6 UnterstĂŒtzung fĂŒr den Anschluss von bis zu 255 GerĂ€ten an ein einziges Dateisystem. Im Repository apt.bcachefs.org hat die Paketerstellung fĂŒr Ubuntu 26.04 begonnen. Die Infrastruktur fĂŒr kontinuierliche Integration und automatisierte Tests wurde auf die ĂberprĂŒfung von Builds auf Docker-Kernel-Modulen (DKMS) umgestellt. In den nĂ€chsten Monaten liegt der Fokus auf der Optimierung der Dateisystemleistung mit mehreren SpeichergerĂ€ten.
DarĂŒber hinaus wird weiterhin am Neu-Ăbersetzen des Codes in Rust gearbeitet. Dabei wird festgestellt, dass die UnterstĂŒtzung von Rust im Kernel einen bedeutenden Meilenstein erreicht hat â alle wichtigen Distributionen haben bei der Erstellung der Pakete fĂŒr den Kernel 7.0 standardmĂ€Ăig die Einstellung CONFIG_RUST aktiviert, um den Kernel mit Rust-UnterstĂŒtzung zu bauen. Im Bcachefs-Projekt wurden bereits eine Reihe von Dienstprogrammen in Rust neu geschrieben.
bcachefs-tools, die im Benutzermodus ausgefĂŒhrt werden, einschlieĂlich der Implementierung einer API zur Arbeit mit btree-Strukturen. Im nĂ€chsten Release ist geplant, die vorbereiteten Schnittstellen in das DKMS-Modul des Kernels zu integrieren und mit dem Neu-Schreiben des Grundcodes fĂŒr Bcachefs zu beginnen. Es wird erwartet, dass die Verwendung von Rust die FlexibilitĂ€t, StabilitĂ€t und Benutzerfreundlichkeit des Codes erhöht, das Projekt fĂŒr junge Ingenieure attraktiver macht und in Zukunft eine formale Verifizierung der ZuverlĂ€ssigkeit ermöglicht.
Das Projekt Bcachefs entwickelt ein Dateisystem, das darauf abzielt, die erweiterte FunktionalitĂ€t von Btrfs und ZFS mit einem Leistungs-, ZuverlĂ€ssigkeits- und Skalierbarkeitsniveau zu kombinieren, das charakteristisch fĂŒr XFS ist. Bcachefs unterstĂŒtzt Funktionen wie das Einbinden mehrerer GerĂ€te in ein Volume, mehrschichtige Speicherlayouts (untere Schicht mit hĂ€ufig verwendeten Daten auf schnellen SSDs und obere Schicht mit weniger hĂ€ufig verwendeten Daten von Festplatten), Replikation (RAID 1/10), Caching, transparentes Datenkomprimieren (Modi LZ4, gzip und ZSTD), Zustands-SchnappschĂŒsse, IntegritĂ€tsprĂŒfung via PrĂŒfziffern, Fehlerkorrekturcodes und die Speicherung von Informationen in verschlĂŒsselter Form (es werden ChaCha20 und Poly1305 verwendet).
Zu den wesentlichen Neuerungen, die in den letzten Monaten zu Bcachefs hinzugefĂŒgt wurden, gehören:
- Der Mechanismus âreconcileâ (rebalance_v2) ermöglicht im Unterschied zum Modus ârebalanceâ nicht nur die Rebalancierung von Daten (zum Beispiel die Replikation mehrerer Kopien auf verschiedene SpeichergerĂ€te), sondern auch die Anpassung von Metadaten im Dateisystem (zum Beispiel zur Ăbertragung von Metadaten nach der HinzufĂŒgung eines zusĂ€tzlichen Speichers). Reconcile ist fĂŒr alle Eingabe-/Ausgabe-Operationen anwendbar und nicht nur fĂŒr Hintergrundkopierungen und Komprimierungsoperationen. Bei Reconcile werden Ănderungen an den GerĂ€teeinstellungen automatisch berĂŒcksichtigt, und degradiertes Datenmaterial sowie Metadaten werden sofort neu repliziert.
- UnterstĂŒtzung von Fehlerkorrekturcodes, die es ermöglichen, beschĂ€digte Daten analog zu RAID 5/6 wiederherzustellen. Die Implementierung basiert auf Reed-Solomon-Codierung, die bis zu N Fehler in einem Stripe beheben kann, wenn N redundante Blöcke vorhanden sind. Es sorgt fĂŒr die automatische Wiederherstellung degradierten Stripes. Die Verwendung von Wiederherstellungscodes ist in Konfigurationen mit Speichermedien unterschiedlicher GröĂe anwendbar.
Quelle: opennet.ru
