Kernel-Log – Was 3.7 bringt (1): Dateisysteme & Storage

Linux 3.7 bringt eine Reihe von Performance-Verbesserungen für Btrfs. Der Kernel unterstützt erstmals das SMB2-Protokoll neuerer Windows-Systeme und beherrscht das für SSDs wichtige Discard bei Software-RAIDs.

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

Am Wochenende hat Linus Torvalds die fünfte Vorabversion von Linux 3.7 veröffentlicht. Dabei zeigte er sich erfreut, dass für den RC5 nur wenige und vorwiegend kleine Änderungen eingereicht wurden. Alle größeren Neuerungen haben Torvalds und seine Mitstreiter wie üblich bereits zu Beginn der Entwicklung von Linux 3.7 aufgenommen. Größere Änderungen im jetzigen Abschnitt der Stabilisierungsphase sind selten, daher kann das Kernel-Log bereits jetzt einen umfassenden Überblick über die wichtigsten Neuerungen der Anfang oder Mitte Dezember erwarteten Linux-Version geben.

Der Überblick erfolgt in einer Artikelserie, die nacheinander die verschiedenen Bereiche des Kernels behandelt. Den Anfang machen die wichtigsten Neuerungen rund um Dateisysteme und die Unterstützung für Storage-Hardware; die später folgenden Artikel werden sich mit Grafiktreibern, Netzwerk-Unterstützung, Architektur-Code und Treibern für andere Hardware beschäftigen.

Durch eine Optimierung am Fsync-Code von Btrfs sollen insbesondere virtuelle Maschinen bessere Schreib-Performance zeigen, wenn die Images der VMs auf Btrfs-Dateisystemen liegen und die Software im Gast per Fsync häufig ein sofortiges Schreiben der Daten fordert. Bei Tests mit verteilten und jeweils durch ein Fsync abgeschlossene Schreibvorgängen mit Hilfe des Benchmarks Fio soll der Durchsatz mit einem SATA-Laufwerk von 82 auf 140 KByte pro Sekunde gestiegen sein, wie der bei Fusionio beschäftigte Entwickler im Kommentar zur Änderung erläutert; mit einem nicht näher spezifizierten "Fusion drive" (offenbar ein Fusion IO Drive – eine PCIe-Flash-Karte) soll der Durchsatz sogar von 431 auf 2532 KByte/s gestiegen sein. Die – absolut gesehen – niedrigen Werte kommen zustande, weil der Benchmark offenbar kleine Blöcke an unterschiedliche Stellen der Platte schreibt und nach jeder Schreibaufforderung darauf wartet, dass die Platte das erfolgreiche Schreiben bestätigt.

Auf dieser Änderung baut eine weitere auf, die bei synchronen Schreibvorgängen die Fsync-Performance verbessert. Bei Tests des zuständigen Entwicklers mit dem Programm "dd" stieg der Durchsatz eines SATA-Laufwerks von ursprünglich 104 auf 121 KByte/s; auf einer Ramdisk erledigte Btrfs den Test sogar um ein Vielfaches schneller als zuvor. Zudem wurde eine in Linux 3.5 eingeflossene Änderung am Fsync-Code von Btrfs zurückgenommen, weil sich bei Messungen mit Sysbench zeigte, dass sie die Performance auf dem Testsystem des Entwicklers von 39 auf 24 MByte/s verschlechtert hatte.

Wie zuvor schon Ext4 und andere Dateisysteme beherrscht nun auch Btrfs das Freigeben von Speicherbereichen innerhalb von Dateien. Dieses "hole punching" ist unter anderem für Virtualisierungssoftware interessant, damit das Host-Dateisystem nicht mehr genutzte Speicherbereiche von Datenträger-Images wieder freigeben kann, die nach dem Löschen von Daten im Gast keine relevanten Daten mehr enthalten.

Eine ganze Reihe von Korrekturen sollen die Zuverlässigkeit des mit Linux 3.6 eingeführten Send/Revieve erheblich verbessern. Zudem lassen sich jetzt nicht mehr nur 20, sondern 65.536 Hardlinks auf eine Datei anlegen. Chris Mason, der Betreuer des weiterhin als experimentell eingestuften Dateisystems, listet einige weitere Änderungen an Btrfs in der Mail mit seinem Haupt-Git-Pull-Request

Ext4 beherrscht Größenänderungen nun auch bei Laufwerken, die größer als 16 TByte sind. Zudem sollen Kapazitätsanpassungen schneller erfolgen, wie Theodore 'tytso' Ts'o in der Mail mit seinem Haupt-Git-Pull-Request erläutert.

Das zum Zugriff auf Windows- oder Samba-Freigaben genutzte CIFS (Common Internet File System) unterstützt nun das mit Windows Vista eingeführte SMB 2.0 und dessen Windows-7-Abkömmling SMB 2.1. Der dafür zuständige Code gilt noch als experimentell; teile des Codes waren schon länger im Kernel, aber als "Broken" markiert und daher normalerweise nicht nutzbar.

Die Unterstützung für NFS 4.1 legte den experimentellen Status ab.

Der MD-Software-RAID-Code von 3.7 kann Datenträger eines RAID-Verbunds per Discard über frei gewordene Speicherbereiche informieren, was für SSDs und Thin Provisioning wichtig ist (1, 2, 3, 4, 5). Auch der Code für NBD (Network BLock Devices) unterstützt nun diese Discard genannte Übermittlung freigegebener Speicherbereiche.

Auch bei ATA-Geräten lässt sich jetzt über die Sysfs-Device-Datei cache_type (etwa /sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:1/0:0:1:0/scsi_disk/0:0:1:0/cache_type) zwischen den Cache-Verhaltensweisen Write-Through und Write-Back umschalten.

Das Libata-Subsystem beherrscht nun den im AHCI 1.3.1 Technical Proposal spezifizierten Stromsparmechanismus "Aggressive SATA device sleep", der die Leistungsaufnahme bei Systemen mit SATA-Laufwerken reduzieren kann.

Der SCSI-Treiber qla4xxx hat den Umgang mit dem Qlogic 8032 (ISP83XX) gelernt und Virtio-Scsi unterstützt die Größenänderungen von Datenträgern.

Das Block-Layer beherrscht nun das "WRITE SAME"-Kommando, um ein einmalig übermitteltes Datenpaket auf alle spezifizierten IO-Bereiche zu schreiben. Auf diesem Weg lassen sich etwa RAIDs leicht Initialisieren oder kompletter Datenträger effizient überschreiben.