Linux 6.7 bringt bcachefs

Der neue Linux-Kernel 6.7 bringt das lang erwartete Dateisystem bcachefs und wahlweise 32-Bit-Emulation. Itanium muss gehen.

In Pocket speichern vorlesen Druckansicht 256 Kommentare lesen

(Bild: heise online)

Lesezeit: 11 Min.
Von
  • Oliver Müller
Inhaltsverzeichnis

In der Nacht von Sonntag auf Montag erschien der neue Linux-Kernel 6.7. Er erblickte als erster Kernel des jungen Jahres das Licht der Welt und nicht – wie zuvor spekuliert – als letzter Kernel des alten Jahres. Das neue Kernel-Release bringt ein neues Dateisystem, wahlweise 32-Bit-Emulation und Verbesserungen bei der Speicherverwaltung und beim Netzwerkdurchsatz.

Am 21. Dezember hatte das Rätselraten ein Ende: Linus Torvalds entschied sich doch dafür, den neuen Kernel nicht in der Silvesternacht zu veröffentlichen. Stattdessen folgte noch ein achter Release-Candidate (6.7-rc8), der dem neuen Kernel eine Extrawoche für Tests verschaffte. Vor allem startete aber das Merge-Window für den nächsten Kernel 6.8 erst am 8. Januar. Dieses zweiwöchige Zeitfenster zum Einreichen und Festlegen der Patches für das nächste Kernel-Release hätte sonst ausgerechnet am Neujahrstag begonnen. Womöglich wären viele Entwickler doch noch abwesend gewesen.

Das schon mehrfach für die Integration vorgesehene Dateisystem bcachefs schaffte es nun endlich ins Kernel-Release. Das auf Robustheit und Zuverlässigkeit ausgelegte bcachefs tritt als "vollständiges" (feature-complete) Dateisystem an. Es beinhaltet bereits von Haus aus einige Extras wie Checksumming und das Unterstützen mehrerer Datenträger für ein Dateisystem, wofür andere Dateisysteme auf andere Systemdienste angewiesen sind.

Das moderne Dateisystem basiert auf Copy-on-Write (COW). Statt Daten beim Aktualisieren zu überschreiben, schreibt es diese an neue Positionen auf dem Datenträger und passt die Metadaten und Blöcke der jeweiligen Prozesse an. Auf dieser Basis bietet bcachefs einige moderne Features "out of the box" wie Snapshots, Caching oder geteilte Dateisysteme für virtuelle Maschinen.

Für die Datenintegrität bietet das neue Dateisystem Checksummen über Daten und Metadaten an. Zudem ist die Kompression und die Verschlüsselung von Daten bereits in bcachefs integriert. Zu den von bcachefs unterstützten Dateisystemen, die über mehrere Datenträger verteilt sind, zählen Replikation im Stile von RAID1 und RAID10 und ein eingebautes Erasure Coding nach Reed-Solomon zur Fehlerkorrektur, wie es auch die meisten RAID5- und RAID6-Implementierungen verwenden. Für alle diese Funktionen benötigt bcachefs keinen Volume-Manager wie etwa ext4 oder XFS.

Das ambitionierte Projekt konkurriert damit direkt mit anderen COW-Dateisystemen wie btrfs und ZFS. Ebenso schickt es sich an, in puncto Geschwindigkeit und Leistung die klassischen Dateisysteme ext4 und XFS auszustechen. Aktuell ist das Dateisystem noch als "experimentell" im Kernel eingestuft. Es ist allerdings vollständig implementiert und lädt zum Ausprobieren ein.

Seit Linux 2.6.32 verfügt der Kernel über das "Kernel Samepage Merging" (KSM). KSM sucht im Speicher nach Seiten (Pages) mit identischem Inhalt. Findet er solche, führt er sie zu einer Page zusammen und setzt die Referenzen auf diese Speicherbereiche auf diese eine Kopie. Zudem markiert er sie für COW (copy on write). Sobald eine Referenz die Seite ändert, bekommt diese eine eigene Kopie.

Ursprünglich war dieses Feature für die "Kernel-based Virtual Machine" (KVM) angedacht. So konnten mehr virtuelle Maschinen in den vorhandenen physischen Speicher gepackt werden. Viele Teile von aus gleichen Images gestarteten virtuellen Maschinen sind gleich und bleiben das für lange Zeit auch. Heute setzt dieses Feature auch bei anderen Einsatzszenarien an. Man denke hier etwa an Applikationen, die mehrere Instanzen mit den gleichen Daten starten, oder auch leichtgewichtige Container.

KSM fördert im Idealfall freien Speicher zutage. Allerdings verschleudert er CPU-Zeit, wenn kein Zusammenlegen von Pages möglich ist. Das geschieht zudem wiederholt, wenn er zu einem neuen Durchlauf ansetzt, aber sich die Situation kaum geändert hat. Linux 6.7 erweitert KSM nun um einen Smart-Scan-Modus, der nachverfolgt, welche Pages nicht zusammengelegt werden konnten. Diese Pages nimmt er in folgenden Durchläufen weniger häufiger unter die Lupe. Das soll KSM effizienter machen.

In der Grundkonfiguration ist Smart-Scan automatisch aktiviert. Über den sys-Dateisystem unter /sys/kernel/mm/ksm/smart_scan lässt sich prüfen, ob Smart-Scan aktiv ist oder nicht sowie ein- und ausschalten.

Linux 6.7 erlaubt es erstmals, die 32-Bit-Emulation auf x86_64-Systemen zu deaktivieren. Hierzu dient der neue Kernel-Kommandozeilenparameter ia32_emulation. Das Ausschalten der 32-Bit-Emulation geschieht somit zur Bootzeit und kann während des Betriebs ohne Reboot nicht mehr zugeschaltet werden. Im ausgeschalteten Zustand können 64-Bit-Programme für x86_64 ohne Einschränkungen ausgeführt werden, aber 32-Bit-Code für x86 nicht.

Bislang war das Deaktivieren der 32-Bit-Emulation nur mit entsprechender Konfiguration eines Kernels vor dem Kompilieren möglich. Ein Kernel verfügte somit entweder über 32-Bit-Emulation oder nicht. Jetzt lässt sich die Emulation gezielt beim Booten zu- oder abschalten.

Theoretisch soll das die Angriffsfläche eines reinen 64-Bit-Systems reduzieren. Die Kompatibilitätsschnittstellen für 32 Bit sind in der Regel weniger intensiv getestet als die restlichen Schnittstellen. Das mag sich in geringerer Sicherheit niederschlagen. Zudem reduziert sich die Angriffsfläche auf ein System, wenn schlicht weniger Schnittstellen vorhanden sind, die ausgenutzt werden könnten.

Im Übrigen lässt sich über die Option IA32_EMULATION_DEFAULT_DISABLED beim Konfigurieren eines Kernels angeben, ob die 32-Bit-Emulation per Standard deaktiviert oder aktiviert sein soll. Somit lässt sich damit auch steuern, welchen Fall ia32_emulation faktisch bedient – einschalten oder ausschalten.