Server-Administration

ZFS oder Btrfs: Welches Dateisystem zu deinem Linux-Server passt

ZFS, wenn du Datenintegrität und ausgereiftes RAID-Z brauchst und den Speicherbedarf einplanst. Btrfs, wenn Snapshots im laufenden System und Distributionsintegration zählen. Für RAID 5 und 6 ist Btrfs weiterhin keine Wahl.

Administrator steckt ein Netzwerkkabel in einen Serverschrank
Seit 1997 am Markt Präsenz & Live-Online 4,9 aus 503 Google-Bewertungen Auch Inhouse für dein Team
Worum es geht

Die Dateisystem-Entscheidung fällt einmal, und du lebst jahrelang damit

Beim Aufbau eines neuen Servers oder eines Proxmox-Hosts steht die Storage-Frage ganz am Anfang: Der Installer will wissen, ob ext4 auf LVM, ZFS oder Btrfs unter das System soll. Zu diesem Zeitpunkt ist oft noch unklar, wie viele VMs später darauf laufen, wie das Backup aussieht und wie viel RAM übrig bleibt. Wer sich später umentscheidet, muss die Daten umkopieren, denn ein Wechsel im laufenden Betrieb ist bei keinem der beiden Dateisysteme vorgesehen.

ZFS und Btrfs lösen dieselben Grundprobleme, aber mit unterschiedlicher Herkunft. ZFS kommt als OpenZFS-Modul aus dem Solaris-Umfeld, ist wegen der CDDL nicht Teil des Mainline-Kernels und wird als DKMS- oder vorgebautes Modul nachgeladen. Btrfs steckt direkt im Linux-Kernel, ist bei openSUSE und Fedora seit Jahren Standard für das Wurzeldateisystem und braucht keinen zusätzlichen Unterbau. Diese Herkunft erklärt fast alle praktischen Unterschiede, von der Kernel-Update-Strategie bis zum Umgang mit einzelnen Datenträgern.

Typische Fehler sehen wir immer wieder dieselben: RAID5 und RAID6 unter Btrfs im Produktivbetrieb, obwohl der Write-Hole-Problematik wegen weiterhin abgeraten wird. ZFS-Pools mit RAM-Planung ohne Rücksicht auf den ARC, sodass die VMs beim Speicher konkurrieren. Datenbanken oder qcow2-Images auf Copy-on-Write-Volumes ohne angepasste Blockgröße oder ohne nodatacow, mit entsprechender Fragmentierung. Und Snapshots, die als Backup verkauft werden, obwohl sie im selben Pool liegen und mit ihm verloren gehen.

Miniatur-Szene: geöffneter Serverschrank mit Werkzeug, Patchpanel und grünem Uptime-Balken

Entscheidungskriterien für ZFS und Btrfs

  1. 01 Redundanz: Parität oder Mirror
  2. 02 Kernel-Integration und Update-Pfad
  3. 03 RAM-Budget und Cache-Verhalten
  4. 04 Erweiterbarkeit des Verbunds
  5. 05 Workload: VMs, Datenbanken, Dateien
  6. 06 Snapshot-Replikation ins Backup
Was du mitnimmst

So triffst du die Entscheidung nachvollziehbar

Es gibt keinen pauschalen Sieger. Sinnvoll ist eine Entscheidung entlang von vier Fragen: Wie sieht die Redundanz aus, wie viel RAM und wie viele SSDs stehen zur Verfügung, wie flexibel muss der Verbund wachsen, und wie hängt das Backup daran. Die folgenden Punkte fassen zusammen, worauf es im Alltag ankommt.

Redundanz und RAID-Ebene ehrlich bewerten

ZFS deckt mit Mirror, RAIDZ1, RAIDZ2 und RAIDZ3 den kompletten Bereich stabil ab, inklusive Selbstheilung beim Scrub. Btrfs ist mit den Profilen single, RAID1, RAID1C3 und RAID10 gut aufgestellt, die Paritätsprofile RAID5 und RAID6 gelten dagegen weiterhin als nicht produktionsreif. Brauchst du Parität über viele Spindeln, ist ZFS die naheliegende Wahl, oder du legst Btrfs auf ein darunterliegendes Hardware- beziehungsweise mdadm-RAID.

