Linux 5.4: Datenträger limitieren und absehbares Hin und Her bei exFAT

Teilen ist Kümmern!

Der in Kürze erwartete Linux-Kernel bringt endlich einen Storage-Treiber für aktuelle Macs. Außerdem neu: Ein moderner Ansatz, um Host-Verzeichnisse in VMs einzubinden.

Der am 18. oder 25 November erwartete Linux-Kernel 5.4 bringt eine Fülle von Neuerungen rund um Storage-Support und Dateisysteme. Eine der herausragendsten Neuerungen ist der Support für Microsofts exFAT-Dateisystem. Vieles deutet allerdings darauf hin, dass der zuständige Code schon bald wieder durch einen von zwei moderneren Ansätzen ersetzt wird. Die neue Linux-Version bringt zudem einen neuen Ansatz, um die Verwendung von Storage-Hardware zu regeln, damit ein wildgewordenes Programm nicht andere übermäßig verlangsamen kann. Neue dabei sind zudem Storage-Treiber für neue Macs und ein frischerer Ansatz, um aus Virtual Machines (VMs) effizient auf Dateien und Verzeichnisse des Hosts zuzugreifen.

Über den neuen I/O-Controller Blk-Iocost können Admins besser regeln, wie stark die einer Prozessgruppe zugeordneten Prozesse die Storage-Hardware eines Systems befeuern dürfen. Damit lässt sich etwa verhindern, dass ein Container die Festplatten oder SSDs so stark mit Anfragen beschäftigt, dass andere Prozesse kaum mehr zum Zug kommen und dadurch letztlich extrem langsam laufen.

Für diese Problematik gibt es bereits I/O-Controller. Sie weisen allerdings allerlei bekannte Schwächen auf, die der von einem Facebook-Entwickler eingebrachte Blk-Iocost zu vermeiden verspricht. Mit diesem Cgroup-v2-Controller lässt sich beispielsweise das Leistungspotenzial der Datenträger leichter ausschöpfen, denn er drosselt erst, wenn tatsächlich Engpässe entstehen.

Weitere Details nennt der Kommentar zum Commit mit Blk-Iocost und der darin enthaltenen Erweiterung einer Dokumentationsdatei. Sie beschreibt die für Blk-Iocost eingeführten Cgroup-v2-Konfigurationsschrauben io.cost.qos und io.cost.model. Einige weitere Hintergründe zum Ansatz erläutert ein Artikel bei LWN.net, der noch aus einer Zeit stammt, als der Ansatz noch „Io.Weight Controller“ hieß.

Derzeit sieht alles danach aus, als würde der soeben aufgenommene exFAT-Support bald wieder verworfen und durch eine neuere Codebasis ersetzt. Der integrierte, vor Jahren von Samsung freigegebene und zwischenzeitlich verbesserte Code hat einige größere Qualitätsprobleme, daher landete er auch nur im Staging-Bereich, wo Code mit solchen Mängeln akzeptiert wird, um ihn dort im Rahmen der Kernel-Entwicklung auf Vordermann zu bringen. Die Aufnahme war allerdings umstritten, wie LWN.net in den Artikeln „On-disk format robustness requirements for new filesystems“ und „Examining exFAT“ erläutert.

Linux 5.4 bringt endlich Code zur Unterstützung von Microsofts exFAT-Dateisystem mit. Damit dürfte das Gros der Linux-Distributionen das bei Speicherkarten aktueller Foto- und Video-Kameras häufig anzutreffende Dateisystem bald endlich von Haus aus unterstützen. Bislang war exFAT-Support beim Kernel und einigen Distributionen bewusst außen vor geblieben, da die Gefahr von Patentklagen bestand. Diese Sorge ist jetzt weitgehend vom Tisch, weil Microsoft die exFAT-Patente und -Spezifikationen für Linux öffnet.

Hinzu kommt: Der integrierte exFAT-Code wird vermutlich schon bald wieder verworfen, denn rund um dessen Aufnahme stellte sich heraus, dass Samsung den Code intern weiter entwickelt hat und mit „sdFAT“ deutlich robusteren Code zur exFAT-Unterstützung hat. Ende September erklärten sich Mitarbeiter des Unternehmens schließlich bereit, eine Variante des sdFAT-Codes bald in den offiziellen Kernel einzubringen. Damit aber nicht genug: In der zweiten Oktoberhälfte veröffentlichte dann auch noch ein Entwickler von Paragon Software GmbH anderen, ganz unabhängig vom Samsung-Ansatz entstandenen Code zur exFAT-Unterstützung mit dem Ziel, diesen in den offiziellen Kernel einzubringen. Die Entwickler müssen sich nun noch abstimmen, welche der Herangehensweisen jetzt in den Kernel einfließen soll.

Das neue Virtio-Fs stellt einen weiteren Weg zur Verfügung, über den virtuelle Maschinen (VMs) ausgewählte Dateien oder Verzeichnisse des Hosts in ihrem Dateisystem bereitstellen können. Laut den Entwicklern soll die Lösung bald in VMs eine Zugriffsperformance erzielen, die nahe an die heranreichen soll, die beim Zugriff direkt auf dem Host erzielt wird.

Die Entwickler wollen mit Virtio-Fs das Plan 9 Filesystem Protocol (p9) zugleich ausstechen und beerben, das bislang meist für das Einbinden genutzt wird. Der neue Ansatz wurde nicht von Grund auf neu entwickelt, sondern verwendet Teile des Codes von FUSE (Filesystem in Userspace) wieder. Weitere Details zum neuen Dateisystem finden sich in einem Merge-Commit-Kommentar, dem Commit mit dem Kern von Virtio-Fs und der begleitenden Dokumentation. Noch mehr Einblicke liefern die Vortragsfolien oder die Videoaufzeichnung eines kürzlich auf dem KVM Forum 2019 gehaltenen Vortrags zu Virtio-Fs:

