Dateisystem BTRFS (Better Filesystem oder Baustelle?)

Seit sieben Jahren gilt das Dateisystem BTRFS als Linux-Standard der Zukunft. Es bietet wegweisende Funktionen mit fundamentalen Vereinfachungen bei der Datenträger-Administration. Der Status Quo ist aber immer noch eine Baustelle.

Dateisysteme sind die fundamentale Software-Schicht auf Betriebssystem-Ebene, um Dateien und Ordner auf den Datenträgern zu verwalten. Die letzten 25 Jahre Dateisysteme sind leider geprägt von kurzsichtigen Entwicklungen, denen schnellere und größere Datenträger umgehend wieder ihre Grenzen aufwiesen. Zeitgemäße Dateisysteme sind aktuell Ext4 unter Linux, NTFS unter Windows und HFS+ unter Mac OS. Die wichtigsten Eigenschaften sind der effiziente Umgang mit dem Plattenplatz, Metadaten inklusive Benutzerrechte, flexible Erweiterbarkeit durch zusätzliche Platten, Größenänderung bestehender Partitionen, (praktisch) unbegrenzte Datei- und Partitionsgrößen, Dateiverschlüsselung, Komprimierung, Organisationshelfer wie Symlinks und Hardlinks. Dies alles verspricht BTRFS – und noch deutlich mehr.

Die Vorteile von BTRFS

BTRFS ist die Abkürzung für B-Tree-Filesystem (wertend auch für „Better FS“). Die Organisation der Datenblöcke in B-Trees ist aber nicht signifikant für BTRFS, da diese auch in Ext4, NTFS oder HFS+ stattfindet. Die Highlights liegen woanders:
* BTRFS bietet Snapshots, die mit einem Befehl den Partitionszustand sichern (btrfs subvolume snapshot). Durch späteres Umbenennen des Mountpunkts und Einhängen des älteren Snapshots gilt wieder der gesicherte Zustand.
* BTRFS unterstützt RAID und Subpartitionen direkt. So erfordert das Hinzufügen eines weiteren Datenträgers lediglich einen Befehl, der das Gerät in den Verzeichnisbaum mountet (btrfs device add /dev/[xxx] [Mountpunkt]).
* BTRFS kann geladene Datenträger mit einem Befehl (btrfs filesystem resize [Größe] [Mountpunkt]) im Handumdrehen vergrößern oder verkleinern.
* BTRFS fasst mit einem Befehl (mkfs.btrfs /dev/sd[n] /dev/sd[m]…) zwei oder mehr Datenträger zu einem Speicherplatz zusammen.
* BTRFS ist ein COW-Dateisystem („Copy On Write“): Das Ändern von Dateien wird beschleunigt, indem das Dateisystem zunächst alle neuen Blöcke in einen freien Speicherplatz, ohne ursprüngliche Datei zu verändern.
* BTRFS nutzt interne Komprimierung (optional), defragmentiert selbständig im laufenden Betrieb und vermeidet Platzverschwendung bei sehr kleinen Dateien.
* BTRFS kann vorhandene Ext[n]-Datenträger, sofern ausgehängt, mit dem Befehl btrfs-convert /dev/sdXY sehr schnell nach Btrfs umwandeln.
Diese – nicht vollständige – Liste macht deutlich: BTRFS kann insbesondere Administratoren das Leben erleichtern, die Stunden mit dem Erweitern und Ersetzen von Speicherkapazitäten verbringen.

BTRFS formatieren
Mit BTRFS formatieren: Für Spezialisten wie hier Gparted gehört das Dateisystem längst zum Standardrepertoire.

BTRFS in der Praxis: Einige Beispiele

Schon vor fünf Jahren hielt BTRFS Einzug in den Linux-Kernel, nämlich ab Version 2.6.29. Aktuelle Linux-Versionen haben eine Kernel-Version mit führender „3“ und sind somit allesamt in der Lage, BTRFS-Partitionen zu nutzen und zu bearbeiten. Inzwischen kann BTRFS bei den meisten Distributionen auch schon bei der Installation als Dateisystem des Betriebssystems gewählt werden. Geschieht dies, lädt das Setup die notwendigen BTRFS-Werkzeuge automatisch nach, andernfalls können Sie das manuell erledigen – etwa unter Ubuntu mit diesem Befehl:
sudo apt-get install btrf-tools
Jegliche Administration mit diesen Tools findet derzeit mit root-Rechten auf der Kommandozeile statt. Einzige Ausnahme ist das grafische Tool yast2-snapper unter Open Suse, das allerdings auch erst manuell nachinstalliert werden muss.
Um sich risikolos mit den Möglichkeiten vertraut zu machen, können Sie etwa mit USB-Sticks experimentieren. Eventuelle Daten gehen bei folgendem Kommando verloren:
sudo mkfs.btrfs /dev/sdc /dev/sdd
Damit legen Sie zwei (ausgehängte) Datenträger zu einem logischen Volume zusammen. Um diesen Speicherplatz einzuhängen, benötigen Sie ein leeres Verzeichnis und einen Mount-Befehl:
sudo mount /dev/sdc ~/Sticks
Es spielt keine Rolle, welche der beiden Device-Kennungen Sie dabei verwenden (hier „sdc“ oder „sdd“). Einen weiteren Datenträger fügen Sie mit diesem Befehl dazu:
sudo btrfs device add /dev/sdf ~/Sticks/
Kontrolle über den Datenträgerverbund bieten folgende Kommandos:
sudo btrfs filesystem show
df –h ~/Sticks