Flexibilität beim Wachsen einplanen

Btrfs erlaubt es, einzelne Datenträger unterschiedlicher Größe per btrfs device add hinzuzufügen und mit btrfs balance neu zu verteilen, auch das Entfernen einer Platte ist vorgesehen. ZFS denkt in vdevs: Ein Pool wächst klassisch um komplette vdevs, seit OpenZFS 2.3 lässt sich ein RAIDZ-vdev zusätzlich um einzelne Platten erweitern. Wenn dein Wachstumspfad aus einzelnen, ungleichen Platten besteht, spielt Btrfs seine Stärke aus.

RAM, ARC und Tuning realistisch dimensionieren

ZFS bringt mit dem ARC einen eigenen Cache mit, der sich über zfs_arc_max begrenzen lässt. Auf einem Virtualisierungshost gehört diese Grenze in die Planung, sonst konkurrieren Cache und VMs um denselben Speicher. Btrfs nutzt den normalen Page Cache und ist beim RAM-Bedarf unauffälliger, verlangt dafür regelmäßiges Balancing und ein Auge auf die Belegung, weil Metadaten- und Datenblöcke getrennt verwaltet werden.

Workload-abhängig konfigurieren statt Defaults übernehmen

Für VM-Images und Datenbanken zählen die Blockparameter: bei ZFS recordsize für Datasets und volblocksize für zvols, dazu ashift passend zur physischen Sektorgröße, bei Btrfs chattr +C beziehungsweise nodatacow für Verzeichnisse mit random writes. Kompression mit zstd oder lz4 ist auf beiden Seiten meist ein Gewinn, Deduplizierung dagegen nur in klar abgegrenzten Fällen.

Snapshots mit dem Backup verbinden

Beide Dateisysteme können Snapshots inkrementell an ein zweites System übertragen, ZFS mit zfs send und zfs receive, Btrfs mit btrfs send und btrfs receive. Erst damit wird aus einem Snapshot ein Backup. Auf der Btrfs-Seite übernimmt snapper unter openSUSE die Rotation und den Rollback nach Updates, im ZFS-Umfeld sind zfs-auto-snapshot oder sanoid gängig.

Wiederherstellung vorher üben

Der Unterschied zeigt sich im Ernstfall. Prüfe vorab, wie du einen Pool importierst, wie ein Scrub Fehler meldet, wie du eine defekte Platte ersetzt und wie ein degraded Mount aussieht. Ein Testlauf mit Loop-Devices oder in einer VM kostet einen Nachmittag und erspart dir die Recherche unter Zeitdruck.

Zum Nachmachen

ZFS und Btrfs in der Praxis

Die Feature-Tabellen im Netz vergleichen Häkchen. Im Betrieb entscheiden aber andere Dinge: wie sich ein Pool bei einem Plattenausfall verhält, wie viel Arbeitsspeicher der Cache wirklich braucht, was ein Scrub kostet und wie du eine Sicherung inkrementell auf einen zweiten Standort bekommst. Die folgenden Kapitel gehen genau diese Punkte durch, mit Befehlen für beide Dateisysteme und einer klaren Empfehlung am Ende.

01

Copy-on-Write: das gemeinsame Fundament

Beide Dateisysteme überschreiben Daten nie an Ort und Stelle. Geänderte Blöcke werden neu geschrieben, danach zeigt der Verweis auf die neue Stelle. Aus diesem einen Prinzip folgt fast alles, was ZFS und Btrfs auszeichnet, und leider auch ein Teil ihrer Schwächen.

Was direkt daraus folgt

  • Snapshots kosten fast nichts. Ein Schnappschuss merkt sich nur, welche Blöcke zum Zeitpunkt X gültig waren. Solange sich nichts ändert, belegt er keinen zusätzlichen Platz.
  • Kein halb geschriebener Zustand. Entweder der neue Block samt Verweis ist vollständig da, oder der alte gilt weiter. Ein Stromausfall mitten im Schreibvorgang hinterlässt kein inkonsistentes Dateisystem, ein fsck im klassischen Sinn gibt es deshalb nicht.
  • Fragmentierung ist eingebaut. Wer eine große Datei an vielen Stellen ändert, verteilt sie über die Platte. Bei Datenbanken und virtuellen Festplatten ist das spürbar, auf SSDs weit weniger als auf rotierenden Platten.
  • Freier Platz ist eine unscharfe Größe. Solange Snapshots existieren, geben gelöschte Dateien ihren Platz nicht frei. df führt dich hier regelmäßig in die Irre.
