← Zurück zum Blog

Btrfs vs. ZFS im Homeserver – warum ZFS oft Overkill ist

Btrfs vs. ZFS im Homeserver – warum ZFS oft Overkill ist

ZFS ist eine Meisterleistung der Storage-Technik. Copy-on-Write, Checksummen, Snapshots, integrierte Komprimierung, RAID-Z – alles auf Enterprise-Niveau. Aber gerade im Homeserver ist ZFS oft overkill – und das liegt nicht an fehlenden Features, sondern an den Ressourcen, die es stillschweigend erwartet.

ZFS: kein "set and forget"

Das Problem mit ZFS ist nicht die Konfiguration – ein zpool create tank mirror /dev/sda /dev/sdb ist schnell getippt. Die Sache ist: ZFS nimmt sich, was es kriegen kann, ohne zu fragen.

Aspekt ZFS Btrfs
RAM-Nutzung (ARC) 50 % des verbauten RAMs als Default kein vergleichbarer Cache
Minimalempfehlung RAM 8 GB (mit Dedup eher 32+) 512 MB reichen
CPU unter Last höher (Checksummen + Kompression) moderat
Hitzetoleranz bei voller Platte droppt Leistung massiv gleichmäßiger
Snapshots ja ja
RAID-Ähnlich RAID-Z1/2/3 (jeder Fehler = Resilver) RAID 0/1/10 + DUP
Datenintegrität Checksummen auf allen Ebenen Checksummen (metadata optional data)
Kernel-Integration DKMS / Out-of-tree (OpenZFS) nativ im Kernel

Warum ZFS im Homeserver oft zu schwer ist

1. RAM-Fresser ohne Rücksicht

ZFS' ARC (Adaptive Replacement Cache) belegt standardmäßig bis zu 50 % des gesamten RAMs. Auf einem Homeserver mit 16 GB sind das 8 GB – für einen Dateisystem-Cache. Ja, man kann das Limit per zfs_arc_max senken, aber der Default ist aggressiv.

Auf einem Btrfs-System fließt der freie RAM in den Page Cache – wenn das System ihn braucht, gibt er ihn frei. Unkomplizierter.

2. Performance fällt ohne Konfiguration ab

Ein ZFS-Pool frisch installiert, ein zpool create und los geht's – die Geschwindigkeit kann enttäuschend sein. Grund: ZFS erwartet Tuning.

Typische Stellschrauben:

  • ashift: Default liegt oft bei 9 (512 Bytes). Auf modernen 4K-Sektoren-Platten braucht es ashift=12 – sonst massive Schreibleistungseinbußen.
  • recordsize: Default 128 KB. Für Datenbanken oder VMs falsch.
  • atime / relatime: Default on – für viele Setups unnötiger Overhead.
  • compression: lz4 ist quasi kostenlos – bis die CPU unter Last kommt.
  • xattr / acl: wenig bekannt, aber relevant bei Samba/NFS.

Wer diese Parameter nicht setzt, lässt teils 30–50 % Performance liegen. Btrfs läuft bei den wichtigsten Werten direkt gut.

3. Resilver und Fehlertoleranz

ZFS' RAID-Z ist großartig – wenn ein Laufwerk ausfällt, wird der Resilver zur Zitterpartie. Ein Resilver unter Last kann das System lahmlegen, weil ZFS rechnen muss. Auf kleinen Homeservern mit wenig RAM und schwacher CPU ist das spürbar. Btrfs' RAID 1 shadowt die Daten blockweise – bei Ausfall wird einfach vom Mirror gelesen.

4. Kein natives Reshaping

Ein RAID-Z kann nicht einfach um ein Laufwerk erweitert werden (zumindest nicht ohne die inzwischen hinzugekommene RAID-Z Erweiterung, die noch nicht als stabil abgeschlossen gilt). Ein Btrfs-RAID 1 lässt sich dagegen mit btrfs device add erweitern.

5. Kernel-Abhängigkeit

ZFS ist nicht im Linux-Kernel (Lizenzkonflikt). Jedes Kernel-Update kann bedeuten: ZFS neu kompilieren, warten, hoffen. Btrfs ist ab kernel 3.x dabei und läuft immer.

Was Btrfs besser macht

Einfache Administration

# Subvolumes anlegen (Docker, @home, @snapshots)
btrfs subvolume create @docker
btrfs subvolume create @home

# Snapshot per systemd-timer
btrfs subvolume snapshot -r @docker @docker-$(date +%Y%m%d)

# Kompression aktivieren (mount)
mount -o compress=zstd /dev/sda /mnt

Kein Pool-Erstellen, kein Import/Export, keine Online-Resilver-Rate. Die Befehle sind knapp und der Output ist lesbar.

Integration mit systemd und snapper

Snapper + systemd-timer = Snapshots ohne eigenes Tooling. Mit ZFS bräuchte man sanoid oder znapzend.

Speicher-effizienter bei kleinen Platten

Auf einem 1-TB-SSD + 2-TB-HDD-Setup kann ZFS seinen ARC-Cache nicht sinnvoll füllen – die 8 GB RAM sind trotzdem reserviert. Btrfs passt sich automatisch an.

Entscheidungsmatrix

Szenario Empfehlung
Homeserver (8–16 GB RAM, 2–4 Platten) Btrfs
Dedizierter NAS (TrueNAS, 32+ GB RAM) ZFS
Ein-Platten-Laptop / Desktop Btrfs
VM-Server mit vielen Snapshots Btrfs (subvolumes)
Produktivdatenbank mit 10+ TB ZFS
Raspberry Pi / Low-RAM-Gerät Btrfs
Enterprise Storage mit 128+ GB RAM ZFS

Fazit

ZFS ist ein außergewöhnliches Dateisystem – für die richtige Umgebung. Wer einen TrueNAS-Server mit 64 GB RAM und vielen Platten betreibt, ist mit ZFS exzellent bedient.

Im Homeserver dagegen fordert ZFS oft Leistungsreserven, die man gar nicht hat, und bestraft fehlende Konfiguration mit spürbaren Einbußen. Btrfs ist weniger spektakulär, aber wesentlich genügsamer, tiefer im Kernel verwurzelt, und für den Alltag auf überschaubarer Hardware die stressfreiere Wahl.

Ich setze seit Jahren auf Btrfs mit zstd-Kompression, systemd-timer-Snapshots und Docker auf btrfs-subvolumes. Es läuft, es ist schnell, und es nervt nicht.