Kernel-Log – Was 3.8 bringt (1): Dateisysteme und Storage

Linux unterstützt jetzt das speziell auf Datenträger mit Flash-Chips zugeschnittene Dateisystem F2fs. Btrfs soll bestimmte Aufgaben flotter erledigen und Ext4 kann kleine Dateien nun effizienter handhaben.

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

Linus Torvalds hat am Freitag die vierte Vorabversion von Linux 3.8 veröffentlicht. Er rief dabei zum Testen auf und erwähnte erfreut, die Entwicklung komme seiner Ansicht nach zur Ruhe. Alle größeren Neuerungen für Linux 3.8 haben Torvalds und seine Mitstreiter wie üblich aufgenommen, als sie mit der Entwicklung dieser Version begonnen haben. 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 Mitte Februar 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, Netzwerk-Techniken sowie Treiber für Storage- und Netzwerk-Hardware. Die später folgenden Artikel werden sich mit Grafiktreibern, Kernel-Infrastruktur, Netzwerk-Unterstützung, Prozessor/Plattform-Unterstützung und Treibern für andere Hardware beschäftigen.

Linux unterstützt jetzt das im Oktober von Samsung-Entwicklern präsentierte Dateisystem F2fs (Flash-Friendly File System). Es ist für den Einsatz auf Flash-Datenträgern ausgelegt, die einen simpleren Flash Translation Layer (FTL) verwenden als SSDs für Desktop-PCs oder Server – dazu gehören USB-Sticks, Speicherkarten sowie die von Kameras, Tablets und Smartphones verwendeten Speichermedien.

F2fs ist ein Log-structured File System (LFS) und füllt Datenträger von vorn nach hinten; erst wenn es dort angekommen ist, beginnt es wieder vorn und nutzt dann die zwischenzeitlich freigewordenen Bereiche. Ähnliche Mechanismen verwendeten auch die Flash Translation Layer von Flash-Datenträgern, um für eine gleichmäßige Nutzung der Flash-Chips zu sorgen, da diese nur eine begrenzte Zahl von Schreibvorgängen vertragen; eine FTL sorgt zudem dafür, dass sich eine SSD wie eine Festplatte ansprechen lässt.

Beim sequenziellen Befüllen nutzt F2fs ähnlich wie Btrfs Copy-on-Write (COW). Das bringt eine gewisse Robustheit mit sich, da die alten Daten noch verfügbar sind, wenn die neuen nicht vollständig geschrieben wurden, weil das System während des Schreibens abgestürzt ist. Daher braucht F2fs auch kein Journaling, wie es Ext4 beherrscht. Anders als Btrfs oder Ext4 versucht Fs2fs nicht, das Fragmentieren von Daten zu vermeiden; durch die sehr kurzen Zugriffszeiten ist Fragmentierung bei Flash-Datenträgern kein Nachteil.

Durch seine Arbeitsweise sollte F2fs besser mit simplen FTLs harmonieren als Ext4 und andere LFS-Dateisysteme; von Letzteren bekannte Probleme haben die F2fs-Entwickler durch einige Design-Kniffe zu vermeiden versucht. Details zu F2fs erläutern die zugehörige Kernel-Dokumentation und ein Artikel bei LWN.net, der von Mdadm-Maintainer Neil Brown stammt. Die Userspace-Werkzeuge zum Formatieren eines F2fs-Laufwerks liefert Kernel.org.

Das weiterhin experimentelle Btrfs erhielt eine Replace-Funktion, die Daten schneller als zuvor von einem Laufwerk auf ein anderes transferiert – etwa beim Datenträgeraustausch im laufenden Betrieb (u. a. 1, 2). Unter den weiteren Änderungen an Btrfs sind einige, die Latenzen und CPU-Nutzung bei Fsync oder Schreiben per O_DIRECT senken sollen; durch andere Patches soll Btrfs die Arbeit auf mehr CPUs verteilen können, was die Performance steigern soll (u. a. 1, 2).

Durch den neuen Inline Data Support kann Ext4 wenige Byte kleine Dateien nun zusammen mit dem Inode-Eintrag speichern, was Speicherplatz spart und den Zugriff beschleunigt (1, 2). Ext4 unterstützt nun auch die bei Linux 3.1 eingeführten Lseek-Kennzeichnungen SEEK_DATA und SEEK_HOLE, durch die beispielsweise Backup- oder Kopierprogramme leere Bereiche von Sparse-Dateien erkennen können, um diese bei ihrer Arbeit auszusparen.

Auch Tmpfs implementiert diese Lseek-Kennzeichnungen nun. Unter den Änderungen an XFS sind Funktionen zum Erkennen von Metadaten-Verfälschungen, die durch Schreib- oder Lesefehler entstehen. Unter den Änderungen an NFS sind welche, durch die Server und Client die Größe der Caches abstimmen können.

Die bei Software-RAIDs genutzte RAID6-Bibliothek kann für bestimmte Berechnungen nun Advanced Vector Extension 2 (AVX2) nutzen (1, 2); das sind x86-Instruktionen, die Intels in einigen Monaten erwartete Haswell-Prozessoren beherrschen sollen.

Zum Kernel stieß der "LSI MPT Fusion SAS 3.0 Device Driver" mpt3sas, der 12-GB-SAS-Chips von LSI unterstützt; er hat einige Gemeinsamkeiten mit dem Treiber mpt2sas, der nun keine größeren Erweiterungen mehr erhalten soll. Der Treiber hptiop spricht nun auch die HighPoint-Controller RR4520 und RR4522 an.

Bei mit MBR eingeteilten Datenträgern lässt sich die Root-Partition jetzt über eine Angabe wie "root=PARTUUID=0002dd75-01" spezifizieren. Der Kernel sucht dann den Datenträger mit der 32-Bit-UUID (oft als "NT disk signature" bezeichnet) 0002:dd75 und versucht, dessen erste Partition als Root-Device einzubinden.

Der DRBD-Kernel-Code ist jetzt auf dem Stand von DRBD 8.4.2; die DRBD-Entwickler mussten sich aber Kritik vom Betreuer des Block-Subsystems anhören, weil sie so viele umfangreiche Änderungen anliefern, statt den Code in kleinen Schritten zu verbessern; ähnliches Verhalten will er in Zukunft nicht mehr tolerieren.