02

Prüfsummen und Selbstheilung

Das ist der eigentliche Grund, warum sich der Aufwand lohnt. Beide Dateisysteme prüfen jeden gelesenen Block gegen eine Prüfsumme. Ein klassisches ext4 oder XFS liefert dir stillschweigend beschädigte Daten aus, ohne dass jemand etwas merkt.

Entscheidend ist die Kombination aus Prüfsumme und Redundanz. Erkennt ZFS beim Lesen eine Abweichung und existiert eine zweite Kopie, wird der Block automatisch aus der intakten Kopie wiederhergestellt und repariert. Ohne Redundanz bekommst du immerhin eine ehrliche Fehlermeldung statt falscher Daten, und weißt, welche Datei betroffen ist.

Regelmäßige Vollprüfung
# ZFS: liest alle Daten und repariert, was reparierbar ist
sudo zpool scrub tank
zpool status tank

# Btrfs: dasselbe Prinzip
sudo btrfs scrub start /mnt/daten
sudo btrfs scrub status /mnt/daten

# Fehlerzähler ansehen (READ/WRITE/CKSUM müssen 0 sein)
zpool status -v tank
sudo btrfs device stats /mnt/daten

Einmal im Monat ist ein guter Takt, bei Consumer-Hardware eher alle zwei Wochen. Der Scrub läuft im Hintergrund, kostet aber spürbar I/O. Leg ihn auf eine ruhige Zeit.

03

Redundanz: RAID-Z gegen Btrfs-Profile

Hier trennen sich die beiden Systeme am deutlichsten, und hier liegt für Serverbetrieb die wichtigste Entscheidung.

Redundanzstufen im Vergleich

ZielZFSBtrfsReifegrad
Spiegelmirrorraid1 / raid1c3beide produktiv einsetzbar
Eine Platte Ausfalltoleranzraidz1raid5ZFS produktiv, Btrfs nicht empfohlen
Zwei Platten Ausfalltoleranzraidz2raid6ZFS produktiv, Btrfs nicht empfohlen
Drei Platten Ausfalltoleranzraidz3nicht vorhandennur ZFS
Streifen ohne Redundanzstriperaid0beide, aber ohne Schutz

Ein oft übersehener Unterschied: Btrfs kann raid1 über Platten unterschiedlicher Größe legen und nutzt den Platz erstaunlich gut aus, weil es paarweise auf Chunk-Ebene arbeitet. ZFS erwartet innerhalb eines vdev gleich große Platten und richtet sich nach der kleinsten. Für gewachsene Heimserver mit gemischten Platten ist das ein echter Vorteil von Btrfs.

Pool beziehungsweise Dateisystem anlegen
# ZFS: RAID-Z2 aus sechs Platten, immer /dev/disk/by-id verwenden
sudo zpool create -o ashift=12 tank raidz2 \
  /dev/disk/by-id/ata-WDC_... /dev/disk/by-id/ata-WDC_... \
  /dev/disk/by-id/ata-WDC_... /dev/disk/by-id/ata-WDC_... \
  /dev/disk/by-id/ata-WDC_... /dev/disk/by-id/ata-WDC_...

# Btrfs: Spiegel über zwei Platten
sudo mkfs.btrfs -m raid1 -d raid1 /dev/sda /dev/sdb

ashift=12 setzt die Blockgröße auf 4 KB und passt zu praktisch allen heutigen Platten und SSDs. Der Wert lässt sich nachträglich nicht ändern, ein falsch gesetzter ashift kostet dauerhaft Leistung. by-id statt /dev/sdX, weil sich die Buchstaben beim Booten verschieben können.

Zur Erweiterung: ZFS konnte lange nur ganze vdevs hinzufügen, ein RAID-Z ließ sich nicht um eine einzelne Platte erweitern. Mit OpenZFS 2.3 ist RAID-Z Expansion dazugekommen, sodass ein bestehendes RAID-Z um Platten wachsen kann. Btrfs konnte das schon immer, dort fügst du eine Platte hinzu und startest einen Balance-Lauf.

