Kernel-Log – Was 2.6.31 bringt (3): Storage und Dateisysteme | heise online

Kernel-Log – Was 2.6.31 bringt (3): Storage und Dateisysteme

Das "Next Generation Filesystem for Linux" soll jetzt noch schneller arbeiten. Erste Teile zum Defragmentieren von Ext4-Dateisystem sind nun im Kernel. Der parallele Hardware-Scan in Intel-ATA-Treibern beschleunigt den Systemstart.

vorlesen Druckansicht 6 Kommentare lesen
Lesezeit: 13 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

In der Nacht von Donnerstag auf Freitag hat Linus Torvalds die sechste Vorabversion von Linux 2.6.31 freigegeben. Wie in dieser späten Phase des Entwicklungsprozess üblich sind die meisten Änderungen gegenüber dem rc5 eher klein. Torvalds geht in der Freigabe-Mail davon aus, 2.6.31 nach der achten Vorabversion fertig zu stellen – vermutlich also in zirka zwei bis drei Wochen.

Das Kernel-Log nimmt das zum Anlass, die Berichterstattung über die größten Neuerungen von Linux 2.6.31 gegenüber dem aktuellen Kernel 2.6.30 mit einem Überblick aus den Bereichen Storage und Dateisystemen fortzusetzen. Die Änderungen in den Bereichen Netzwerk und Grafik, Audio und Video haben wir bereits in früheren Ausgaben des Kernel-Logs dargestellt.

Eine umfangreiche Änderung in Form eines zirka 350 KByte großen Btrfs-Patches soll die Performance des experimentellen Dateisystems durch den Einsatz von "Mixed back references" in vielen Bereichen erheblich steigern. Dazu haben die Entwickler allerdings die Dateisystemstruktur auf dem Speichermedium (On-disk Format) angepasst. Die nötige Umwandlung vom alten ins neue Format erledigen Kernel mit dem neuen Btrfs-Code beim ersten Einhängen automatisch – Linux-Versionen mit älteren Btrfs-Code können ein so verändertes Dateisystem anschließend allerdings nicht mehr einbinden.

Der Commit-Kommentar und der Git-Pull-Request weisen darauf auch deutlich hin. Normalerweise versuchen die Kernel-Entwickler solche Dinge selbst bei experimentellen Dateisystemen zu vermeiden, denn wagemutige Anwender, die Btrfs als Root-Dateisystem verwenden, können sonst bei der Fehlersuche keine alten Kernel mehr starten – genau das ist Linus Torvalds selbst passiert, der sich entsprechend wenig begeistert zeigte.

Mehr Infos

Kernel-Log – Was 2.6.31 bringt

Weitere Teile aus der Kernel-Log-Mini-Serie "Was 2.6.31 bringt", die wichtigsten Neuerungen der kommenden Kernel-Version zusammenfasst:

1. Netzwerk – Neue Treiber für LAN und WLAN

2. Audio & Video – KMS für Radeon und Treiber für X-Fi

Der Artikel "Feintuning – Die Neuerungen von Linux 2.6.30" bietet eine Übersicht über die Neuerungen der derzeit aktuellen Kernel-Version der Hauptentwicklungslinie. Weitere Geschehnisse rund um den Linux-Kernel und andere Hardware-nahe Linux-Software finden Sie in den regulären Kernel-Logs.

Recht spät im Entwicklungszyklus sandte der Btrfs-Betreuer im Rahmen eines Git-Pull-Request noch einige größere, schon länger in Arbeit befindliche Änderungen hinterher. Durch sie soll Btrfs nach längerer, starker Belastung nicht mehr so viel Arbeitsspeicher belegen (u. a. 1, 2). Verbessert haben die Btrfs-Entwickler zudem die Unterstützung für den Einsatz auf SSDs (u. a. 1, 2)

Der unter anderem durch seine Arbeit als Betreuer des Netzwerk-Subsystems und der Sparc-Unterstützung bekannte Kernel-Entwickler David Miller hat nun auch das IDE-Subsystem übernommen und löst damit Bartlomiej Zolnierkiewicz ab. Ursache war ein Streit über einen auf Sparc-Systemen auftretenden Fehler, wo Miller andeutete, dass Zolnierkiewicz zahlreiche Änderungen im IDE-Subsystem vorgenommen habe, ohne diese ausreichend zu testen.

Miller ließ durchblicken, in Zukunft keine größeren Änderungen im IDE-Subsystem vornehmen zu wollen ("I'm going to treat IDE as pure legacy [...]"). Damit dürfte die Zukunft jetzt definitiv den Ende 2006 bei Linux 2.6.19 aufgenommenen PATA-Treibern im Libata-Subsystem gehören. Sie steuern zwar nicht ganz so viele IDE/PATA-Adapter an wie das IDE-Subsystem, aber nahezu alle heute gängigen.

Einige Entwickler hatten die Libata-Treiber von Anfang an als Ersatz für die Treiber des älteren – und schon seit über einem Jahrzehnt immer wieder für Unfrieden zwischen Kernel-Entwicklern sorgenden – IDE-Subsystems gedacht. Zolnierkiewicz hatte nach einer Phase weitgehender Inaktivitiät das IDE-Subsystem in den vergangenen eineinhalb bis zwei Jahren aber dennoch massiv überarbeitet und auch neue Treiber aufgenommen – aus der erwarteten schleichenden Ablösung entstand so eine länger anhaltende, nun wohl aber zu Ende gehende Konkurrenzsituation.

