Kernel-Log – Was 2.6.32 bringt (3): Storage

Die Kernel-Entwickler haben Btrfs an verschiedenen Stellen optimiert und wollen dadurch unter anderem die Schreib-Performance des experimentellen Dateisystems deutlich gesteigert haben. Einige Änderungen am Block-Layer versprechen größeren Datendurchsatz und bessere Reaktionsfähigkeit. Zudem sind einige neue Treiber für Storage-Hardware hinzugekommen.

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

Ende verganger Woche hat Linus Torvalds den Linux-Kernel 2.6.32-rc7 freigegeben – Hinweise auf den Fertigstellungstermin von 2.6.32 gab er dabei allerdings nicht. Mindestens eine, vermutlich aber noch zwei weitere Vorabversionen dürfte es aber in diesem durch Vertipper und Kernel Summit leicht durcheinander geratenen Entwicklungszyklus noch geben. Nach den Übersichten über die Änderungen im Netzwerksubsystem und denen für Grafik-Hardware geht es in diesem Teil der Kernel-Log-Serie zu Linux 2.6.32 um Dateisysteme und das Storage-System.

Einen ganzen Haufen von Änderungen gab an Btrfs. So soll das experimentelle "Next Generation File System for Linux" auf schneller Hardware nun mehr als 1 Gigabyte Daten pro Sekunde schreiben können. Auf dem eingesetzten Testsystem liege es dadurch nun auf dem selben Niveau wie XFS– zuvor hätte Btrfs nur rund 400 Megabyte Daten pro Sekunde übertragen, da es die CPU voll auslastete. Snapshots und Subvolumes lassen sich bei Btrfs nun umbenennen und deutlich schneller löschen; durch einige andere Optimierungen sollen zudem RPM und Yum etwas schneller arbeiten.

Btrfs reserviert bei Delayed Allocations jetzt zuverlässiger als zuvor genug Speicherplatz für die zu erwartenden Metadaten, damit sichergestellt ist, dass für diese beim späteren Schreiben auch noch genug Raum zur Verfügung steht. Neu dabei ist noch experimenteller Code für "Discard-Operationen", über die das Dateisystem SSDs langfristig mitteilen soll, welche Blöcke durch das Löschen von Dateien frei wurden – die dazu nötige Unterstützung in den SCSI- und Libata-Subsystemen ist allerdings noch in Arbeit.

Eine Liste weitere Änderungen rund um Btrfs findet sich am Ende des Artikels und in verschiedenen Git-Pull-Request, in denen Btrfs-Hauptentwickler Chris Mason die wichtigsten Neuerungen jeweils kurz erläuterte (1, 2, 3). Der bei Oracle beschäftige Mason hat viele der Änderungen selbst entwickelt, viele stammen aber auch von Entwicklern, die bei anderen Firmen in Lohn und Brot stehen. Wie wichtig eine solche Verteilung der Entwicklerressourcen und des Know-Hows für ein erfolgreiches, beständiges Open-Source-Projekt sind, hatte der für seine Arbeit an Ext-Dateisystemen bekannte Theodore Ts'o ("tytso") erst kürzlich in einem Vortrag auf dem Linux Kongress nachhaltig betont.

Einige weitere Änderungen am Dateisystemcode des Linux-Kernels:

  • Über Theodore Ts'o fanden zahlreiche Änderungen an Ext3 und Ext4 den Weg in den Hauptentwicklungszweig (1, 2). Eine von ihnen soll den Benchmark "fs_mark" in bestimmten Konfigurationen um fünfzig Prozent beschleunigen. Den seit längerem in Entwicklung befindliche Betriebsmodus "data=guarded" für das Ext3-Dateisystem ließen die Kernel-Hacker aber auch diesmal außen vor.
  • Sysfs unterstützt nun Security Labels, was Sicherheitsframeworks wie SELinux eine Zugriffskontrolle in dem virtuellen Dateisystem ermöglicht.
  • Der VFAT-Code des Kernels bindet FAT-Datenträger zukünftig nicht mehr mit dem bislang durch die Mount-Option "shortname=lower" aktivierten Verhalten ein, sondern verwendet statt dessen nun "shortname=mixed". Dadurch soll sich die Groß-/Kleinschreibung von Dateinamen beim Kopieren mit Linux nicht mehr wie bisher verändern.
  • Fscache unterstützt nun auch das Dateisystem 9p.
  • Eine Änderung an XFS soll in gewissen Situationen die Suche nach freien Inodes um das Drei- bis Vierfache beschleunigen. Einen Überblick über weitere Entwicklungen bei XFS liefern die "XFS status updates" für September und Oktober.