04

Arbeitsspeicher: der ARC und seine Mythen

Kaum ein Thema hält sich so hartnäckig wie die Regel 1 GB RAM pro TB Speicher. Sie stammt aus einer Zeit, in der Deduplizierung als Normalfall galt, und stimmt so nicht mehr.

ZFS bringt mit dem ARC einen eigenen Lesecache mit, der standardmäßig bis zur Hälfte des Arbeitsspeichers belegt. Das sieht in free -h nach viel benutztem Speicher aus, ist aber Cache: Braucht eine Anwendung Speicher, gibt ZFS ihn zurück. Btrfs nutzt dagegen den normalen Seitencache des Kernels und fällt in der Speicherstatistik gar nicht auf.

ARC beobachten und begrenzen
# Aktuelle Größe und Trefferquote
arc_summary | head -40
cat /proc/spl/kstat/zfs/arcstats | grep -E '^(size|c_max|hits|misses) '

# Obergrenze setzen, z.B. 8 GB auf einem 32-GB-Server
echo 'options zfs zfs_arc_max=8589934592' | \
  sudo tee /etc/modprobe.d/zfs.conf
sudo update-initramfs -u   # Debian/Ubuntu
# danach Neustart

Eine Begrenzung ist vor allem dann sinnvoll, wenn auf derselben Maschine Datenbanken oder virtuelle Maschinen laufen, die ihren Speicher fest reservieren. Auf einem reinen Dateiserver lässt du den ARC am besten in Ruhe.

05

Snapshots und Replikation

Snapshots sind der praktische Alltagsnutzen. Richtig wertvoll werden sie erst durch die Möglichkeit, sie inkrementell auf ein anderes System zu übertragen, denn damit hast du ein Sicherungsverfahren, das nur geänderte Blöcke bewegt.

ZFS: Snapshot, Rückkehr und Übertragung
# Snapshot anlegen, rekursiv über alle untergeordneten Dateisysteme
sudo zfs snapshot -r tank/daten@$(date +%F-%H%M)

# Vorhandene ansehen
zfs list -t snapshot -o name,used,refer tank/daten

# Einzelne Datei zurückholen, ohne den ganzen Stand zu rollen
cp /tank/daten/.zfs/snapshot/2026-07-20-0300/wichtig.txt ~/

# Kompletten Stand zurückrollen (verwirft neuere Snapshots!)
sudo zfs rollback -r tank/daten@2026-07-20-0300

# Inkrementell auf einen zweiten Server übertragen
sudo zfs send -i tank/daten@gestern tank/daten@heute | \
  ssh backup@zweitserver "zfs receive -F sicherung/daten"

Das versteckte Verzeichnis .zfs/snapshot/ ist der schnellste Weg für Nutzende, eine gelöschte Datei selbst zurückzuholen. Mit zfs set snapdir=visible wird es sogar in Dateimanagern sichtbar.

Btrfs: dasselbe Prinzip, andere Befehle
# Schreibgeschützter Snapshot eines Subvolumes
sudo btrfs subvolume snapshot -r /mnt/daten /mnt/snapshots/daten-$(date +%F)

# Übertragung auf ein anderes Dateisystem
sudo btrfs send -p /mnt/snapshots/daten-gestern /mnt/snapshots/daten-heute | \
  ssh backup@zweitserver "btrfs receive /mnt/sicherung"

# Snapshot wieder entfernen
sudo btrfs subvolume delete /mnt/snapshots/daten-2026-06-01

Für die Übertragung muss der Snapshot schreibgeschützt sein (-r), sonst verweigert btrfs send den Dienst.

Automatisieren solltest du das nicht von Hand. Für ZFS haben sich sanoid und syncoid etabliert: Sanoid legt nach einem Zeitplan Snapshots an und räumt alte auf, Syncoid überträgt sie inkrementell. Im Btrfs-Umfeld übernimmt snapper diese Rolle, unter openSUSE ist es bereits eingerichtet.

06

Kompression: praktisch immer einschalten

Transparente Kompression ist die Einstellung mit dem besten Verhältnis von Aufwand zu Nutzen. Sie spart Platz und macht das System in vielen Fällen sogar schneller, weil weniger Blöcke von der Platte gelesen werden müssen.

