Kernel-Log – Was 3.1 bringt (2): Storage und Dateisysteme

Der Software-RAID-Code erhält ein Bad-Block-Management für fehlerhafte Sektoren; Dm-Crypt kann SSDs nun über frei gewordene Speicherbereiche informieren; iSCSI-Target-Framework LIO aufgebohrt; Ext3-Dateisystem als Default jetzt langsamer, aber robuster.

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

Am Montagmorgen hat Linus Torvalds die fünfte Vorabversion von Linux 3.1 veröffentlicht. Diese Version erhält man derzeit nur via Github, da die Kernel.org-Infrastruktur nach dem Einbruch nur eingeschränkt arbeitet. Torvalds erwähnt in der Freigabe-Mail, es gäbe von der Entwicklungsfront nicht Spannendes zu berichten; dafür dürften aber auch die Wirrungen nach dem Einbruch bei Kernel.org mitverantwortlich sein, da sie den Patch-Fluss beeinträchtigen.

Das Kernel-Log nimmt die fortschreitende Entwicklung von Linux 3.1 zum Anlass, die Mini-Serie "Was 3.1 bringt" mit der Beschreibung der Neuerungen rund um Storage-Code und Dateisysteme fortzusetzen. Den Anfang dieser Artikel-Reihe hat eine Übersicht der Änderungen an Netzwerk-Treibern und -Infrastruktur gemacht; in den kommenden Wochen werden Artikel zur Architektur-Code, Infrastruktur und Treibern für andere Hardware folgen.

Genau wie das Ext4-Dateisystem nutzt in Zukunft auch Ext3 standardmäßig Schreibbarrieren – das wirkt sich negativ auf die Geschwindigkeit aus, steigert aber die Robustheit bei Abstürzen. Das Ext4-Dateisystem merkt sich bei Linux 3.1, welche ungenutzten Speicherbereiche es an den verwendenden Datenträger gemeldet hat, wenn es dazu durch Fstrim aufgefordert wurde. Bei einem späteren Aufruf von Fstrim braucht es dann nur noch die zwischenzeitlich freigegeben Bereiche zu melden, was das für SSDs und Speicherlösungen mit Thin Provisioning interessante Batched Discard beschleunigt.

Änderungen an den Locking-Mechanismen von Btrfs sollen die Geschwindigkeit des experimentellen Dateisystems erheblich steigern, wenn bei den Arbeitsanforderungen Leseoperationen überwiegen. Davon abgesehen gab es diesmal keine erwähnenswerten Änderungen an Btrfs, weil sich kurz vor dem Einsenden der Änderungen für Linux 3.1 Probleme gezeigt hatten, denen der leitende Btrfs-Entwickler erst nachspüren wollte.

Die Kernel-Entwickler haben das bei Linux 2.6.39 aufgenommene Pstore ("Platform Persistent Storage") ausgebaut, um Daten zur Analyse von Abstürzen in den von UEFI genutzten nichtflüchtigen Speicherbereichen sichern zu können (1, 2); einige Hintergründe dazu erläutert EFI-Spezialist Matthew Garrett in einem Blog-Eintrag.

Torvalds nahm einen 660 KByte großen Patch auf, der das bei 2.6.38 integrierte iSCSI-Target-Framework LIO (linux-iscsi.org) auf den Stand der LIO-Version 4.1 hebt (1, 2). Der bringt unter anderem Unterstützung für die Authentifizierung per CHAP mit. Dem SCSI-Subsystem-Betreuer gefällt dieser Ansatz nicht; er wollte diese Aufgabe lieber an ein Userspace-Programm delegieren. Torvalds merkte daraufhin einige Nachteile von Userspace-Lösungen an und entlockte dem SCSI-Maintainer weitere Argumente gegen die Kernel-Integration. Die überzeugten den Linux-Vater aber offensichtlich nicht, da er die LIO-4.1-Patches wenig später in den Hauptentwicklungszweig integrierte.

Der für Software-RAID zuständige Kernel-Code bietet nun Bad-Block-Management bei RAIDs der Level 1, 4, 5 und 6, um defekte Plattensektoren der für den Verbund genutzten Datenträger zu erkennen und zu meiden (u. a. 1, 2, 3). Diese Funktion arbeitetet nicht mit MD-Arrays, die Version 0.90 der MD-Metadaten verwenden. Ferner ist die noch in Entwicklung befindlichen Version 3.3 des Userland-Werkzeugs Mdadm erforderlich; einige Hinweise dazu liefert MD-Maintainer Neil Brown in einer Mail und beim Patch-Review für Linux 3.1.

