Feintuning – Die Neuerungen von Linux 2.6.30

Seite 2: Neue und überarbeitete Dateisysteme

Inhaltsverzeichnis

Besonders aktiv waren die Kernel-Hacker im nun abgeschlossenen Entwicklungszyklus beim Code des noch jungen Dateisystems Ext4 und sowie dessen Vorgänger Ext3. So nahmen die Kernel-Hacker gleich zu Anfang der Entwicklung einige Änderungen vor, welche die Anfang März bekannt gewordene und viel diskutierte Gefahr eines Datenverlusts durch Delayed Allocation erheblich mindern. Das war erwartet worden, auch wenn das die Performance in machen Situationen verschlechtert.

Es gab allerdings zahlreiche weitere, vorher nicht groß geplante Änderungen, die ihren Ursprung zumeist in einer am Schluss über 650 Mails langen und teilweise recht hitzigen Diskussionen fanden. In der war relativ früh ein altes, schon häufig diskutiertes und Dateisystem-übergreifendes Thema erneut hochgekocht: Wann beziehungsweise wie häufig soll der Kernel die Zugriffszeit (Atime/Access Time) einer Datei aktualisieren?

Die Hintergründe zu dieser recht komplexen Thematik haben wir genau wie viele andere der im folgenden nur oberflächlich erwähnten Dateisystemänderungen im zweiten Teil der Kernel-Log-Mini-Serie "Was 2.6.30 bringt" näher beschrieben.

Doch während ähnliche Diskussionen sonst fruchtlos blieben, gab es dank beherztem, allerdings nicht unumstrittenen Einschreiten von Torvalds diesmal ein Ergebnis: In der Standardkonfiguration aktualisiert der Kernel 2.6.30 die Zugriffszeit nur mehr einmal pro Tag (Relative atime/relatime); das alte Verhalten lässt sich mittels strictatime aktivieren – das ist für einige wenige Anwendungen wie das Mailprogramm Mutt von Interesse.

Einige andere Änderungen sollen die teilweise mehrere Sekunden langen Wartezeiten beim Einsatz von Ext3 deutlich verkürzen, die bislang entstehen, wenn Anwendungen mittels fsync() ein Leeren der Schreibpuffer auslösen, während der Kernel parallel größere Leseanforderungen abarbeitet. Für dieses sich gelegentlich durch spürbare Ruckler bemerkbar machende Problem war allerdings nur teilweise der Ext3-Dateisystemcode verantwortlich, sondern auch der üblicherweise genutzte CFQ-Scheduler im Block-Layer. Auch an dessen Code gab es Korrekturen und Optimierungen – zusammen dürfte das die Geschwindigkeit mancher Desktop-Systeme nicht nur messbar, sondern sogar spürbar steigern.

Das eigentliche Problem für die Wartezeiten ist aber nicht unerheblich durch die Eigenschaft von Ext3 bedingt, Dateisysteme standardmäßig als "data=ordered" einzubinden – das bietet zwar große Sicherheit für die Daten, aber nicht die bestmögliche Performance. Nach langen Diskussionen entstand daraus eine ebenfalls nicht unumstrittenene, aber dennoch integrierte Änderung, durch die der Kernel Ext3-Dateisysteme mit "data=writeback" einbindet. Das soll die Performance steigern, erhöht jedoch die Gefahr eines Datenverlustes beim Absturz oder außerplanmäßigen Ausschalten des PC und hat noch einige weitere Nachteile. Einen Mittelweg zwischen Sicherheit und Performance soll der von Btrfs-Hauptentwickler Chris Mason entwickelte Modus "data=guarded" sein, der allem Anschein nach bei 2.6.31 einziehen wird – bis dahin sollte man bei Desktop-PCs oder Notebooks besser weiter "data=ordered" nutzen, was sich bei der Kernel-Konfiguration oder in der /etc/fstab vorgeben lässt.

Nach der Aufnahme von Btrfs und SquashFS bei Linux 2.6.29 haben die Kernel-Entwickler für die Version 2.6.30 abermals zwei neue Dateisysteme aufgenommen: Nilfs2 und EXOFS. Ersteres heißt komplett New Implementation of a Log-structured Filesystem Version 2 uns ist ein Log-structured File System (LFS) mit Continuous Snapshotting, das primär für die Belange von Solid State Discs (SSD) ohne Wear-Leveling optimiert ist. Eine detaillierte Beschreibung der Arbeitsweise liefert die Nilfs2-Homepage und die Kernel-Dokumentation zu Nilfs2.

Exofs steht für Extended Object File System und hieß zuvor Osdfs (Object-Based Storage Devices File System). Wie der alte Name andeutet, ist es für die recht exotischen OSDs (Object-Based Storage Devices) gedacht, die das SCSI-Subsystem mit dem Kernel 2.6.30 erstmals unterstützen wird.