Einschalten und Wirkung prüfen
# ZFS: lz4 ist seit Jahren die sichere Voreinstellung
sudo zfs set compression=lz4 tank

# Mehr Platzersparnis bei etwas mehr CPU-Last
sudo zfs set compression=zstd-3 tank/archiv

# Tatsächliche Ersparnis ansehen
zfs get compressratio,compression tank

# Btrfs: beim Einhängen aktivieren
sudo mount -o compress=zstd:3 /dev/sda /mnt/daten
# dauerhaft über /etc/fstab, Option compress=zstd:3

Bereits geschriebene Daten werden nicht rückwirkend komprimiert. Bei ZFS hilft nur Umkopieren, bei Btrfs ein btrfs filesystem defragment -r -czstd, das die Dateien neu schreibt.

Zur Wahl des Verfahrens: lz4 ist so schnell, dass es sich auch bei nicht komprimierbaren Daten nicht negativ auswirkt, weil ZFS solche Blöcke unkomprimiert ablegt. zstd holt spürbar mehr heraus, kostet aber CPU beim Schreiben. Für Archive und Backups ist zstd auf Stufe 3 bis 6 eine gute Wahl, für Datenbanken und virtuelle Maschinen bleibt lz4 die verlässlichere Einstellung.

07

Deduplizierung: fast immer die falsche Entscheidung

Die Funktion klingt verlockend und ist der häufigste Grund, warum ein ZFS-Server unbrauchbar langsam wird. Die Rechnung dahinter kennen die wenigsten, die sie einschalten.

ZFS führt für die Deduplizierung eine Tabelle aller Blockprüfsummen, die DDT. Diese Tabelle muss für akzeptable Geschwindigkeit im Arbeitsspeicher liegen. Als Faustregel gelten rund 5 GB RAM je TB deduplizierter Daten. Passt sie nicht mehr in den Speicher, wandert sie auf die Platte, und jeder Schreibvorgang wird zur Zufallslesung. Der Server fühlt sich dann nicht langsam an, sondern defekt.

Vorher rechnen, nicht nachher
# Simulation: Was würde Deduplizierung überhaupt bringen?
sudo zdb -S tank

# Interessant ist die letzte Zeile: dedup = 1.23 bedeutet 23 Prozent Ersparnis
# Unter etwa 2.0 lohnt es sich praktisch nie

Kompression bringt bei realen Daten meist mehr als Deduplizierung, kostet einen Bruchteil der Ressourcen und lässt sich jederzeit wieder abschalten. Deduplizierung hingegen bekommst du nur durch vollständiges Umkopieren des Datensatzes wieder los.

08

Spezielle vdevs: SLOG, L2ARC und special

Drei Erweiterungen, die regelmäßig falsch verstanden werden. Alle drei helfen in ganz bestimmten Situationen und in allen anderen gar nicht.

Was wirklich hilft

GerätHilft beiBringt nichts beiAchtung
SLOG (log)synchronen Schreibvorgängen: NFS, Datenbanken, VM-Speichernormalem Dateikopieren, das läuft asynchronBraucht Absicherung gegen Stromausfall. Ausfall ohne Spiegel kann Daten kosten.
L2ARC (cache)Lesezugriffen auf einen Datenbestand, der nicht in den RAM passtkleinen Datenbeständen, sequenziellem LesenVerbraucht selbst RAM für seine Verwaltung. Bei wenig Speicher verschlechtert er die Lage.
specialMetadaten und kleinen Blöcken, spürbar bei vielen Dateiengroßen sequenziellen DateienFällt es aus, ist der ganze Pool verloren. Nur gespiegelt einsetzen.
Hinzufügen
# Special-vdev IMMER als Spiegel
sudo zpool add tank special mirror \
  /dev/disk/by-id/nvme-... /dev/disk/by-id/nvme-...

# Kleine Dateien zusätzlich dorthin legen
sudo zfs set special_small_blocks=32K tank/viele-kleine-dateien

# L2ARC (unkritisch, Ausfall kostet nur Geschwindigkeit)
sudo zpool add tank cache /dev/disk/by-id/nvme-...

Vor jedem zpool add ein -n für den Trockenlauf. Ein versehentlich als Datenspeicher hinzugefügtes vdev lässt sich bei RAID-Z nicht mehr entfernen.

