Kernel-Log – Was 2.6.29 bringt (4): Dateisysteme, Storage – Btrfs, SquashFS, Ext4 ohne Journal und neue Storage-Treiber

Seite 2: Kernel-Log – Was 2.6.29 bringt (4): Dateisysteme, Storage – Btrfs, SquashFS, Ext4 ohne Journal und neue Storage-Treiber

Inhaltsverzeichnis

Während die Aufnahme des experimentellen Btrfs sich erstmal nicht auf die meisten Anwender und Distributions-Entwickler auswirkt, dürfte die Integration von SquashFS schneller Auswirkungen zeigen. Bei ihm handelt es sich um ein komprimierten Read-Only-Dateisystem, das diversen Linux-Distributionen schon lange auf ihren von USB, CD oder DVD gestarteten Installation- oder Live-Medien einsetzen, um möglichst wenig Platz zu verbrauchen; auch im Embedded-Bereich kommt die Cramfs-Alternative daher häufig zum Einsatz. Die Kernel-Dokumentation zu Squashfs erläutert die Unterschiede zwischen Cramfs und Squashfs sowie die Funktionsweise des neuen Dateisystems detailliert.

In den vergangenen Jahren hatten die SquashFS-Entwickler sich bereits mehrfach um eine Aufnahme in den Linux-Kernel bemüht, waren aber an den Qualitätsansprüchen der Kernel-Hacker gescheitert. Die kritisierten Code-Abschnitte hatten die SquashFS-Entwickler bei der jetzt aufgenommenen Version 4.0 zu verbessern versucht. Die Aufnahme kam aber doch recht überraschend – nach längerer Diskussion um das für und wider sowie einige Probleme am aktuellen Code sagte Torvalds, dass es sinnlos wäre, es nicht aufzunehmen, wenn ohnehin alle Welt das Dateisystem benutzen würde ("if this is really in use by everybody, then not merging it is kind of pointless. "); wenig später integrierte er schließlich die SquashFS-Patches in den Hauptentwicklungszweig.

Auch bei den schon länger im Kernel enthaltenen Dateisystemen gab es einiges an Änderungen. So beherrscht der Kernel nun ein vorübergehendes Einfrieren von Dateisystemen (Filesystem Freeze; 1, 2, 3, LWN-Artikel) – das ist etwa für Container-Virtualisierung sowie für Backup-Lösungen interessant. eCryptfs beherrscht nun das Verschlüsseln von Dateinamen (u. .a. 1, 2, 3, 4); in XFS hingegen gab es zahlreiche größere Änderungen am Btree-Algorithmus (siehe Anhang). Größere Änderungen gab es auch beim Cluster-Dateisystem OCFS2, das nun ACLs, Security Attributes, Quotas und Metadata Checksummen unterstützt.

Zahlreiche kleine Verbesserungen, Aufräumarbeiten und Korrekturen gab es auch am Ext4 Dateisystem – einige von ihnen fanden zwischenzeitlich sogar den Weg in die Stable-Kernel der Serien 2.6.27 und 2.6.28. Die Ext4-Entwickler passten zudem die Dokumentation zum Aktivieren von Write-Barriern an, um die es kürzlich eine längere Diskussionen gegeben hatte (siehe auch LWN-Artikel zum Thema). Einige Änderungen am Fsync-Algorithmus sollen ferner die Performance ein wenig verbessern.

Wer will, kann dank einiger von Google-Entwicklern eingebrachten Änderungen nun Ext4-Dateisysteme ohne Journal betreiben und so die Geschwindigkeit nochmal steigern – bisher setzten mache Anwender noch auf Ext2, um den vom Journaling verursachten Overhead zu umgehen. Einige Messungen zum Einfluss von Journaling auf die performance sowie Überlegungen zum Einsatz von Ext-Dateisystemen auf SSDs finden sich in einem kürzlich veröffentlichten Blog-Eintrag von Theodore Ts'o. Wer sich näher für Ext4 interessiert, findet zudem zahlreiche Hintergrundinfos in einem kürzlich veröffentlichten IBM-Developerworks-Artikel.

Die Unterstützung für Defragmentieren zur Laufzeit ("Online Defrag") in Ext4 nahmen die Kernel-Entwickler noch nicht für 2.6.29 auf; Ende Januar wurde eine neue Varianten veröffentlicht, bei der einige zuvor kritisierte Codebereiche überarbeitet wurden (siehe auch LWN-Artikel zum Thema).

Auch in diesem Entwicklungszyklus gab es wieder zahlreiche Änderungen am IDE-Subsystem des Kernels, das vorwiegend Parallel-ATA-Adapter (gemeinhin als "IDE-Adapter" bezeichnet) ansteuert (1, 2 3). So portierte der für diesen Kernel-Bereich zuständige Entwickler Bartlomiej Zolnierkiewicz einen Libata-Treiber für den CS5536 auf das IDE-Subsysteme und nahm den bei 2.6.18 entfernten Treiber IT8172 für den gleichnamigen Chip von ITE wieder auf. Auch an einigen grundlegenden Kernel-Funktionen gab es einige größere Änderungen (siehe Anhang).

Für viele Anwender dürfte diese Änderungen das aber keine größere Bedeutung haben, denn die meisten aktuellen Linux-Distributionen nutzen zur Ansteuerung von Parallel- und Serial-ATA-Adaptern schon seit längerem vorwiegend die Treiber des Libata-Subsystems. Die mit 2.6.19 aufgenommene PATA-Treiber auf Libata-Basis dürften dadurch wohl mittlerweile deutlich besser getestet sein als die eigentlich älteren Treiber des sich in den letzten Monaten stetig wandelnden IDE-Subsystems. Wie lange die Kernel-Entwickler diese zwei Treiber-Arten weiter pflegen wollen, ist ungewiss. Ursprünglich war erwartet worden, dass das alte IDE-Subsystem entfernt wird, nachdem sich die Libata-PATA-Treiber etabliert haben; derzeit sieht es aber nicht so aus, als ob das bald passieren würde.