Kernel-Log – Was 3.0 bringt (2): Dateisysteme

Die Kernel-Hacker haben den Btrfs-Code optimiert und um neue Funktionen erweitert; ein deutlich verbessertes Werkzeug zum Prüfen des experimentellen Dateisystems soll bald erscheinen. Ext4 beherrscht jetzt die "punch hole" genannte Technik, um ungenutzten Speicherplatz mitten in einer Datei wieder freizugeben.

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

Auch in dieser Woche hat Linus Torvalds in der Nacht von Montag auf Dienstag eine neue Vorabversion von Linux 3.0 freigegeben. In der Freigabemail zum mittlerweile vierten RC erwähnt er einige etwas umfangreichere Änderungen am DRM-Subsystem; darunter Patches, welche die zwischen RC2 und RC3 eingeflossene Unterstützung für den Grafikkern in AMDs kürzlich vorgestelltem Llano verbessern.

Das Kernel-Log nimmt die fortschreitende Entwicklung von Linux 3.0 zum Anlass, die Mini-Serie "Was 3.0 bringt" mit der Beschreibung der Neuerungen rund um Dateisysteme fortzusetzen. Den Anfang dieser Artikel-Reihe hatte eine Übersicht der Änderungen an Netzwerk-Treibern und -Infrastruktur gemacht; in den kommenden Wochen werden Artikel zur Grafik-Treibern, Architektur-Code, Storage-Unterstützung, Infrastruktur und Treibern für andere Hardware folgen.

Einen ganzen Schwung von Änderungen gab es am weiterhin experimentellen Btrfs-Dateisystem; der bei Oracle beschäftigte Hauptentwickler Chris Mason bezeichnete sie in seinem Git-Pull-Request als die vermutlich umfangreichsten, die er je eingesandt hat. Zwischen RC1 und RC2 legt er sogar nochmal einige umfangreichere Änderungen nach – Torvalds kritisierte Letzteres jedoch scharf und forderte die Btrfs-Entwickler auf, solch große Änderungen nicht wieder nach Ende des Merge Window einzusenden.

In diesen und früheren Git-Pull-Request zeigt sich auch deutlich, wie viele verschiedene Firmen mittlerweile zu Btrfs beitragen. Fujitsu-Entwickler Miao Xie hat etwa die neue "Delayed Inode Items Operation" eingebracht; laut Messungen des Entwicklers beschleunigt die Technik das Erstellen von Dateien um zirka 15 Prozent, das Löschen um 20 Prozent.

Von Arne Jansen stammt die Scrub-Unterstützung; hier liegt das Copyright bei Strato. Über diesen Code kann der Anwender den Kernel anweisen, alle Daten vom Speichermedium zu lesen und dabei die Checksummen zu prüfen, um sicherzustellen, dass alle Daten intakt sind; findet es Fehler, dann versucht das Dateisystem eine intakte Kopie des Blocks einzubinden, wenn es eine finden kann.

Den Code zum Verwalten von Inodes haben die Entwickler überarbeitet, damit die Inode-Nummern auf 32-Bit-Systemen nach Löschen und Anlegen vieler Dateien nicht ausgehen; in dem Rahmen erhielt das Dateisystem einen Cache für freie Inode-Nummern, der aber fürs erste über eine Mount-Option eingeschaltet werden muss, weil er noch Probleme bereitet. Diese Verbesserungen hat Fujitsu-Entwickler Li Zefan vorangetrieben.

Da Btrfs mit Copy on Write (COW) arbeitet, fragmentiert es bei bestimmten Zugriffsmustern schnell. Über die neue Mount-Option "auto_defrag" kann man das Dateisystem nun anweisen, auf kleine und zufällige Schreiboperationen ("small random writes") in existierenden Dateien zu achten, um solche Dateien zur automatischen Defragmentierung vorzumerken. Das ist laut Commit-Kommentar und Git-Pull-Request gut für kleine Datenbanken wie jene von Sqlite oder die BerkeleyDB geeignet, nicht aber für größere Datenbanken oder die Festplattenabbilder von Virtualisierungslösungen.

Diese Änderung stammt von Mason selbst. In einem der Git-Pull-Requests hebt er außerdem noch einige Performance-Optimierungen hervor, die Red-Hat-Entwickler Josef Bacik eingebracht hat; zudem habe Suse-Entwickler Dave Sterba zahlreiche Aufräumarbeiten vorgenommen.

In einer Diskussion um den Einsatz von Btrfs als Standard-Dateisystem bei Fedora 16 erwähnte Bacik kürzlich, ein besseres Werkzeug zum Checken und Reparieren von Btrfs-Dateisystem sei "so gut wie fertig"; die Freigabe des seit Monaten vorbereiteten Werkzeugs verzögere sich aber, weil es sehr ausführlich getestet werde. Das derzeit verfügbare btrfsck/fsck.btrfs bietet nur einige Basis-Funktionen.

  • Ext4 unterstützt nun die "punch hole" genannte und via Fallocate nutzbare Funktion, über die Programme dem Dateisystem mitteilen können, wenn Bereiche innerhalb einer Datei keine Daten enthalten. Das kann etwa für Virtualisierungsprogramme interessant sein, damit das Dateisystem nicht mehr genutzte Speicherbereiche von Festplatten-Images wieder freigeben kann, die als Sparse-Dateien vorliegen. OCFS2 und XFS könne das seit Linux 2.6.38.
  • Tmpfs bietet jetzt auch eine Basis-Unterstützung für Erweiterte Attribute (EAs/Extended attributes/xattr). Ein Red-Hat-Entwickler hat diese Änderung programmiert, um auf temporären Dateisystemen RPM-Pakete bauen zu können, die File Capabilities verwenden.
  • Das XFS-Dateisystem unterstützt nun auch Online Discard, um den jeweiligen Datenträger direkt beim Löschen von Dateien über freigewordene Speicherbereiche zu Informieren – das ist für SSDs und Netzwerkspeicher mit Thin Provisioning interessant. Im "XFS status update for May 2011" hebt Christoph Hellwig zudem noch ein erheblich verbessertes Busy Extent Tracking hervor (1, 2).
  • Der NFS-Client-Code enthält nun einen pNFS Objects Layout Treiber für das in RFC5664 beschriebene NFSv4.1 pNFS Target (u. a. 1).

Viele kleinere, aber keineswegs unbedeutende 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 gepflegten Git-Zweigs mit den "offiziellen" Kernel-Quellen auf Kernel.org. Der über diese Links angezeigten Commit-Kommentar und der darunter ausgegebene Patch liefern zahlreiche weitere Informationen zur jeweiligen Änderungen.

Vor jedem Link finden sich in eckigen Klammern einige Buchstaben und Zahlen. Ein "C" kennzeichnet Patches mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten, die bei der Kernel-Konfiguration über "make menuconfig" oder "make xconfig" angezeigt werden. Ein "D" steht bei Patches, die die Dokumentation verändern, die im Kernel-Zweig unterhalb von Documentation/ liegt. Ein "N" weist Änderungen aus, die eine neue Datei anlegen. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: eine "1" kennzeichnet Änderungen, die inklusive Kommentar zwischen 10 und 20 KByte groß sind, eine "2" für solche, die zwischen 20 und 30 KByte Umfang haben; Änderungen ohne Zahl sind kleiner als 10 KByte, Patches mit einer "9" hingegen 90 KByte oder größer.

Btrfs

Ext Family

Various

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl). (thl)