Die ehrliche Reihenfolge lautet: Erst mehr Arbeitsspeicher, dann ein special-vdev, und erst danach über SLOG oder L2ARC nachdenken. In der Mehrzahl der Fälle, in denen jemand eine SSD als Cache einbaut, hätte zusätzlicher RAM mehr gebracht und weniger gekostet.

09

Btrfs im Alltag: Subvolumes und Snapper

Btrfs spielt seine Stärke dort aus, wo es tief in die Distribution integriert ist. Unter openSUSE und in Fedora ist es die Voreinstellung, samt automatischer Snapshots vor jeder Paketaktualisierung.

Subvolumes und Snapper
# Subvolumes sind eigenständige Bäume im selben Dateisystem
sudo btrfs subvolume create /mnt/daten/projekte
sudo btrfs subvolume list /mnt/daten

# Snapper einrichten
sudo snapper -c projekte create-config /mnt/daten/projekte
sudo snapper -c projekte list

# Was hat sich zwischen zwei Ständen geändert?
sudo snapper -c projekte status 42..47
sudo snapper -c projekte undochange 42..47 /pfad/zur/datei

undochange ist die Funktion, für die Btrfs-Nutzende das System lieben: gezielt einzelne Änderungen zurücknehmen, statt den ganzen Stand zu rollen.

Der praktische Nutzen zeigt sich beim Systemupdate. Läuft die Wurzel auf Btrfs und ist Snapper eingerichtet, entsteht vor jeder Paketaktualisierung automatisch ein Snapshot. Geht etwas schief, bootest du aus dem GRUB-Menü in den vorherigen Stand zurück. Das ist unter openSUSE seit Jahren erprobt und einer der überzeugendsten Gründe für Btrfs auf Arbeitsplatzrechnern.

Wartung: Balance und Platzprobleme
# Btrfs zeigt freien Platz anders als df - dieser Befehl ist die Wahrheit
sudo btrfs filesystem usage /mnt/daten

# Chunks neu verteilen, wenn 'unallocated' knapp wird
sudo btrfs balance start -dusage=50 -musage=50 /mnt/daten
sudo btrfs balance status /mnt/daten

Ein voller Btrfs-Pool ist schwerer zu retten als ein voller ZFS-Pool, weil selbst das Löschen Platz für Metadaten braucht. Halte immer Reserve frei und beobachte unallocated, nicht nur die Ausgabe von df.

10

ZFS auf dem Notebook

ZFS gilt als Serverdateisystem, funktioniert auf einem Arbeitsgerät aber hervorragend, und zwar aus einem einzigen Grund: Snapshots vor jedem Update, die sich in Sekunden zurückrollen lassen. Ubuntu bietet Root-on-ZFS im Installationsprogramm an, unter Arch und Debian richtest du es von Hand ein.

Was auf mobiler Hardware anders ist

  • ARC begrenzenAuf einem Gerät mit 16 GB RAM will man nicht die Hälfte im Dateicache haben, während Browser und Entwicklungsumgebung laufen. 2 bis 4 GB sind ein guter Ausgangswert.
  • Automatisches TRIM einschaltenzpool set autotrim=on rpool hält die SSD dauerhaft schnell. Ohne TRIM lässt die Schreibleistung nach Monaten spürbar nach.
  • Verschlüsselung nativ nutzenZFS bringt eigene Verschlüsselung mit, die pro Dataset arbeitet und mit send/receive zusammenspielt. Für ein mobiles Gerät ist Vollverschlüsselung ohnehin Pflicht.
  • Snapshots automatisierenzfs-auto-snapshot oder sanoid legt stündliche und tägliche Stände an. Der Nutzen zeigt sich beim ersten missglückten Update, wenn ein Rollback zwanzig Sekunden statt einer Neuinstallation kostet.
  • Kernel-Updates im Blick behaltenZFS ist ein Fremdmodul (DKMS). Nach einem Kernel-Update, für das noch kein passendes Modul gebaut wurde, bootet das System im schlimmsten Fall nicht. Ein zweiter Kernel-Eintrag im Bootloader ist die Versicherung.
