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

Direct-I/O und besseres Out-of-Space-Handling für Btrfs, Optimierungen für XFS und OCFS2, größere Umbauarbeiten bei Libata-Treibern und erweiterte Möglichkeiten zur RAID-Migration sind einige der wichtigsten Änderungen von Linux 2.6.35.

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

In der Nacht vom Montag auf Dienstag hat Linus Torvalds die fünfte Vorabversion von Linux 2.6.35 freigegeben. Wie schon beim Rc3 und Rc4 gab es weniger und größtenteils konservativere Änderungen als bei früheren Kernel-Version in diesem Stadium. Ein Commit fällt jedoch aus dem Rahmen, denn er ist über 5 Megabyte groß und entfernt über 200.000 Zeilen Text aus den Standard-Konfigurationsdateien für ARM-Systeme. Das ist die erste Konsequenz einer Diskussion, in der Torvalds sich über die umfangreichen und nur mäßig hilfreichen Dateien beschwert hatte. Vermutlich sollen schon bald auch die Konfigurationsdateien für Power-Systeme reduziert werden; darauf folgen werden vielleicht noch weitere Änderungen, um Standard-Konfigurationsdateien dynamisch und mit weniger Overhead zu erzeugen. Hintergründe zum Thema hat LWN.net kürzlich in einem Artikel zusammengefasst.

Das Kernel-Log nimmt den Rc5 zum Anlass, um die Mini-Serie "Was 2.6.35 bringt" mit der Beschreibung der Neuerungen rund um Dateisysteme sowie Storage-Infrastruktur und -Treiber fortzusetzen. Der erste Teil der Mini-Serie hatte sich mit den Änderungen rund um Grafik-Hardware beschäftigt; folgen werden in den kommenden Wochen noch Artikel zur Netzwerk-Unterstützung, Treibern für USB, FireWire, V4L/DVB und Co. sowie Architektur-Code und Infrastruktur.

Das Btrfs-Dateisystem unterstützt ab 2.6.35 Direct I/O – also den Zugriff auf Dateien unter Umgehung der Kernel-Caches, was etwa für Datenbank-Software mit eigenen Cache-Funktionen von Interesse ist. Bereits bei 2.6.32 gab es zudem zahlreiche Verbesserungen am Btrfs-Code, um Probleme zu vermeiden, wenn der Speicherplatz zu Ende geht; unter bestimmten, eher selten anzutreffenden Umgebungsbedingungen entstanden aber weiter Schwierigkeiten, die einige nun aufgenommene Patches fortan verhindern sollen (u. a. 1, 2, 3, 4).

Wie bislang wird der Kernel Schreibbarrieren, die die Datensicherheit steigern, aber die Performance mindern, bei Ext4 standardmäßig aktivieren und bei Ext3 nicht nutzen – einige Anpassungen an den Modul-Parametern und der Dokumentation sollen allerdings etwas Verwirrung aus dieser historisch gewachsenen Inkonsistenz nehmen.

SquashFS beherrscht nun Erweiterte Attribute, was den Einsatz mit SELinux ermöglicht. Der Fuse-Code im Kernel kann zum Datenaustausch mit dem Userspace Splice verwenden, was einen Kopiervorgang der Daten im Arbeitspeicher eliminiert und so die Performance des "File System in Userspace" steigert (1, 2, 3). XFS bietet nun das vorerst experimentelle und über eine Mount-Option aktivierbare Delayed Logging, was laut Dokumentation und dem XFS Status Update für Mai 2010 die zum Loggen von I/O benötigte Bandbreite erheblich reduziert. Beim Cluster-Dateisystem OCFS2 sollen Allocation Reservations und Discontiguous Block Groups einige Dateisystemeigenschaften verbessern, die Joel Becker in seinem Haupt-Git-Pull-Request kurz erläutert.

Informationen zu weiteren Dateisystem-Änderungen finden sich über die Links im Abschnitt "Die kleinen Perlen" am Ende des Artikels sowie den Git-Pull-Request für das VFS (1, 2) sowie, Btrfs, Ceph und Nilfs2.

Im Libata-Subsystem gab es einige etwas größere Umbauarbeiten, die Jeff Garzik in seinen beiden Haupt-Git-Pull-Requests hervorhebt (1, 2). Der meiste Code des AHCI-Treibers wurde etwa in die neue libahci ausgelagert, auf die der generische AHCI-Treiber und systemspezifische Treiber wie der neue, für System-on-a-Chip (SOC) geeignete Treiber ahci_platform aufbauen. Zudem gab es einige Umstrukturierungen (siehe auch "Die kleinen Perlen" am Ende des Artikels), um den für Übertragungen mit Bus-Master-DMA und SFF zuständigen Code zu trennen und um den Treiber-Code besser zu strukturieren. Die über Medienwechseln bei ATAPI-Geräten berichtende Asynchronous Notification (AN) ist nun standardmäßig deaktiviert und lässt sich fortan über den neuen Treiber-Parameter "atapi_an" aktivieren.

Das Infiniband-Subsystem bringt für Netzwerkadapter der T4-Serie von Chelsio nun den RDMA/iWARP-Treiber iw_cxgb4 mit. Ebenfalls neu ist der Treiber ib_qib für PCIe-InfiniBand-Adapter von QLogic; er übernimmt zudem die Unterstützung von QLogic-QLE-Adaptern vom Treiber ib_ipath. Weitere Hintergründe rund um aktuellen und für spätere Kernel-Versionen geplanten Entwicklung im Infiniband-Bereich listet Roland Dreier in seinem Haupt-Git-Pull-Request.

Der im SCSI-Subsystem angesiedelte Qlogic-Treiber qla2xxx spricht ab 2.6.35 auch mit den FCoE-Adaptern der ISP82XX-Baureihe. Der SCSI-Code enthält nun zahlreiche Tracepoints, um Fehlersuche und Performance-Optimierung zu erleichtern. Weitere Änderungen im SCSI-Subsystem listet dessen Verwalter in den beiden Mails mit Bitte um Aufnahme der von ihm gesammelten Änderungen auf (1, 2).

Dem Kernel liegt nun ein MTD-Treiber für den Denali genannten NAND-Controller von Intels Moorestown-Plattform bei. Das bei 2.6.33 eingeführte "Blkio Controller Cgroup Interface" wurde erheblich erweitert und bietet nun einige neue Möglichkeiten, um den Datendurchsatz zu messen sowie applikations- oder gruppenweise einzuteilen (1, 2, 3, 4, 5, 6, 7). Überarbeitet und erweitert wurde auch die für SSDs interessante Discard-Unterstützung. Den Laptop-Mode muss man nun nicht mehr global aktivieren, sondern kann ihn für jeden Datenträger separat einschalten.

Die RAID10-Unterstützung gilt nun nicht mehr als experimentell. Der Code des MD-Subsystems bietet zahlreiche weitere Konvertierungsmöglichkeiten: Raid0->Raid5, Raid0->Raid10, Raid5->Raid4, Raid4->Raid0 sowie Raid5->Raid0 und Raid10->Raid0.