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.

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)