Typische Einrichtung auf einem Notebook
# Speicherhunger zügeln
echo 'options zfs zfs_arc_max=4294967296' | sudo tee /etc/modprobe.d/zfs.conf

# SSD dauerhaft trimmen
sudo zpool set autotrim=on rpool

# Verschlüsseltes Dataset für die Arbeitsdaten
sudo zfs create -o encryption=aes-256-gcm -o keyformat=passphrase rpool/arbeit

# Automatische Snapshots
sudo apt install zfs-auto-snapshot
zfs list -t snapshot | tail

# Nach einem misslungenen Update zurück
sudo zfs rollback rpool/ROOT/ubuntu@autozsys_vor_update

Bei Root-on-ZFS unter Ubuntu erledigt zsys die Snapshots vor Paketoperationen und trägt Rollback-Punkte ins GRUB-Menü ein. Prüfe nach der Installation, ob die Automatik wirklich aktiv ist.

11

Die Lizenzfrage und was daraus folgt

ZFS steht unter der CDDL, der Linux-Kernel unter der GPLv2. Beide Lizenzen gelten als nicht miteinander vereinbar, weshalb ZFS nicht im Kernel enthalten ist. Das ist keine juristische Randnotiz, sondern hat handfeste Folgen für den Betrieb.

Was das praktisch bedeutet

  • ZFS kommt als Fremdmodul, meist über DKMS gebaut. Nach jedem Kernel-Update muss das Modul neu übersetzt werden.
  • Ein Kernel-Update, für das OpenZFS noch keine Unterstützung hat, kann dazu führen, dass der Pool nicht eingebunden wird. Auf einem Root-on-ZFS-System heißt das: kein Systemstart.
  • Distributionen gehen unterschiedlich damit um. Ubuntu liefert ZFS-Pakete direkt mit, Debian über contrib, bei RHEL musst du dich selbst um das Repository kümmern.
  • Proxmox VE liefert ZFS fest integriert aus und pflegt die Kombination aus Kernel und Modul selbst. Das ist einer der Gründe, warum ZFS dort so verbreitet ist.
12

Und was jetzt: ZFS oder Btrfs?

Nach all den Details die klare Antwort, sortiert nach dem Fall, in dem du steckst.

Empfehlung nach Einsatzzweck

SituationEmpfehlungBegründung
Dateiserver mit vielen Platten, Paritäts-RAID gewünschtZFSRAID-Z ist ausgereift, Btrfs RAID 5/6 ist es nicht.
Virtualisierung mit ProxmoxZFSFest integriert, Replikation zwischen Nodes eingebaut, der Hersteller pflegt die Kombination.
Arbeitsplatz oder Notebook mit Rollback-WunschBtrfsIm Kernel enthalten, unter Fedora und openSUSE samt Snapper fertig eingerichtet.
Notebook, das zu einer ZFS-Serverlandschaft passen sollZFSGleiche Werkzeuge, und zfs send sichert direkt auf den vorhandenen Backup-Pool.
Gewachsener Heimserver mit Platten unterschiedlicher GrößeBtrfsraid1 nutzt ungleiche Platten deutlich besser aus als ZFS-vdevs.
Root-Dateisystem unter RHEL oder RockyXFSBeide sind dort nicht die vorgesehene Wahl. XFS bleibt der unterstützte Standard, ZFS liegt dann auf den Datenplatten.
Einzelne SSD ohne Redundanzbeide möglichPrüfsummen erkennen dann Fehler, können sie aber nicht reparieren. Der Nutzen liegt bei Snapshots und Kompression.

Was in keiner Tabelle steht, aber die Entscheidung oft dominiert: Nimm das System, das ihr im Team betreiben könnt. Ein ZFS-Pool, dessen Aufbau nur eine Person versteht, ist im Störungsfall ein Risiko. Beide Dateisysteme verlangen Wissen über Snapshots, Scrub-Zyklen, Platzverhalten und Wiederherstellung, und dieses Wissen gehört auf mindestens zwei Köpfe verteilt.

Gut zu wissen

Häufige Fragen zu ZFS und Btrfs

Noch etwas offen? Wir sind ohne Warteschleife für dich da.