Das bei der Verschlüsselung von Laufwerken genutzte Dm-Crypt kann ab 3.1 Discard-Kommandos an das darunter liegende Medium weiterleiten. Das ist etwa für SSDs interessant, damit diese per ATA Trim von frei gewordenen Bereichen erfahren, was Geschwindigkeit und Lebensdauer steigert. Diese Funktion ist allerdings aus Sicherheitsgründen deaktiviert, damit Angreifer keine Rückschlüsse aus dem Grad der Datenträgerbelegung ziehen können. Der Device Mapper kann nun auch auf die RAID-1-Funktionen des MD-Codes zurückgreifen und unterstützt das Speichern der Metadaten auf einen eigenen Datenträger – solche "Metadata Devices" sollen Fehlerbehandlung und Integritätsprüfung verbessern.

  • Der HFS-Plus-Code unterstützt jetzt Datenträger mit mehr als 2 TByte Speicherkapazität.
  • Wie Windows-Versionen mit NT-Unterbau kann Linux ab 3.1 bis zu vier Gigabyte große Dateien auf FAT16-Laufwerken abspeichern, sofern diese 64 KByte große Cluster nutzen.
  • Über die neuen Funktionen SEEK_HOLE und SEEK_DATA des Virtual File System Layer (VFS) lassen sich größere Speicherbereiche in Dateien finden, die lediglich Nullen enthalten.
  • Ecryptfs unterstützt jetzt "Encrypted Keys".
  • Der Code für Parallel NFS (pnfs) beherrscht nun IPv6.
  • Über das neue Device /dev/loop-control können die neuesten Versionen von Losetup dynamisch Loop-Devices erzeugen oder entfernen; das bislang übliche Vorgeben einer bestimmten Zahl von Loop-Devices über Kernel/Modul-Parameter kann daher entfallen.
  • Der Treiber Bfa unterstützt nun den Brocade-1860 Fabric Adapter.
  • Im Artikel "Avoiding the OS abstraction trap" erläutert Intel-Entwickler Dan J. Williams auf LWN.net einige der Schwierigkeiten, mit denen er und seine Kollegen bei der Arbeit am Isci-Treiber für den SAS-Controller in Intels Server- und Workstation-Chipsatz C600 zu kämpfen hatten. Dieser Treiber stieß bei Linux 3.0 zum Kernel, nachdem ihn die Intel-Entwickler erheblich umgebaut hatten. Das war nötig geworden, weil Teile des Treibers ursprünglich betriebssystemunabhängig konzipiert worden waren, er sich dadurch aber nicht sonderlich gut in Linux einfügte – erfahrene SCSI-Entwickler hatten die Aufnahme daher anfangs abgelehnt.

Viele kleinere, aber keineswegs unbedeutende Neuerungen finden sich in der folgenden Liste mit den englischen Commit-Überschriften der jeweiligen Änderung. Die Einträge verlinken genau wie viele der Verweise im vorangegangenen Text auf das Webfrontend des von Linus Torvalds gepflegten Git-Zweigs mit den offiziellen Kernel-Quellen auf Kernel.org. Der über diese Links angezeigten Commit-Kommentar und der darunter ausgegebene Patch liefern zahlreiche weitere Informationen zur jeweiligen Änderungen.

Vor jedem Link finden sich in eckigen Klammern einige Buchstaben und Zahlen. Ein "C" kennzeichnet Patches mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten, die bei der Kernel-Konfiguration über "make menuconfig" oder "make xconfig" angezeigt werden. Ein "D" steht bei Patches, die die Dokumentation verändern, die im Kernel-Zweig unterhalb von Documentation/ liegt. Ein "N" weist Änderungen aus, die eine neue Datei anlegen. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: eine "1" kennzeichnet Änderungen, die inklusive Kommentar zwischen 10 und 20 KByte groß sind, eine "2" für solche, die zwischen 20 und 30 KByte Umfang haben; Änderungen ohne Zahl sind kleiner als 10 KByte, Patches mit einer "9" hingegen 90 KByte oder größer.

Block Core

Device Mapper

MD

MFD/MMC

SCSI

Various

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 auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl).

(thl)