DateisystemeSite

Btrfs ist, wie ZFS, ein hybrides System aus Dateisystem und Volume Manager. Es bricht die starre 1:1-Zuordnung von Partition und Dateisystem auf.

Im Gegensatz zu ZFS, das strikte Regeln für VDEVs hat, setzt Btrfs auf maximale Flexibilität. Du kannst Laufwerke unterschiedlicher Größe in einen Pool werfen, RAID-Level im laufenden Betrieb ändern (Convert) und Kapazität dynamisch hinzufügen oder entfernen.

Das Ziel ist ein „Self-Healing“-System, das fest in den Linux-Kernel integriert ist (GPL-Lizenz), was ZFS aufgrund von Lizenzkonflikten verwehrt bleibt.

Kernmechaniken: Das „Warum“ hinter der Technik

Alles ist ein B-Baum

Der Name ist Programm. Fast jede Struktur in Btrfs ist ein B-Tree. Das sorgt für effiziente Lookups und Skalierbarkeit.

Der wichtigste Aspekt ist jedoch Copy-on-Write (CoW):

  • Daten werden niemals überschrieben.
  • Geänderte Blöcke werden an neue Positionen geschrieben.
  • Erst wenn die Daten sicher liegen, wird der B-Tree-Pointer aktualisiert.

Architektonische Konsequenz:

Das Dateisystem ist bei Stromausfällen konsistent. Ein fsck dauert theoretisch nur Sekunden, da der Baum nur bis zur letzten validen Transaktion zurückverfolgt werden muss.

Subvolumes (Die „Verzeichnis-Partitionen“)

In ext4 oder XFS ist eine Partition eine starre Grenze. In Btrfs erstellst du Subvolumes.

Ein Subvolume verhält sich wie ein Verzeichnis, kann aber separat gemountet werden und hat eigene Snapshot-Richtlinien.

  • Vorteil: Du installierst Linux. /, /home und /var sind Subvolumes. Sie teilen sich denselben freien Speicherplatz im Pool. Du musst nicht vorher raten, wie groß /var sein muss.

Snapshots & Rollback

Da Btrfs auf CoW basiert, kostet ein Snapshot keinen Platz (er friert nur den Zustand der B-Tree-Pointer ein).

Tools wie Snapper (Standard bei OpenSUSE) nutzen das:

  1. Vor jedem yum update oder apt upgrade wird automatisch ein Snapshot erstellt.
  2. Geht das Update schief, bootest du einfach in den Snapshot von „vor 5 Minuten“.
  3. Das Dateisystem wird auf den alten Stand zurückgerollt (Rollback).Das ist der Hauptgrund, warum Btrfs auf Workstations und Server-OS-Partitionen eingesetzt wird.

Storage Pooling & RAID (Licht und Schatten)

Hier unterscheidet sich Btrfs massiv von ZFS und traditionellem RAID.

Chunk-Based RAID

Btrfs spiegelt nicht ganze Festplatten, sondern Daten-Chunks (meist 1 GB groß).

  • RAID 1 (Mirroring): Btrfs garantiert, dass von jedem Chunk zwei Kopien auf zwei unterschiedlichen Devices liegen.
  • Implikation: Du kannst eine 10 TB Platte und eine 2 TB Platte in ein RAID 1 stecken. Du erhältst 2 TB gespiegelten Speicher. Der Rest der 10 TB Platte bleibt nutzbar (als Single oder für andere RAIDs). Diese Flexibilität bietet sonst kein Enterprise-FS.

„RAID 5/6 Warnung“ (Das Write-Hole)

Als Systemarchitekt muss ich hier eine klare Warnung aussprechen:

Nutze Btrfs RAID 5 oder RAID 6 niemals für produktive Daten (Stand heute).

Btrfs hat ein ungelöstes „Write Hole“-Problem bei Paritäts-RAID. Wenn der Strom während eines Schreibvorgangs ausfällt, passen Daten und Parität eventuell nicht mehr zusammen. Da Btrfs kein Journal für Parität nutzt (wie mdadm es könnte), führt dies bei einem Rebuild zu korrupten Daten.

  • Lösung: Nutze für RAID 5/6 den darunterliegenden mdadm oder Hardware-RAID und formatiere das resultierende Device einfach als „Single“ Btrfs. (So macht es z. B. Synology).

Features & Tuning

Transparente Kompression

Du kannst Verzeichnisse oder Subvolumes mit compress=zstd mounten.

  • Kausalität: Moderne CPUs (ZSTD) komprimieren schneller, als die SSD schreiben kann. Du gewinnst also Speicherplatz und Schreib-Geschwindigkeit (Throughput), da weniger physische Daten auf den Flash-Speicher müssen.

Deduplizierung (Out-of-Band)

Anders als ZFS (In-Band / Realtime) setzt Btrfs meist auf Out-of-Band Deduplizierung (z. B. mit Tools wie duperemove oder bees).

  • Das System scannt im Hintergrund nach doppelten Blöcken und führt sie zusammen.
  • Vorteil: Es belastet den Schreibpfad nicht. Der RAM-Bedarf ist moderat.

Rebalance

Da Btrfs daten chunk-basiert verteilt, kann ein Pool „unwuchtig“ werden, wenn du Disks hinzufügst.

Der Befehl btrfs balance schreibt die Daten neu über alle verfügbaren Disks. Das ist essenziell nach einer Erweiterung, dauert aber bei großen Datenmengen sehr lange und erzeugt hohe I/O-Last.

Fazit & Einsatzempfehlung

Btrfs ist das „Schweizer Taschenmesser“. Es ist nicht ganz so robust wie der „Panzer“ ZFS, aber viel flexibler und tiefer ins Linux-Ökosystem integriert.

SzenarioEmpfehlungBegründung
Linux Root-PartitionIdealSnapshots ermöglichen gefahrloses Patchen/Updaten.
Mixed-Drive NASGut (RAID1)Perfekt, wenn man alte Festplatten unterschiedlicher Größe recyceln will.
Enterprise StorageBedingtNur über mdadm oder Hardware-RAID. Native Btrfs-RAID-Logik vermeiden.
Container / DockerSehr gutDer Btrfs-Storage-Driver für Docker ist extrem effizient für Layer-Management.

Tipp: Wenn du ein Synology NAS nutzt, siehst du dort „Btrfs“. Synology nutzt aber klugerweise mdadm (Linux Software RAID) für die Redundanz (RAID 5/6) und legt Btrfs nur als logische Schicht darüber (für Bit-Rot-Erkennung und Snapshots). Das ist eine valide, stabile Architektur.

This post is also available in: Deutsch English