Frag uns direkt
Ist ZFS oder Btrfs schneller?
Das lässt sich nicht allgemein beantworten, weil beide Dateisysteme sehr stark von der Konfiguration abhängen. Bei sequenziellen Lasten und passend gesetzter recordsize liegt ZFS auf mehreren vdevs meist vorn, bei einfachen Setups auf wenigen SSDs ist Btrfs oft unauffälliger und schlanker. Aussagekräftig ist nur ein Test mit deinem eigenen Zugriffsmuster, etwa über fio mit realistischer Blockgröße und Queue-Tiefe.
Was nutzt Proxmox VE, ZFS oder Btrfs?
Der Proxmox-Installer bietet ZFS als vollwertige Option für das Root-Dateisystem und die Storage-Anbindung an, inklusive Replikation zwischen Knoten. Btrfs ist dort ebenfalls auswählbar, wird aber als Technologievorschau geführt. Für produktive Cluster ist ZFS deshalb der übliche Weg, sofern nicht ohnehin Ceph als verteilter Speicher eingesetzt wird.
Warum wird von Btrfs RAID5 und RAID6 abgeraten?
Die Paritätsprofile gelten wegen bekannter Probleme beim Schreiben unvollständiger Stripes und beim anschließenden Scrub weiterhin als unfertig, entsprechend warnt die offizielle Dokumentation davor. Wenn du Parität brauchst, nutze RAIDZ unter ZFS oder setze Btrfs auf ein darunterliegendes mdadm- beziehungsweise Hardware-RAID auf und beschränke Btrfs auf Snapshots und Prüfsummen.
Wie viel RAM braucht ZFS wirklich?
Die verbreitete Faustregel von einem Gigabyte je Terabyte stammt aus Deduplizierungs-Szenarien und ist für normale Pools zu grob. Entscheidend ist, wie viel Cache du dem ARC zugestehen willst und wie viel Speicher parallel für VMs oder Dienste reserviert bleibt. Auf einem Virtualisierungshost setzt du zfs_arc_max bewusst auf einen festen Wert, statt dich auf den Standard zu verlassen.
Ersetzen Snapshots ein Backup?
Nein. Ein Snapshot liegt im selben Pool beziehungsweise Dateisystem und geht mit einem Hardware-Defekt, einem Bedienfehler auf Pool-Ebene oder einer Verschlüsselung durch Ransomware verloren. Zum Backup wird er erst, wenn er per send und receive auf ein zweites System repliziert oder in ein separates Backup-Ziel geschrieben wird, idealerweise mit einer Kopie außerhalb des Standorts.

Zuletzt geprüft am 26. Juli 2026.

Das sagen Teilnehmer

Echte Stimmen aus unseren IT-Kursen

Qualitativ sehr guter Kurs. Ruhiger und wertschätzender Umgang. Keine Informationsüberlastung.
Rückmeldung aus dem Kurs „Ansible Kompaktkurs“
Erwartungen wurden erfüllt. Angekündigte Themen in hinreichender Tiefe bearbeitet. Zudem gutes Zeitmanagement.
Rückmeldung aus dem Kurs „Source Code Management und CI / CD (DO4)“
Persönlich für dich da

Deine Ansprechpartner

Du bist dir nicht sicher, welcher Kurs oder welches Level zu dir passt? Wir beraten dich persönlich und kostenlos.

Yves Hoppe

Yves Hoppe

Weiterbildung & Beratung

Hilft dir, aus dem Linux-Programm den passenden Kurs oder Lernpfad zu finden.

Norbert Jansen

Norbert Jansen

Beratung & Inhouse

Plant mit dir Inhouse-Trainings, die exakt auf eure Systemlandschaft und Distributionen zugeschnitten sind.

Nächster Schritt

Storage-Entscheidung mit uns durchgehen

Im Kurs Linux Storage und Dateisysteme (STOR) arbeitest du mit LVM, RAID, ZFS und Btrfs an echten Setups und übst Ausfall- und Wiederherstellungsszenarien. Wenn dein Ziel ein Virtualisierungshost ist, passen der Proxmox Grundkurs mit KVM, LXC, Storage und Backup sowie der Proxmox Aufbaukurs zu Cluster, Ceph und High Availability. Alle Termine gibt es als Präsenz- oder Live-Online-Schulung, und wenn du unsicher bist, welcher Weg zu deiner Umgebung passt, melde dich einfach bei uns.