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

Einige von Torvalds hervorgehobene Änderungen an Interna des Block Layer sollen Performance und Skalierbarkeit verbessern. In diesen Bereichen legt auch das Ext4-Dateisystem zu. Das weiterhin experimentelle Btrfs beherrscht nun Batched Discard und LIO (Linux-Iscsi.org) eine Loopback-Funktion.

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

Kernel-Hacker Andi Kleen hat Ende vergangener Woche eine Patch-Serie auf der LKML veröffentlicht, die ein alle Dateisysteme betreffendes Performance-Problem beseitigt. Es hat seinen Urspung beim Zusammenspiel zwischen Virtual File System (VFS) und der Security-Infrastruktur des Kernels und ist ein unerwünschter Seiteneffekt der bei 2.6.38 eingeflossenen Optimierungen am VFS. Torvalds zeigte sich überaus interessiert und nahm einen der Patches gleich in den Hauptentwicklungszweig auf; eine auf dem zweiten Patch von Kleen aufbauende Korrektur folgte am Ostermontag und soll das Problem beim Zusammenspiel mit SELinux beseitigen. Die Kernel-Hacker diskutieren noch, ob diese Patches wie von Torvalds angeregt in einen 38er-Stable-Kernel einziehen sollen.

Den fünften Release Candidate von Linux 2.6.39 hat Torvalds noch nicht veröffentlicht – vermutlich dürfte er in Kürze erscheinen, denn der RC4 ist bereits über eine Woche alt. Das Kernel-Log nimmt die fortschreitende Entwicklung des 39er-Kernels zum Anlass, die Mini-Serie "Was 2.6.39 bringt" mit der Beschreibung der Neuerungen rund um Storage-Infrastruktur und Dateisysteme fortzusetzen. Den Anfang dieser Artikel-Reihe hatte eine Übersicht der Änderungen an Netzwerk-Treibern und -Infrastruktur gemacht; in den kommenden Wochen werden noch Artikel zur Grafik-Treibern, Architektur-Code, Infrastruktur und Treibern für andere Hardware folgen.

Jens Axboe hat einige Interna im von ihm betreuten Block-Subsystem erheblich umstrukturiert. Das delegiert einige Aufgaben beim Schreiben von einem Geräte-spezifischen Puffer näher zum Code, der die Daten schreiben möchte (u. a. 1, 2). Das soll die Skalierbarkeit steigern und dadurch die Performance beim Einsatz der heute schnellsten Datenträger verbessern.

Dieses "New Block Device Plugging Model" war die einzige Änderung, der Torvalds in der Mail zur ersten Vorabversion von 2.6.39 besondere Aufmerksamkeit zukommen ließ; der Ansatz vermeide Sperren in einem viel genutzten Code-Pfad, mache den Code sauberer und sei überhaupt eine "wirklich gute Idee". Einige Hintergründe zur Motivation und der Funktionsweise erläutert Axboe in seinem Haupt-Git-Pull-Request; eine allgemeine Erklärung der Interna des Block Layer liefert er im LWN.net-Artikel "Explicit block device plugging".

Torvalds erwähnte in der Freigabe-Mail zum RC1, der Kernel habe durch einen Fehler an den Plugging-Änderungen zwischenzeitlich XFS-Dateisysteme "zum Frühstück verspeist". Auch nach dem RC1 gab es noch einige Probleme, die jedoch nicht so schwerwiegend waren – die meisten wurden zum RC4 beseitigt. Das zeigt, dass Datenverlust nicht gerade unwahrscheinlich ist, wenn man während des Merge Window den aktuellen Entwicklungsstand von Linux testet. Typischerweise beseitigen die Kernel-Hacker solche gravierenden Probleme allerdings sehr schnell. In der Stabilisierungsphase und speziell nach dem zweiten Release Candidate sind solch schlimme Fehler allerdings sehr selten: Die Kernel-Hacker versuchen sie von vorn herein zu vermeiden, um die ohnehin schon raren Tester nicht zu verschrecken.

  • Die bei 2.6.38 integrierte Target-Implementierung LIO (Linux-Iscsi.org) haben die Kernel-Hacker um das Modul tcm_loop erweitert, das eine lokale SPC-4-SCSI Emulation für beliebige Raw-Devices ermöglicht. Durch eine weitere Änderung sind in Zukunft einige allgemeine oder speziell zur statistischen Auswertung interessante Informationen via Sysfs abfragbar.
  • Die Storage-Treiber ahci und ata_piix des 39er-Kernels unterstützen bereits jetzt die SATA-Adapter der "Panther Point"-Chipsätze (1, 2), die Intel vermutlich Anfang 2012 zusammen mit neuen Prozessoren einführen wird.
  • Der AHCI-Treiber des 39er-Kernels spricht jetzt Marvells PCIe-SATA-6G-Controller 88se9125 an (1, 2).
  • Das mit RAID 0 vergleichbare Funktionen bietende Device-Mapper-Target Striped unterstützt nun "Merge Methods", was die Performance beim Einsatz von XFS und Ext4 in bestimmten Situation etwas steigert. Der Device Mapper (DM) bringt nun das Target Flakey mit, das wie das Linear-Target funktioniert, aber zu Testzwecken gelegentlich Fehler einstreut.
  • Zum Kernel stieß der Treiber bnx2fc, der einige Aufgaben für die Kommunikation über FCoe (Fibre Channel over Ethernet) an den NetXtreme II 57712 FCoE-Controller von Broadcom übergibt.
  • Der Treiber aacraid unterstützt nun eine neue, "SRC-basierte" Controller-Familie von PMC-Sierra, die ein "0x28b" genanntes Interface aufweisen; das beherrschen laut einer Patch-Beschreibung die "Series-6-Chips", die auf RAID-Controllern mit "Advanced ROC (RAID-on-chip)" sitzen und Daten mit 6 GB/s übertragen.
  • Das SCSI-Subsystem bietet nun bessere Unterstützung für die in der T10-Spezifikation SBC3r26 definierten Schnittstellen zum Logical Block Provisioning. Sei informieren SSDs oder Netzwerk-Speicherlösungen mit Thin Provisioning über das SCSI-Kommandos WRITE SAME und dessen UNMAP-Bit über freigewordene Speicherbereiche (1, 2); einige Hintergründe dazu liefern die "Solid-State Disk Deployment Guidelines" im Storage Administration Guide von RHEL 6.1 und der Artikel "Disk und Chips – Flash-SSDs in Servern und Storage-Systemen" in der iX 5/10.
  • Zum vornehmlich im Embedded-Bereich verwendeten Subsystem für Memory Technology Devices (MTD) stieß ein Treiber, um MTD-Geräte zum Swappen zu nutzen.
  • Es gab verschiedene Änderung an der Replikationslösung DRBD, wodurch die Kernel-Implementation bei 2.6.39 den Stand von DRBD 8.3.10 erreicht.