Das neue Device-Mapper-Target Dm-Clone kann in Sekundenschnelle einen Klon eines Device-Mapper-Volumes anlegen, der sofort nutzbar ist und die Daten nach und nach im Hintergrund vervielfältigt. Die Funktion ist dazu gedacht, um auf die Schnelle eine lokale VM auf Basis eines im Netz liegenden VM-Datenträger-Images zu erzeugen. Darüber hinaus gab es beim Device Mapper noch einen Schwung kleinere Optimierungen und Verbesserungen.

IO-Uring erhielt allerlei Feinschliff (u.a. 1, 2, 3). Das verbessert die Performance des modernen und jüngst bei Linux 5.1 integrierten IO-Interface für asynchrone Datenträgerzugriffe und rüstet zugleich eine Timeout-Funktion nach. Einige weitere seit der Einführung von IO-Uring vorgenommene Verbesserungen hat der zuständige Entwickler jüngst in einem Dokument zusammengefasst.

Google-Entwickler haben Fs-Verity eingebracht, mit dem sich die Integrität von Dateien in schreibgeschützten Ext4- und F2FS-Dateisystemen sicherstellen lässt. Das soll offenbar bei Android zum Einsatz kommen, um das Basissystem vor Modifikationen zu schützen. Details zum Ansatz erläutern einige Commits von Fs-Verity (1, 2, 3, 4, 5, 6, 7), die begleitende Dokumentation und der LWN.net-Artikel „Yet another try for fs-verity“.

Ab Linux 5.4 kann der Kernel endlich auch die NVMe-Datenträger ansprechen, die Apple in seine seit 2018 eingeführten Systemen einbaut. Die dazu nötigen Änderungen entstanden per Reverse Engineering; sie waren unter anderem nötig, weil Appels NVMe-Implementierung einige Macken hat, die der normalerweise generische NVMe-Treiber jetzt mit Sonderlocken abfängt (u. a. 1, 2).

Über den neuen Kernel-Parameter cifsroot= kann man den CIFS-Code jetzt anweisen, beim Start eine Samba- oder Windows-Freigabe als Root-Dateisystem einzubinden.

Unter den Änderungen an F2FS waren welche, durch die das für simple Flash-Datenträger entwickelte Dateisystem fortan die Groß- und Kleinschreibung per Casefolding ignorieren kann, wie es Ext4 jüngst bei Linux 5.2 gelernt hat.

Das Read-only-Dateisystem EROFS, das Huawei bei einigen Android-Geräten statt Squashfs verwendet, ist weiter gereift; dadurch konnte EROFS jetzt den Staging-Bereich hinter sich lassen, in dem Code mit bekannten Qualitätsmängeln im Rahmen der normalen Entwicklung auf Vorderman gebracht wird. Dieser Aufstieg war genau wie die Aufnahme des exFAT-Codes sehr umstritten, wie der LWN.net-Artikel „On-disk format robustness requirements for new filesystems“ erläutert.

Die Linux-Entwickler sind zudem zahlreiche Design-Schwächen in der Infrastruktur Fs-Crypt angegangen, mit der Ext4 und F2FS Dateien verschlüsseln können (u. a. 1, 2, 3, 4, 5).

Einige weitere relevante Änderungen rund um Storage-Support und Dateisysteme nennen die Kommentare, die sich in den wichtigsten Merge Commits der Subsysteme Block Layer (1, 2, 3), Btrfs, Ceph, CIFS/SMB, Ext4, FUSE, GFS, Libnvdimm, NFS, NFSd, SCSI, VFS (Y2038) und, XFS (1, 2) finden.

Schrittweise aktualisierter Text zu Linux 5.4

Die Neuerungen des für den 18. oder 25. November erwarteten Linux 5.4 sind seit dem 30. September absehbar, denn da hat Linus Torvalds die erste Vorabversion dieser Kernel-Version freigegeben. Die bringt alle wesentlichen Änderungen schon mit, denn damit hat er wie üblich die „Merge Window“ genannte Phase des Entwicklungszyklus abgeschlossen, in der die Entwickler das Gros der Umbauten für eine neue Kernel-Version vornehmen. Größere, erwähnenswerte Änderungen erfolgen danach nur in Ausnahmefällen; es passiert auch äußerst selten, dass Torvalds umfangreiche, im Merge Window integrierte Änderung vor der Fertigstellung noch deaktiviert oder gar entfernt.

Das Kernel-Log der c’t kann daher schon jetzt die Neuerungen der nächsten Linux-Version detailliert beschreiben. Da es enorm viele Änderungen in zahlreichen Bereichen sind, erweitern wir den Text zwischen Erstpublikation und der Fertigstellung des neuen Kernels mehrfach, um die wesentlichen Änderungen schrittweise in leichter handhabbaren Mengen zu erläutern. Der Artikel beschreibt deshalb bislang nur Änderungen bei Dateisystemen & Storage sowie Highlights. Es folgen noch Texterweiterungen, die Neuerungen bei Grafiktreibern, Netzwerk-Unterstützung, Infrastruktur, Architektur-Support und Sicherheit näher beschreiben; mit ihnen reichen wir dann auch Details zu den bislang nur angerissenen Highlights nach.

Der Newsticker von heise online und der Twitter-Account @kernellog erwähnen größere Erweiterungen des Kernel-Logs zur nächsten Linux-Version. Das neueste Update finden Sie immer auf der ersten Artikelseite, ältere Textpassagen auf den folgenden Seiten. Details zur Versionshistorie des Artikels liefert das Changelog am Artikelende.

Source link

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.