Kernel-Log – Was 3.12 bringt (1): Dateisysteme & Storage

Btrfs beherrscht jetzt Daten-Deduplikation und Ext4 soll sparsamer mit dem Arbeitsspeicher umgehen. Neue Locking-Techniken und Multi-Threading im RAID-5-Code versprechen bessere Performance.

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

In der Nacht von Sonntag auf Montag hat Linus Torvalds die vierte Vorabversion von Linux 3.12 veröffentlicht. Damit hat der Kernel 3.12 die Hälfte seiner Entwicklungszeit bereits hinter sich gebracht, sofern die Kernel-Entwickler ihrem gewohnten Rhythmus treu bleiben. Alle größeren Neuerungen dieser Version sind bereits jetzt absehbar, denn die haben Torvalds und seine Mitstreiter wie gewohnt in den ersten zwei Wochen nach Freigabe der Version 3.11 integriert; nach diesem Merge Windows gibt es normalerweise keine größeren Änderungen mehr.

Das Kernel-Log kann daher bereits jetzt einen umfassenden Überblick über die wichtigsten Neuerungen geben, die der in drei bis vier Wochen erwartete Kernel bringt. Den Anfang macht die folgende Beschreibung zu den Neuerungen rund um Dateisysteme und Storage-Hardware; in den nächsten Wochen folgen Artikel zur Grafiktreibern, Netzwerk-Unterstützung, Kernel-Infrastruktur, Prozessor/Plattform-Unterstützung und Treibern für andere Hardware.

Btrfs, das weiterhin als experimentell gilt, beherrscht jetzt Out-of-Band Deduplication. Durch diese Technik können Userspace-Programme den Kernel anweisen, bestimmte Speicherbereiche eines Dateisystems nach identischen Daten abzusuchen; findet er solche, legt er diese zusammen, um Speicherplatz zu sparen. Der Vorgang muss bei eingehängtem Dateisystem angestoßen werden, wird aber auch "Offline Dedupe" genannt, weil die Deduplizierung nicht im Rahmen der normalen Lese- und Schreiboperationen erfolgt. Das Dateisystem ZFS beherrscht letzteres; Patches, die diese Fähigkeit bei Btrfs nachrüsten, sind noch in Entwicklung.

Unter den weiteren Änderungen an Btrfs sind einige Anpassungen, die das bei 3.6 eingeführte Send/Receive bei Dateisystemen beschleunigen sollen, die viele Subvolumes oder Snapshots enthalten.

Ext4 soll durch einige Umbauten am Extent-Cache sparsamer mit dem Arbeitsspeicher umgehen und bessere Performance bei asynchronen I/O-Aufgaben liefern (1, 2). Ferner können Ext3 und Ext4 ein extern vorgehaltenes Dateisystem-Journal nun über eine Pfadangabe finden, die eine Mount-Option spezifiziert; das ist für Systeme interessant, bei denen sich die Datenträgerbezeichnung im /dev-Verzeichnis immer mal wieder ändert.

Das XFS-Dateisystem unterstützt nun User Namespaces, die unter anderem für Container-Virtualisierung und Sandboxing interessant sind. Die vor einigen Monaten stark überarbeitete Unterstützung für User Namespaces lässt sich bei der Kernel-Konfiguration daher jetzt wieder aktivieren, auch wenn Support für das XFS-Dateisystem eingebaut wird; diese Abhängigkeit war ein Grund, warum User Namespaces bei den Kerneln der meisten Distributionen derzeit außen vor bleiben. Es gab noch zahlreiche andere Änderungen an XFS (1, 2); zwei davon sollen das Auffinden von Dateien auf Datenträgern erheblich beschleunigen, die sehr viele Dateisystemeinträge enthalten (1, 2)

Das zum Ablegen von Absturzinformationen gedachte Pstore-Dateisystem unterstützt jetzt Datenkompression. Beim Mac-OS-Dateisystems HFSplus beherrscht der Linux-Kernel nun Posix-ACLs (1, 2).

Über den neuen Locking-Mechanismus lockref (locked reference count) kann der Kernel-Code einen normalerweise per Spinlock gesicherten Referenz-Zähler oft direkt aktualisieren, statt warten zu müssen, dass der Spinlock greift. Das Virtual File System (VFS), das Basis-Funktionen für Dateisysteme stellt, nutzt Lockref bei 3.12 bereits an einigen Stellen, was Overhead vermeiden und die Performance steigern soll (1, 2, 3).

Bei der Interaktion mit RAID-5-Arrays, die mit Mdadm angelegt wurden, kann der Kernel jetzt mehrere Threads verwenden. Das kann die Zahl der pro Sekunde ausgeführten I/O-Operationen bei Arrays steigern, die aus flotten Datenträgern, etwa SSDs, bestehen. In manchen Konstellationen soll der optionale Threading-Support die Performance jedoch verschlechtern.

Der AHCI-Treiber, der bei vielen modernen PCs die SATA-Controller betreut, beherrscht jetzt das im SATA-Standard 3.1 definierte "Queued DSM TRIM". Durch diese Technik kann der Kernel nun Informationen zu frei gewordenen Speicherbereichen im Rahmen des normalen Befehlsstroms an Datenträger übermitteln. Die Garbage Collection von SSDs kann anschließend selbst darüber entscheiden, wann sie das Kommando verarbeitet. Das kann die Performance beim Online Discard verbessern, sofern die SSD Queued Trim beherrscht. Performance-Probleme beim Online Discard sind ein Grund, warum unter Linux dieser Tage zumeist Batched Discard genutzt wird; anders als beim Online Discard werden freigewordene Bereiche nicht sofort beim Löschen, sondern erst beim Aufruf des Werkzeugs Fstrim an die SSD gemeldet.

Vorwiegend für Embedded-Systeme interessant ist eine neue Funktion, um eine Partitionstabelle über einen Kernel-Parameter zu übergeben (1, 2).

Der Linux-Kernel enthält jetzt einen Treiber für die ExpressSAS 6G SAS/SATA RAID Adapter von ATTO Technology. Neu ist auch Unterstützung für die QLogic-Controller ISP8042 und ISP8044.