1923935

Baustelle BTRFS - Das Dateisystem im Detail

28.04.2014 | 11:23 Uhr |

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

Dateisysteme sind die fundamentale Software-Schicht auf Betriebssystemebene, um Dateien und Ordner auf den Datenträgern zu verwalten. Die letzten 25 Jahre Dateisysteme sind geprägt von kurzsichtigen Entwicklungen, denen schnellere und größere Datenträger umgehend wieder ihre Grenzen zeigten. 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.

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

Die Vorteile von BTRFS

BTRFS ist die Abkürzung für B-Tree-Filesystem (wertend auch für „Better FS“). Die Organisation 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 den Partitionszustand sichern ( btrfs subvolumesnapshot ). Durch späteres Einhängen des älteren Snapshots gilt wieder der gesicherte Zustand.

  • BTRFS unterstützt Raid und Subpartitionen direkt. So erfordert das Hinzufügen weiterer Datenträgers lediglich einen Befehl, der das Gerät in den Verzeichnisbaum mountet ( btrfs device add /dev/[xxx] [Mountpunkt] ).

  • BTRFS kann 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 nutzt „Copy on Write“: Das Ändern von Dateien wird beschleunigt, weil das Dateisystem zunächst alle neuen Blöcke in einen freien Speicherplatz schreibt, ohne die 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 viel Zeit mit dem Erweitern und Ersetzen von Speicherkapazitäten verbringen.

Fünf aktuelle Linux-Distributionen im Test

BTRFS in der Praxis: 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 – unter Ubuntu mit diesem Befehl:

sudo apt-get install btrf-tools

Jegliche Administration findet derzeit mit root-Rechten und diesen Tools im Terminal 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. Alle nachfolgenden Angaben „/dev/sd[x]“ sind Beispiele, die Sie an Ihre Konstellation anpassen müssen. 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 dieses 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 Mount-Punkt 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 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. Ein Restore für Snaphots gibt es nicht (abgesehen vom erwähnten Yast-Tool); für das Restore wird das Original ausgehängt und der Snapshot eingehängt.

Linux Kernel 3.14 freigegeben

Größenänderung auf BTRFS: Die Aktion kostet keine Sekunde. Für den Befehl muss man nur den Mount-Punkt kennen, aber nicht den oder die verwendeten Datenträger.
Vergrößern Größenänderung auf BTRFS: Die Aktion kostet keine Sekunde. Für den Befehl muss man nur den Mount-Punkt 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: Die Dateimanager können mit zusammenhängenden BTRFS-Volumes nichts anfangen, machen falsche Größenangaben und zeigen statt dem 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 als root erstellten BTRFS-Partitionen erstmal 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 noch fehlerhaft. So ist es uns nicht gelungen, unter Ubuntu Ext4 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 Web nach BTRFS fahndet, wird noch weitere Problemfelder finden: Instabilität und exorbitanter CPU-Verbrauch werden ebenso moniert wie ein verlangsamter Boot-Vorgang und Unverträglichkeiten mit dem Grub-Boot-Loader.

Fazit: Wer sich heute auf BTRFS einlässt, braucht Mut und Einarbeitungszeit. Aber BTRFS wird kommen. Die Leistungsmerkmale sind zu beeindruckend, um sie auf der Ziellinie fallen zu lassen. Der Weg zu einem Dateisystem für Profis und Admins ist auch nicht mehr allzu weit, aber auf dem Endanwender-Desktop hat das Dateisystem vorerst nichts verloren.

0 Kommentare zu diesem Artikel
1923935