Das Dateisystem Btrfs

Btrfs, das designierte "Next Generation Filesystem" für Linux, bietet eine Reihe von Features, bei denen die anderen Linux-Dateisysteme passen müssen – und erweist sich schon als fast praxistauglich.

In Pocket speichern vorlesen Druckansicht 21 Kommentare lesen
Lesezeit: 15 Min.
Von
  • Dr. Oliver Diedrich
Inhaltsverzeichnis

Btrfs ist das Dateisystem der Zukunft für Linux, glaubt man den zahlreichen in den letzten Monaten erschienenen Artikeln zum Thema. Und auch die Dateisystementwickler sind dieser Meinung: Btrfs soll das "Next Generation Filesystem" für Linux werden. Allgemeiner Tenor (nicht so sehr der Entwickler, aber der anderen Btrfs-Apologeten): Btrfs ist das ZFS für Linux (so beispielsweise das Linux Magazine). Kann man sicher drüber streiten (ZFS ist bereits im Produktiveinsatz, Btrfs noch hochgradig experimentell), aber Tatsache ist, dass die beiden Dateisysteme eine Menge gemeinsam haben (nähere Informationen zu ZFS bietet der Artikel OpenSolaris als Fileserver). Mit integriertem Volume Management, Checksummen zur Absicherung der Daten, Copy on Write und Snapshots bietet Btrfs eine Sammlung von Features, über die derzeit keines der produktiv nutzbaren Dateisysteme für Linux verfügt.

Btrfs, das im Englischen sowohl als ButterFS als auch als BetterFS ausgesprochen wird, steht ursprünglich für B-Tree FS, da das Dateisystem Daten und Metadaten in Baumstrukturen verwaltet. Seit Linux 2.6.29 ist das Dateisystem, federführend entwickelt von dem bei Oracle angestellten Chris Mason, Teil des Linux-Kernels. Stabil oder gar zur Verwendung auf Produktivsystemen geeignet ist es damit allerdings noch nicht: Wie schon die Btrfs-Seite auf kernel.org deutlich macht, steht noch nicht einmal das Format der Datenstrukturen auf der Platte endgültig fest.

Aber in einem Interview mit Amanda McPherson von der Linux Foundation gibt Mason einen Ausblick, wie es mit Btrfs weitergeht: In der gerade erschienenen ersten Vorabversion des Kernels 2.6.31, so Mason, habe man die meisten Performance-Engpässe beseitigt (die in der letzten Zeit erschienen umstrittenen Performance-Vergleich beispielsweise von Phoronix zwischen Btrfs und anderen Linux-Dateisystemen sind damit also weitgehend hinfällig). Mit dem Kernel 2.6.32, so Mason, sollte Btrfs in einem Zustand sein, in dem es Early Adopters bereits ernsthaft testen können.

Zeit also, einen Blick auf das Linux-Dateisystem der nächsten Generation zu werfen.

Als 64-Bit-Dateisystem adressiert Btrfs bis zu 16 Exabyte (16.384 Petabyte) – sowohl als maximale Volume- als auch als maximale Dateigröße. Das ist deutlich mehr als Ext4 (1024 PByte / 16 TByte), liegt gleichauf mit Suns ZFS und bietet reichlich Reserven für die nächsten Jahre. (Nur zum Vergleich: Für den Large Hadron Collider (LHC) am CERN, dem derzeit wohl größten Datenerzeuger der Welt, stehen rund 20 PByte Speicherplatz zur Verfügung – in einem über elf Rechenzentren in Europa, Nordamerika und Asien verteilten Grid).

Auch eine Reihe weiterer konzeptioneller Btrfs-Eigenschaften erinnern an ZFS:

  • Btrfs speichert Metadaten und Datenblöcke in zwei Baumstrukturen – eine für die Verzeichnis- und Dateinamen und eine zweite für die Datenblöcke.
  • Datenblöcke werden über Extents statt über Blocklisten angesprochen, was die Performance vor allem bei großen Dateien erhöht (Details zu Extents finden sich in dem Artikel Das Linux-Dateisystem Ext4). Kleine Dateien kann Btrfs direkt in den Blättern des Baums speichern; das vermeidet den Overhead, den Extents für kleine Dateien mit sich bringen.
  • Btrfs verwendet Copy on Write: Geänderte Daten schreibt Btrfs in neue Datenblöcke, sodass die alten Daten erhalten bleiben. Erst nach dem Schreiben der Daten wird der Baum zu den Daten aktualisiert – bis dahin zeigt der Datei-Eintrag auf die alten Datenblöcke. Copy on Write lässt sich über die Mount-Option nodatacow abschalten.
  • Dabei arbeitet Btrfs in einer Art "data=ordered"-Modus, der dafür sorgt, dass Änderungen an den Metadaten erst vorgenommen werden, nachdem die zugehörigen Daten auf die Platte geschrieben sind. Das stellt sicher, dass nach einem Systemabsturz oder Stromausfall in scheinbar bereits geschriebenen Dateien nicht alte Daten auftauchen, die vorher in den für diese Datei vorgesehenen Datenblöcken gespeichert waren.
  • Copy on Write ermöglicht das Erstellen von beschreibbaren Snapshots.
  • RAID-Funktionen sind bereits eingebaut (derzeit allerdings nur RAID-0, RAID-1 und RAID-10). Devices lassen sich dabei im laufenden Betrieb hinzufügen und entfernen. Was noch fehlt: RAID-5 und RAID-6 mit ein beziehungsweise zwei redundanten Platten..
  • Mehrere Dateisysteme können auf einem Volume (einer Partition) als so genannte Subvolumes ineinander geschachtelt werden – Btrfs enthält sozusagen einen Logical Volume Manager.
  • Checksummen sichern die Metadaten- und Datenblöcke ab, fehlerhafte Daten lassen sich so erkennen und – falls ein RAID-1 oder RAID-10 konfiguriert ist – von dem Mirror korrigieren. Dieses Verhalten lässt sich über die Mount-Option nodatasum abschalten.

Daneben bietet Btrfs diverse Features, die man von einem modernen Dateiysystem erwartet:

  • Btrfs legt Inodes dynamisch nach Bedarf an; es gibt keine statischen Inode-Tabellen, die bereits beim Erzeugen des Dateisystems geschrieben werden.
  • Das Dateisystem lässt sich im laufenden Betrieb vergrößern und verkleinern und defragmentieren.
  • Btrfs unterstützt Access Control Lists (ACLs) nach dem POSIX-Standard.
  • Dateien können beim Schreiben komprimiert werden (Mount-Option compress). Eine Verschlüsselung der Daten on the fly ist geplant.