Die Neuerungen von Linux 4.15

Seite 4: Storage und Dateisysteme

Inhaltsverzeichnis

Umfangreiche Umbauten am XFS-Code sollen das Dateisystem nicht nur schneller, sondern auch fit für die Anforderungen von heute und morgen machen. Unter den Änderungen sind etwa größere Anpassungen bei der internen Handhabung von Extents. Diese versprechen Wartezeiten und Probleme beim Anfordern von Arbeitsspeicher zu reduzieren, die derzeit manchmal beim Zugriff auf stark fragmentierte Dateien auftreten(u. a. 1).

Ein Blog-Eintrag eines XFS-Entwicklers erläutert einige Hintergründe zur nächsten Generalüberholung des Dateisystems.

(Bild: blogs.oracle.com )

Erst langfristig bedeutsamer ist ein umfangreicher Satz von Änderungen, durch den sich Dateisystemchecks in Zukunft im Betrieb durchführen lassen sollen (u. a. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12). Dieses Online-Fsck ist aber vorerst inaktiv, denn es ist noch unvollständig: Bei den kommenden Linux-Versionen sollen noch weitere Funktionen folgen, um Dateisysteme prüfen und reparieren zu können, ohne sie aushängen zu müssen. Dieses Feature wird auch "Online Scrub and Repair" genannt und ist eine der Funktionen, die auf den größeren Umbauten aufbauen, die bei Linux 4.8 und 4.9 ihren Anfang nahmen und etwa Support für Copy-on-write (CoW) nachrüsten.

Das in der Vergangenheit schon mehrfach grundlegend überarbeitete XFS bekommt mit diesen Features letztlich die nächste Generalüberholung. Dadurch soll XFS besser mit modernen Dateisystemen wie Btrfs und ZFS konkurrieren können. XFS wird unter anderem bei Red Hat Enterprise Linux (RHEL) standardmäßig eingesetzt; bei Suse Linux Enterprise (SLE) ist es Standard für Datenpartitionen. Die Online-Fsck-Änderungen wurden indes maßgeblich von einem Oracle-Mitarbeiter entwickelt.

Offenbar vornehmlich für den Einsatz bei Android wurde der Quota-Support im Flash-Friendly File System (F2FS) programmiert (u. a. 1, 2). Zu den weiteren Änderungen am für simple Flash-Datenträger ausgelegten F2FS gehört eine flexiblere Funktion zum Speichern erweiterter Attribute (EAs/Xattr).

Das Ext4-Dateisystem unterstützt die Größenänderung zur Laufzeit (Online Resizing) jetzt auch mit Dateisystemen, die Bigalloc verwenden. Durch diese bei Linux 3.2 eingeführten "Big Allocation Blocks" kann Ext4 die zum Speichern von Daten verwendeten 4K-Blöcke zu bis zu einem MByte großen Einheiten bündeln ("clustern"), um Verwaltungs-Overhead beim Speichern großer Dateien zu reduzieren und die Performance zu verbessern. Weitere Änderungen am Standard-Dateisystem vieler Linux-Distributionen nennt der Kommentar mit den wichtigsten Ext4-Änderungen für 4.15.

Die Kernel-Dokumentation beschreibt jetzt den Einsatz der Dateisystem-eigenen und via fscrypt nutzbaren Verschlüsselungsfunktion, die Ext4 und F2FS bieten.

Man kann beim Mounten eines mit Zlib komprimierenden Btrfs-Volumes jetzt spezifizieren, mit welchem Kompressionsgrad es die Dateien packen soll (u. a. 1, 2). Durch einen Schwung neuer Heuristiken soll das Dateisystem die Kompressionstauglichkeit der gerade verarbeiteten Daten besser vorhersagen können und so besser entscheiden, ob ein Komprimieren überhaupt lohnt (u a. 1, 2, 3, 4). Ein Commit-Kommentar nennt noch einige andere für 4.15 vorgenommenen Btrfs-Änderungen. Darunter ein neues Interface, das für Userspace-Werkzeuge zum Defragmentieren oder Deduplizieren gedacht ist (u. a. 1, 2). Eine Änderung am Readahead-Code verspricht die Leistung von Btrfs in bestimmten Situationen zu verbessern.

