# Bcachefs

Bcachefs ist ein Copy-On-Write-Dateisystem für Linux, das aus der Entwicklung von bcache hervorgegangen ist und so wie dieses von Kent Overstreet seit 2015 hauptverantwortlich entwickelt wird. Es steht, wie der Linux-Kernel, unter der GPL und konkurriert vom Umfang der Funktionen her direkt mit den Dateisystemen ZFS und Btrfs, will aber in Punkto Geschwindigkeit die Dateisysteme ext4 und XFS übertreffen. Es galt bereits früh als stabil, hatte aber nur eine eingeschränkte Nutzergemeinde. Seit 2022 wurde an der Aufnahme in den Hauptentwicklerzweig des Linux-Kernels gearbeitet, wo es in Version 6.7 vom Januar 2024 aufgenommen wurde.

## Entwicklung

Bei der Entwicklung von bcache erkannte dessen Entwickler Kent Overstreet, dass dieses bereits viele Grundelemente eines Dateisystems aufweist, woraufhin er beschloss, bcache – was für block device cache steht – in ein vollwertiges Dateisystem auszubauen. Im August 2015 stellte er sein nunmehr bcachefs (für bcache + fs für englisch file system) genanntes Dateisystem auf LKML.org den Kernel-Entwicklern vor. Das Dateisystem bietet neben Copy-On-Write (CoW) auch Prüfsummen für Daten und Metadaten, Caching, Kompression, Verschlüsselung und Snapshots.
Seit Linux-Kernel 6.7 vom 7. Januar 2024 ist bcachefs im Mainline-Kernel integriert.

### Suspendierung

Für die Linux-Kernel-Version 6.13 hatte Linus Torvalds Kent Overstreet vorübergehend suspendiert, was bedeutete, dass er keine Patches von Overstreet annahm. Dem vorausgegangen waren Beleidigungen von Overstreet, auch gegenüber angesehenen langjährigen Kernel-Entwicklern. Das dafür zuständige CoC-Komitee, das einen selbst auferlegten Verhaltenskodex für alle Linux-Entwickler vorgibt, stellte schließlich fest, dass Overstreet die Grenzen guten Benehmens überschritten hatte. Da zu diesem Zeitpunkt noch keine Sanktionen festgelegt waren, wurden diese im Rahmen des Regelwerks erarbeitet und am 15. November 2024 zur Dokumentation des Linux-Kernels hinzugefügt. Zusätzlich gab es aber auch allgemeine Befürchtungen über zu wenig Tests der Patches von Overstreet, was für den Hauptentwicklerzweig von Linux deshalb problematisch ist, weil dieser stets stabil sein soll.
Kent Overstreet hatte sich danach über seinen Patreon-Auftritt an seine Unterstützer gewandt, sich aber nicht entschuldigt. In einem rund 36.000 Zeichen langen Text bezeichnete er die Zukunft und Weiterentwicklung von Bcachefs im Linux-Kernel als ungewiss.

## Eigenschaften

Das Dateisystem ist auf Robustheit ausgelegt. Das im Kernel aufgenommene bcachefs gilt als feature-complete und sticht gegenüber den klassischen Linux-Dateisystemen ext und XFS heraus, weil es von Haus aus Checksumming und die Unterstützung mehrerer Datenträger bietet und u. a. keinen Logical Volume Manager benötigt. Wie andere moderne Dateisysteme, etwa ZFS und Btrfs, bietet bcachefs Caching und Snapshots, sowie Replikation im Stil von RAID1 und RAID10.
Bcachefs ist ein copy-on-write (COW) Dateisystem für Linux-basierte Betriebssysteme. Funktionen umfassen Caching, vollständige Dateisystem-Verschlüsselung mit den Algorithmen ChaCha20 und Poly1305, native Kompression über LZ4, gzip und Zstandard, snapshots, CRC-32C und 64-Bit-Prüfsummeming. Sie kann Blockgeräte überspannen, auch in RAID-Konfigurationen.
Auf der Ebene der Datenstruktur verwendet bcachefs B-Baume wie viele andere moderne Dateisysteme, jedoch mit einer ungewöhnlich großen Knotengröße von standardmäßig 256 KiB. Diese Knoten sind intern log-structured und bilden eine hybride Datenstruktur, wodurch die Notwendigkeit des Neuschreibens von Knoten bei der Aktualisierung reduziert wird. Snapshots werden nicht durch Klonen eines COW-Baums implementiert, sondern durch Hinzufügen einer Versionsnummer zu Dateisystemobjekten. Die COW-Funktion und der Bucket Allocator ermöglichen eine RAID-Implementierung, von der behauptet wird, dass sie weder unter dem Schreibloch noch unter IO-Fragmentierung leidet.