Das neue Fsnotify ersetzt Dnotify und Inotify, mit denen sich Veränderungen im Dateisystem wie das Anlegen, Löschen oder Ändern von Dateien überwachen lassen (1, 2, 3). Das eigentliche Ziel des bei Red Hat beschäftigten Entwicklers Eric Paris ist jedoch das auf Fsnotify aufbauende Fanotify, das im Userspace arbeitenden Viren- und Malware-Scannern einen Eingriffspunkt bietet, um Dateien vor dem eigentlichen Zugriff auf Schädlinge überprüfen zu können. Das dahinter stehende Konzept hat Paris kürzlich zur Diskussion gestellt.

Hervorgegangen ist die Idee aus langen Diskussionen um Talpa, das ähnliches leisten sollte, aber bei den Kernel-Entwicklern keinen Anklang fand. Hintergründe liefern die Artikel "Kernel-based malware scanning", "The TALPA molehill" und "The fanotify API" bei LWN.net.

Bei den bisher genannten Neuerungen handelt es sich nur um die bedeutsamsten Änderungen, die die Kernel-Hacker bei Dateisystemen und im Storage-Bereich vorgenommen haben. Einige weitere im Kurzüberblick:

Dateisysteme:

  • Das Ext4-Dateisystem enthält jetzt Code zum Defragmentieren im laufenden Betrieb (Online Defrag). Komplett sei dieser aber noch nicht, wie Ext-Dateisystem-Entwickler Theodore Tso (tytso) kürzlich an anderer Stelle betonte. Weitere Patches für diese Funktion müssten noch begutachtet werden und auch beim zugehörigen Userspace-Programm stehe noch Arbeit an.
  • Die Unterstützung für NFS 4.1 wurde erweitert, es sind jedoch noch weitere Änderungen für 2.6.32 vorgesehen.

Storage:

  • Durch eine noch vor der Stabübergabe von Zolnierkiewicz an Miller aufgenommene Änderung respektiert das IDE-Subsystem nun standardmäßig HPAs (Host Protected Areas) – wer eine solche hat und noch Treiber des IDE-Subsystems einsetzt, sollte sich daher nicht wundern, wenn der Datenträger mit 2.6.31 ein wenig kleiner ist.
  • Der im Libata-Subsystem angesiedelte IDE/PATA-Treiber ata_piix für Intel-Controller scannt jetzt parallel nach Datenträgern, was die Initialiserungszeit des Treiber auf dem Eeepc des Entwickler halbieren soll.
  • Durch eine von vielen Änderungen im Block-Layer exportiert dieses nun etwa mit Hilfe der vom SCSI-Subsystem gelieferten Daten Informationen zur I/O-Topologie – dazu zählt unter anderem die dem Datenträger zugrunde liegende Sektorgröße. Das ist etwa für die Einteilung von Datenträgern mit Sektorgrößen ungleich 512 Byte oder die optimale Anordnung von Daten im RAID-Verbund von Interesse. Der Entwickler diese Codes erläutert einige Hintergründe in einem kürzlich veröffentlichten Vortrag (PDF, Seite 235 ff). Der für Software-RAIDs zuständige MD-Code kann die Topologie-Informationen bereits nutzen.
  • Die Unterstützung für Barrieren im Device Mapper wurde erheblich verbessert (delay, mpath, snapshot).
  • Ein Emulex-Entwickler steuerte einen fast 340 KByte großen Patch bei, der Unterstützung für neuere Fibre Channel Host Adapter aus Emulex' FightPulse-Familie im Treiber lpfc (Light Pulse Fibre Channel) nachrüstet; später kam noch ein Update obendrauf, das Unterstützung für target reset handler entrypoints nachrüstet. Vom selben Programmierer stammt auch der FC (FibreChannel) Pass Thru support.
  • Neu dabei ist der iSCSI-Treiber bnx2i für BNX2-Chips von Broadcom. Er arbeitet auf Wunsch mit dem neuen Treiber Cnic zusammen, den das Kernel-Log bereits bei der Beschreibung der Neuerungen im Netzwerkbereich erwähnte.

Die englischen Überschriften von zahlreichen weiteren nicht ganz so wichtigen, aber keineswegs unbedeutenden Änderungen finden sich in der folgenden Liste. Die Einträge verlinken genau wie viele der Verweise im vorangegangenen Text auf den jeweiligen Commit im Webfrontend des Hauptentwicklungszweigs von Linux. Dort liefern normalerweise der Commit-Kommentar und der Patch selbst zahlreiche weitere Informationen zur jeweiligen Änderungen.

File systems

Btrfs:

CIFS:

Ext[234]:

NFS:

Various:

Storage

Block Layer:

Device Mapper:

Libata:

MMC:

MTD:

SCSI:

Various:

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in vorangegangen Ausgaben des Kernel-Logs auf heise open. (thl/c't) (thl)