Der von vielen Distributionen verwendende I/O-Scheduler CFQ (Completely Fair Queuing) optimiert nun die Anfragen für kurze Reaktionszeiten. Dadurch sollen Desktop-Anwendungen nicht mehr so stark von im Hintergrund laufenden Programmen, die größere Mengen Daten verarbeiten, abgebremst werden und sich so schneller anfühlen. Hintergründe zu den Änderungen liefert ein Kommentar des für das Block-Subsystem zuständigen Entwicklers Jens Axboe im Forum von LWN.net. Manche Zugriffsmuster arbeiten durch das neue Verhalten aber etwas langsamer, daher kann man den Low-Latency-Mode von CFQ via Sysfs deaktivieren.

Benchmarks: Vorher....

...und nachher

Axboe brachte zudem eine größere, über Monate erarbeitete Überarbeitung der Writeback-Infrastruktur ein. Durch sie kümmert sich nun um jedes Gerät ein eigener Thread. Durch diese und andere Änderungen soll der Datendurchsatz bei Writeback-lastigen Zugriffsszenarien deutlich steigen und gleichmäßiger verlaufen, was der Entwickler mit zweier Benchmark-Grafiken und einigen Messwerten im Commit-Kommentar unterstreicht; einige andere Messwerte finden sich auch über eine Mail von Chris Mason. Einige Hintergründe zu den Änderungen liefert ein Vortrag von Axboe sowie ein im April veröffentlichter Artikel auf LWN.net. Auch zum neu aufgenommenen blk-iopoll hat die Webseite einen Artikel, in dem sie den NAPI-ähnlichen Ansatz zum Zugriff auf Datenträger beschreibt, der durch das Reduzieren von IRQs den Maximaldurchsatz steigern will.

Einige weitere Änderungen im Block-Subsystem listet der der Haupt-Git-Pull-Request von Axboe. Nach einer längeren Diskussion um das Für und Wider der Replikationslösung DRBD (Distributed Replicated Block Device) hat diese die Aufnahme für 2.6.32 indes nicht geschafft – Torvalds zeigte sich aber willens, sie bei Linux 2.6.33 einzupflegen.

  • Über das Sysfs lassen sich zukünftig einige Informationen zu den AHCI-Fähigkeiten auslesen – etwa ob ein Port Hotplug-fähig ist oder es sich um eSATA-Anschluss handelt. Userspace-Anwendungen sollen mit diesen Informationen bessere Entscheidungen über das optimale Verhalten treffen können – etwa bei der Konfiguration von ALPM (Agressive Link Power Management).
  • Die Kernel-Entwickler haben die Treiber pata_atp867x für den von ARTOP/Acard gefertigten PATA-Adapter ATP867X und pata_rdc für PATA-Adapter von RDC integriert. Neu dabei ist auch Unterstützung für die AMD-Southbridge SB900 – bis AMD diese einführt, dürften nach derzeitigem Kenntnisstand allerdings noch mehrere Monate vergehen.
  • Zum SCSI-Subsystem stieß mit einem über 1,4 MByte großen Patch der bfa genannte Treiber für FC- und FCOE-Host-Adapter von Brocade. Deutlich kleiner sind die ebenfalls neuen Treiber be2iscsi für die iSCSI-Funktion des BladeEngine 2 genannten 10Gbps-Storage-Adapter von ServerEngines sowie pmcraid für die von PMC Sierra gefertigten 6Gb/s-SAS-Adapter der MaxRAID-Serie. Zahlreiche Änderungen gab es auch am im SCSI-Subsystem beheimateten FCOE-Treiber.
  • Im MD-Code und einigen anderen Subsystemen des Kernels gab es verschiedene Änderungen, um die Berechnungen für RAID der Level 6 besser auf dafür ausgelegte Hardware auslagern zu können. Es gab zudem viele Änderungen am noch jungen MD-Code, der verschiedene Aus- und Umbaumöglichkeiten von Software-RAIDs unterstützt – etwa das Umwandeln eines RAID 1 in ein RAID 5 und von da in ein RAID 6 und wieder zurück. Solche Aufgaben lassen sich mit Mdadm-Versionen der 3.1er-Reihe anstoßen. Die erste Version diese Serie hat der für den MD-Code des Kernels und Mdadm zuständige Entwickler allerdings zurückgezogen, 3.1.1 aber schon für bald in Aussicht gestellt. Er hat zudem noch einige Verbesserungen rund um den für die Aus- und Umbaumöglichkeiten zuständigen Kernel-Code ausgearbeitet, die bei 2.6.33 einziehen soll.

Viele weitere kleinere 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 mit Git-Zweigs mit den Kernel-Quellen auf Kernel.org. Im Webfrontend liefern normalerweise der Commit-Kommentar und der Patch selbst zahlreiche weitere Informationen zur jeweiligen Änderungen.

Filesystems

Btrfs

Ext3, Ext4

Others

Storage

Block

Libata

MD

MFD

MMC

MTD

SCSI

Others

Weitere Hintergründe und Informationen rund um die Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Ausgaben des Kernel-Log. (thl) (thl)