Durch eine Grundrenovierung mit zahlreichen Verbesserungen unterstützt das verteilte Dateisystem AFS (Andrew File System) nun unter anderem Network Namespace, das für den Einsatz in Containern wichtig ist. Das lange eher stiefmütterlich behandelte Distributed File System nimmt mit diesen Änderungen wieder an Fahrt auf: Die für 4.15 integrierten Patches enthalten mehr Änderungen als die 2014 und 2015 an AFS durchgeführten Umbauten.

Nicolas Pitre hat die Pflege des seit mindestens 2013 verwaisten Compressed ROM File System (cramfs) übernommen, das ähnlich wie Squasfs ein komprimiertes Dateisystem im Arbeitsspeicher bereithält. Laut dem im Embedded-Linux-Bereich aktiven Entwickler eignet sich Cramfs aber besser für Systeme mit wenig Arbeitsspeicher. Er hat nicht nur die Pflege übernommen, sondern auch einige neue Features eingebracht (1, 2, 3).

Weitere Änderungen rund um Dateisystem-Features nennen Kommentare zu den wichtigsten Merge Commits von DLM, Ecryptfs, Fscrypt, Fsnotify, GLF2, NFS, NFSd, Overlayfs und Quota.

Beim SSD-Caching-Framework Bcache gab es einige Detailänderung, um Fehler zu beseitigen und die Performance zu steigern (u. a. 1, 2). Das ist Michael Lyle zu verdanken, der Pflege und Weiterentwicklung des eine Weile verwaisten Bcache-Codes übernommen hat (1, 2). Er hat auch gleich den Fehler behoben, der beim Bcache-Einsatz unter Linux 4.14 und 4.14.1 zu Datenverlust führt.

Der Kernel kann einen NVMe-Datenträger jetzt über mehrere Controller ansprechen. Das steigert neben der Performance auch die Ausfallsicherheit. Zu verdanken ist das dem Multipath Support im NVMe-Treiber. Effizienten Datenaustausch zwischen Prozessor bzw. Hauptspeicher und NVMe-Controller verspricht der ebenfalls neue Support für SGL (Scatter Gather Lists) im NVMe-PCI-Treiber.

Der bei Linux 4.1 integrierte Cluster-Support im via Mdadm konfigurierten MD-Subsystem gilt jetzt nicht mehr als experimentell (u. a. 1). Außerdem unterstützt der MD-RAID-Cluster-Code neben dem RAID-Level 1 jetzt auch RAID 10 – dieser Modus scheint aber noch nicht voll durchgetestet zu sein, denn er trägt den Statuts "limited support". Ein Merge-Commit-Kommentar nennt einige weitere Änderungen am typischerweise für Software-RAIDs genutzten Subsystem.

Zwischen den Patches am von Logical Device Manager verwendeten Device Mapper (DM) stecke unter anderem Support für DAX im Log-Target.

Unter den Patches an Ceph und RBD (Rados Block Device) war eine Änderung an einer Standardvorgabe, durch die das Storage-Framework jetzt automatisch mehr als 240 Images pro Host unterstützt.

Allein am Block-Layer gab es wieder Dutzende wichtige Neuerungen.

(Bild: git.kernel.org )

Die Kommentare zu den zwei Commits mit den wesentlichen Änderungen am Block-Layer (1, 2) nennen noch weitere Änderungen an der Storage-Support-Infrastruktur von Linux. Darunter verschiedene Performance-Verbesserungen für Blk-Mq (u. a. 1, 2, 3) und ein ganzer Schwung kleiner Änderungen am Writeback-Code, die ein viel diskutiertes Latenzproblem beheben. Außerdem haben die Entwickler die Unterstützung für den Laptop Mode gestärkt (u. a. 1, 2) und die Cgroup-Integration im Loop-Support verbessert. Auch beim Code des bei Linux 4.12 hinzugestoßenen BFQ-I/O-Scheduler gab es nochmal allerlei Feintuning (u. a. 1, 2).

Unter den Änderungen an der Infrastruktur für NV-DIMMs waren die bei LWN.net näher erläuterten Flags MAP_SYNC und MAP_SHARED_VALIDATE. Mit diesen Kennzeichnungen für mmap() erhalten Anwendungsprogramme mehr Kontrolle über das Cache-Flushing, mit denen sie konsistentes Schreiben von Meta- und Nutzdaten bei guter Performance besser gewährleisten können.

Einige weitere Änderungen rund um Storage-Support finden sich in den Pull-Requests für die Subsysteme Libata, MMC, MTD, SCSI, SCSI Target.