Kernel-Log – Was 3.19 bringt (1): Dateisysteme und Storage

Die Kernel-Entwickler haben die RAID-5/6-Unterstützung von Btrfs verbessert. Der NVMe-Treiber nutzt jetzt eine noch junge Infrastruktur, die deutliche Leistungsgewinne bei PCIe-SSDs verspricht. Neu dabei sind auch zwei Treiber für steinalte SCSI-Controller.

In Pocket speichern vorlesen Druckansicht 23 Kommentare lesen
Lesezeit: 5 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Linus Torvalds hat am Wochenende die vierte Vorabversion von Linux 3.19 veröffentlicht. Sie enthält bereits alle wesentlichen Änderungen des Kernels 3.19; darunter etwa Änderungen an Btrfs, durch die sich nun auch Datenträger von Btrfs-Volumes austauschen lassen, die Daten mit den Dateisystem-eigenen RAID-5/6-Funktionen ablegen (u. a 1, 2, 3). Auch bei diesen RAID-Leveln unterstützt Btrfs nun Scrub-Läufe (u. a. 1, 2), bei denen Btrfs alle Daten liest und die Integrität über Checksummen prüft; eventuelle Fehler repariert es sogar automatisch, sofern die intakten Redundanz-Informationen dazu ausreichen. Vor der RAID-5/6-Unterstützung in Btrfs wird aber nach wie vor gewarnt, denn sie ist unvollständig und experimentell; Hintergründe erläutert das Btrfs-Wiki.

Was Linux 3.19 bringt

Linux 3.19 erscheint vermutlich zu Beginn der zweiten Februar-Woche, wie Linus Torvalds bei der Freigabe der siebten Vorabversion andeutete. Größere Umbauarbeiten sind keine mehr zu erwarten, denn alle wesentlichen Neuerungen haben die Kernel-Hacker bereits im Dezember integriert. Das Kernel-Log konnte daher bereits vor der Fertigstellung einen Überblick über die wichtigsten Änderungen dieser Version liefern. Das erfolgt mit der vierteiligen Artikelserie "Was 3.19 bringt", die sich nach und nach den verschiedenen Bereichen des Kernels gewidmet hat:

Laut dem leitenden Btrfs-Entwickler wurden zudem mehrere Probleme beseitigt, die zu Dateisystem-Schäden führen konnten (1, 2). Auch bei Ext4 und XFS gab es vornehmlich Fehlerkorrekturen, wie die Betreuer dieser Dateisysteme schreiben (1, 2).

Die Kernel-Entwickler haben den NVMe-Treiber auf den Multi-Queue Block IO Queueing Mechanism des Block-Layers (blk-mq) portiert. Diese bei Linux 3.13 integrierte und bei 3.16 verbesserte Block-Layer-Infrastruktur für Treiber verspricht einen effizienteren Zugriff auf Datenträger. Das soll den Datendurchsatz deutlich steigern und Latenzen senken, damit der Kernel und seine Treiber moderne PCIe-SSDs leichter ausreizen können; etwa die NVMe-Karten, die Firmen wie Intel oder HGST vor einigen Monaten eingeführt haben.

Squashfs, das viele Linux-Distributionen zur Kompression des Root-Dateisystems ihrer Live-Medien nutzen, kann Daten nun mit LZ4 komprimieren (1, 2, 3); laut dem Entwickler soll dieser Algorithmus beim Dekomprimieren weniger Speicher und CPU-Ressourcen benötigen als Zlib und dadurch für Embedded-Systeme interessant sein.

Unter den Änderungen an Ceph ist Unterstützung für Inline-Data, bei dem der Kernel wenige Byte kleine Dateien zusammen mit dem Inode-Eintrag speichert, um Speicherplatz zu sparen und den Zugriff zu beschleunigen.

Das F2FS (Flash-Friendly File System) unterstützt nun ebenfalls Inline-Data; unter den weiteren Neuerungen ist die Mount-Option "fastboot", mit der sich die zum Mounten benötigte Zeit reduzieren lässt, was aber zu Lasten des Durchsatzes gehen kann.

Zu den Änderungen am NFS-Client zählt Unterstützung für die bei NFS 4.2 definierten Operationen "ALLOCATE" und "DEALLOCATE". Über Erstere können Anwendungen Speicherplatz vorab reservieren ("preallocation"); mit letzterer können Programme Speicherplatz inmitten von Dateien aufgeben ("hole punching").

Laut dem Kommentar zu den Änderungen am Device-Mapper kann das für Thin Provisioning zuständige DM-Target nun deutlich schneller arbeiten.

Über die Änderungen am SCSI-Subsystem (1, 2) stießen zwei Treiber für SCSI-Controller zum Kernel, die in den 90ern ihre Glanzzeit hatten. Der eine Treiber unterstützt den Western-Digital-Controller WD33C296A, der auf den PCI-SCSI-Karten WD7193, WD7197 und WD7296 sitzt; der Entwickler hat diesen Treiber offenbar aus privatem Interesse vorangetrieben.

Tekrams PCI-SCSI-Hostadapter der DC-390-Serie.

(Bild: c't 9/1996, Seite 218)

Der zweite neue Treiber unterstützt den Chip am53c974, der unter anderem auf der PCI-Karte DC-390T von Tekram sitzt. Diesen SCSI-Chip unterstützt der Kernel schon lange. Der dafür zuständige Treiber soll laut Entwickler des neuen Treibers allerdings zahlreiche Fehler enthalten, daher hat er den viel kleineren auf Basis eines erprobten Treibers geschrieben. Hauptmotivation für diese Arbeit: Der Chip ist heute immer mal wieder virtuell im Einsatz, denn es ist einer der Storage-Controller, die Qemu emuliert.

Es gab noch hunderte andere Änderungen am Code der beschriebenen Kernel-Bereiche; einige der wichtigsten finden Sie über die folgenden Links, die auf Git-Merge-Commits verweisen, mit denen die wesentlichsten Neuerungen dieser Bereiche in die neue Version eingeflossen sind.

Dateisysteme:

Storage:

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden über das Twitter-Konto "@kernellog" annonciert. (thl) (thl)