Der erste Befehl zeigt die zugehörigen Original-Laufwerke, der zweite Kapazität, Device-Namen und Mountpunkt des virtuellen Volumes.
Wie schnell BTRFS Größenänderungen auf einem Volume oder einem Verbund erledigt, zeigt dieser Befehl:
sudo btrfs filesystem resize -4g ~/Sticks
Als letztes Beispiel legen wir einen Snapshot des Datenträgerbunds an:
sudo btrfs subvolume snapshot ~/Sticks ~/Sticks/Backup
Die Aktion ist auch bei größeren Laufwerken blitzschnell erledigt, da es sich vorläufig nur um einen Zeiger auf identische Dateiobjekte handelt. Erst bei Änderungen, die Sie auf dem Datenträger vornehmen, muss BTRFS die Originalversion für den Snapshot gesondert speichern. Der Snapshot „Backup“ wird dauerhaft den Originalzustand anzeigen und diesen erhalten, egal was im Originalordner geschieht. Einen Restore-Befehl für Snaphots gibt es nicht (abgesehen vom oben erwähnten Yast-Tool); für das Restore wird einfach das bisherige Original ausgehängt und der Snapshot eingehängt.

BTRFS Resize
Größenänderung auf BTRFS: Die Aktion kostet keine Sekunde. Für den Befehl muss man nur den Mountpunkt kennen, aber nicht den oder die verwendeten Datenträger.

BTRFS als Baustelle

Die technischen Möglichkeiten von BTRFS sind beeindruckend, aber es fehlt an der Integration in das Gesamtsystem. Die üblichen Dateimanager können mit zusammenhängenden BTRFS-Volumes nichts anfangen, machen falsche Größenangaben und zeigen statt einem BTRFS-Verbund die einzelnen Datenträger in der Geräteliste, obwohl darauf kein Zugriff mehr möglich ist. Nebenbei muss man mit Rechteproblemen rechnen, weil die mit root-Rechten erstellten BTRFS-Partitionen erst mal nur root den Schreibzugriff erlauben.
Die ausschließliche Administration über die Kommandozeile ist vertretbar, wenn man Administratoren als die eigentliche Zielgruppe annimmt. Selbst dann, wenn das so bleiben soll, ist aber noch viel zu tun: Einige hier größtenteils nicht erwähnte Befehle sind derzeit noch fehlerhaft. So ist es uns nicht gelungen, unter Ubuntu Ext4-Laufwerke nach BTRFS zu konvertieren. Bekannt ist ferner, dass die Entnahme eines Laufwerks mit btrfs device delete nicht funktioniert. Gefährlicher sind ungenügend fehlertolerante Befehle wie btrfs-debug-tree, die zu ernstem Datenverlust führen können.
Wer heute im Internet nach BTRFS fahndet, wird noch eine Reihe weiterer Problemfelder finden: Instabilität und exorbitanter CPU-Verbrauch werden ebenso moniert wie ein deutlich langsamerer Bootvorgang und Unverträglichkeiten mit dem Grub-Bootloader.
Fazit: Wer sich heute auf BTRFS einlässt, braucht Mut und Einarbeitungszeit. Aber BTRFS wird kommen. Die Funktionen und Leistungsmerkmale sind zu beeindruckend, um sie auf der Ziellinie fallen zu lassen. Der Weg zu einem Dateisystem für Profis ist auch nicht mehr allzu weit, aber auf dem Endanwender-Desktop hat das Dateisystem in absehbarer Zeit nichts verloren.

Open Suse: Snapper
Grafische Snapshot-Verwaltung: Open Suse hat mit yast2-snapper das bislang einzige grafische BTRFS-Werkzeug im Angebot. Ansonsten ist BTRFS-Verwaltung ein Terminal-Job.