ZFS Dateisystem Grundlagen und Einrichtung unter Linux | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

ZFS Dateisystem Grundlagen Einrichtung

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

ZFS Dateisystem Grundlagen und Einrichtung unter Linux

Was ist ZFS?

ZFS (Zettabyte File System) ist ein modernes Dateisystem und Volume Manager in einem, das von Sun Microsystems ursprünglich für Solaris entwickelt wurde. Mit dem OpenZFS-Projekt ist ZFS nun auf Linux, macOS und BSD verfügbar. ZFS bietet fortgeschrittene Funktionen wie Copy-on-Write (CoW), Datenintegritätsprüfungen mit SHA-256-Checksums, Snapshots, RAID-Z (Parity RAID) und optionale Kompression – alles integriert in einem einzigen System.

Kernkonzepte und Features von ZFS

  • Copy-on-Write (CoW): Daten werden nicht überschrieben, sondern neue Kopien erstellt. Dies ermöglicht Snapshots und sichere Rollbacks
  • Checksums (SHA-256, Fletcher): Jeder Datenblock hat einen Checksum zur automatischen Fehler-Erkennung und Self-Healing
  • Compression: Optional transparente Kompression (LZ4, ZSTD, GZIP) für Speichereffizienz ohne Performance-Verlust
  • Deduplication: Identische Blöcke werden nur einmal gespeichert (RAM-intensiv, mit Vorsicht verwenden)
  • Snapshots: Point-in-Time Kopien ohne zusätzlichen physischen Platz (CoW-basiert)
  • Clones: Beschreibbare Kopien von Snapshots als unabhängige Filesystems
  • RAID-Z: Striping mit Parity (ähnlich RAID-5/6/7, aber besser mit selbstheilend)
  • Self-Healing: Automatische Reparatur von korrupten Blöcken bei RAID-Z mittels Checksum-Vergleich
  • Encryption: Native AES-256-GCM Verschlüsselung auf Dataset-Ebene
  • ARC Cache: Adaptive Replacement Cache (ähnlich wie OS-Page Cache, aber intelligenter)
💡 Tipp: ZFS ist ideal für Server mit hohem Durchsatz und Datensicherheits-Anforderungen. Mindestens 8 GB RAM wird für Produktionsnutzung empfohlen wegen des ARC-Cache.

Installation auf Ubuntu 22.04

Installieren Sie ZFS Tools und Kernel-Module:

sudo apt update
sudo apt install -y zfsutils-linux

Überprüfen Sie die Installation:

zfs version

Die Ausgabe sollte die ZFS on Linux Version anzeigen.

Laden Sie das ZFS Kernel-Modul:

sudo modprobe zfs

Überprüfen Sie, dass das Modul geladen ist:

lsmod | grep zfs

ZFS Terminologie und Konzepte

  • Pool (zpool): Die oberste Ebene – ein logischer Speicherpool aus einem oder mehreren VDEVs
  • VDEV (Virtual Device): Ein virtuelles Gerät, das eine physische Disk, eine Partition oder ein Array sein kann
  • Dataset (zfs): Ein Dateisystem oder Clone in einem Pool. Datasets können verschachtelt sein (z.B. tank/data/users)
  • Snapshot: Eine Read-Only Kopie eines Datasets zu einem bestimmten Zeitpunkt
  • ZVOL: Ein Block-Device aus einem Pool (ähnlich LVM-LV)
  • Record Size: Blockgröße für Dateisystem-Operationen (Standard: 128 KB)
  • Ashift: Sektorgröße der zugrunde liegenden Disks (4K für moderne Disks = ashift=12)

Schritt 1: Einfachen Pool auf einer Disk erstellen

Identifizieren Sie die verfügbare Disk:

lsblk
sudo fdisk -l

Erstellen Sie einen einfachen Pool (z.B. auf /dev/sdb):

sudo zpool create tank /dev/sdb

Dies erstellt einen Pool namens "tank" und automountet ihn unter /tank. Überprüfen Sie:

zpool list
zfs list

Schritt 2: RAID-1 (Mirror) Pool erstellen

Für Redundanz erstellen Sie einen gespiegelten Pool (2 Disks):

sudo zpool create tank mirror /dev/sdb /dev/sdc

Dies speichert alle Daten auf beiden Disks. Bei Ausfall einer Disk funktioniert das System weiter.

Schritt 3: RAID-Z1 Pool erstellen

RAID-Z1 ist ähnlich wie RAID-5 (mit Parity-Block) – toleriert einen Disk-Ausfall mit 3+ Disks:

sudo zpool create tank raidz /dev/sdb /dev/sdc /dev/sdd

Nutzbarer Space: (N-1) * Disk-Größe (z.B. mit 3x 4TB = 8TB nutzbar)

Schritt 4: RAID-Z2 und RAID-Z3

RAID-Z2 (ähnlich RAID-6) toleriert 2 Disk-Ausfälle:

sudo zpool create tank raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sddd

RAID-Z3 toleriert 3 Disk-Ausfälle:

sudo zpool create tank raidz3 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf

Schritt 5: Pool-Status überprüfen

Zeigen Sie alle Pools an:

zpool list

Detaillierte Pool-Informationen:

zpool status tank

Dies zeigt die Zustand aller Disks, RAID-Status und Errors.

I/O-Statistiken anzeigen:

zpool iostat tank 1

Dies zeigt kontinuierliche I/O-Statistiken (aktualisiert alle 1 Sekunde).

Schritt 6: Datasets erstellen und verwalten

Erstellen Sie ein Dataset für organisierte Speicherung:

sudo zfs create tank/data
sudo zfs create tank/backups
sudo zfs create tank/data/users

Dies erstellt eine Hierarchie von Filesystems. Überprüfen Sie:

zfs list

Schritt 7: Mount Points und Eigenschaften

Zeigen Sie den Mount Point eines Datasets an:

zfs get mountpoint tank/data

Der Standard Mount Point ist //.

Ändern Sie den Mount Point:

sudo zfs set mountpoint=/mnt/mydata tank/data

Das Dataset wird sofort auf den neuen Punkt gemountet.

Schritt 8: Kompression aktivieren

Aktivieren Sie transparente Kompression auf einem Dataset:

sudo zfs set compression=lz4 tank/data

LZ4 ist schnell mit hohem Kompressionsverhältnis. Andere Optionen: - zstd: noch bessere Kompression, aber langsamer - gzip: hohe Kompression, deutlich langsamer - lz4: Balance zwischen Speed und Ratio

Überprüfen Sie das Kompressionsverhältnis:

zfs get compressratio tank/data

Dies zeigt wie viel Speicher durch Kompression gespart wird.

Schritt 9: Snapshots erstellen und verwalten

Erstellen Sie einen Snapshot eines Datasets:

sudo zfs snapshot tank/data@backup-2026-01-01

Listen Sie alle Snapshots auf:

zfs list -t snapshot

Detaillierte Snapshot-Informationen:

zfs list -t snapshot tank/data

Snapshot mounten (Read-Only)

Öffnen Sie einen Snapshot als separates Filesystem:

mkdir -p /mnt/backup-snapshot
sudo mount -t zfs tank/data@backup-2026-01-01 /mnt/backup-snapshot

Der Snapshot ist Read-Only und kann zum Wiederherstellen von Dateien verwendet werden.

Rollback zu Snapshot

Stellen Sie einen Dataset auf den Zustand eines früheren Snapshots zurück:

sudo zfs rollback tank/data@backup-2026-01-01

Alle Datenänderungen seit dem Snapshot werden verworfen!

Snapshot löschen

sudo zfs destroy tank/data@backup-2026-01-01

Schritt 10: Replizierung mit zfs send/receive

Erstellen Sie ein Backup auf Remote-System über SSH:

sudo zfs send tank/data@backup-2026-01-01 | ssh user@remote-server "zfs receive backup-tank/data"

Dies sendet den gesamten Snapshot-Inhalt komprimiert über SSH zu einem Remote-System.

Für inkrementelle Backups (nur Änderungen seit letztem Snapshot):

sudo zfs send -i tank/data@backup-2026-01-01 tank/data@backup-2026-01-02 | ssh user@remote-server "zfs receive backup-tank/data"

Schritt 11: Clones erstellen

Erstellen Sie einen beschreibbaren Clone eines Snapshots:

sudo zfs clone tank/data@backup-2026-01-01 tank/data-clone

Der Clone ist ein unabhängiges Filesystem, das nur die geänderten Blocks benötigt (CoW-Effizienz).

Löschen Sie einen Clone:

sudo zfs destroy tank/data-clone

Schritt 12: ZFS Scrub (Datenintegritätsprüfung)

Führen Sie einen Scrub durch, um alle Daten zu überprüfen:

sudo zpool scrub tank

Dies kann je nach Poolgröße mehrere Stunden dauern. Überwachen Sie den Fortschritt:

zpool status tank

Nach Abschluss zeigt der Status "scan: scrub repaired X errors" oder "no errors detected".

Schritt 13: Disk-Ausfall simulieren und ersetzen

Simulieren Sie einen Disk-Ausfall (markieren Sie als fehlerhaft):

sudo zpool offline tank /dev/sdb

Der Pool läuft im degraded-Mode, aber alle Daten sind noch verfügbar (bei RAID/Mirror).

Ersetzen Sie die fehlerhafte Disk:

sudo zpool replace tank /dev/sdb /dev/sdd

Dies startet automatisch den Resilver-Prozess (Neuaufbau der Daten auf der neuen Disk).

Überwachen Sie den Fortschritt:

zpool status tank

Nach Abschluss ist der Pool wieder healthy.

Schritt 14: ZFS Encryption (AES-256-GCM)

Erstellen Sie ein verschlüsseltes Dataset:

sudo zfs create -o encryption=aes-256-gcm -o keylocation=prompt -o keyformat=passphrase tank/secure

Sie werden aufgefordert, ein Passwort einzugeben. Das Dataset wird mit AES-256-GCM verschlüsselt.

Überprüfen Sie den Verschlüsselungsstatus:

zfs get encryption tank/secure

Die Verschlüsselung ist transparent – Daten werden automatisch ver-/entschlüsselt beim Zugriff.

Schritt 15: Auto-Snapshot mit zfs-auto-snapshot

Installieren Sie das Auto-Snapshot-Package:

sudo apt install -y zfs-auto-snapshot

Dies erstellt automatisch stündlich, täglich, wöchentlich und monatliche Snapshots.

Konfigurieren Sie ein Dataset für Auto-Snapshots:

sudo zfs set com.sun:auto-snapshot=true tank/data

Überprüfen Sie die geplanten Snapshots:

zfs list -t snapshot tank/data

Schritt 16: Performance Tuning

ARC Cache Größe anpassen

ARC (Adaptive Replacement Cache) ist das Speicher-Cache von ZFS. Standardmäßig nutzt es bis zu 50% des Speichers. Für speicherintensive Systeme:

echo "options zfs zfs_arc_max=8589934592" | sudo tee /etc/modprobe.d/zfs.conf

Dies limitiert ARC auf 8 GB. Laden Sie das Modul neu:

sudo modprobe -r zfs
sudo modprobe zfs

Record Size für große Dateien

Für Video-Streaming oder Backups erhöhen Sie die Record Size:

sudo zfs set recordsize=1M tank/data

Dies verbessert Performance für große, sequentielle Zugriffe, kann aber kleine Dateien verschlechtern.

Synchronisierung für Datenbanken

Für Datenbanken deaktivieren Sie Synchronisierung (bei Backup-Redundanz):

sudo zfs set sync=disabled tank/databases
⚠️ Wichtig: sync=disabled ist nur sicher, wenn Sie redundante Backups haben. Der Pool könnte bei Stromausfall beschädigt werden.

Vergleich: ZFS vs ext4 vs btrfs

Feature ZFS ext4 btrfs
Stabilität Excellent (Production Ready) Sehr stabil Reif, aber weniger erprobt
Checksums/Integrität SHA-256 native Keine Ja (CRC32)
Snapshots Native (CoW) Nein Native (CoW)
Compression Native (transparent) Nein Native (transparent)
RAID-Implementation RAID-Z (sehr robust) Extern (mdadm) Native (weniger erprobt)
Encryption AES-256-GCM native Nein (nutzt dm-crypt) Nein (nutzt dm-crypt)
Self-Healing Ja (mit Parity) Nein Ja (mit RAID)
Lizenz CDDL (nicht GPL-kompatibel) GPL GPL
RAM-Bedarf 8 GB minimum (ARC) 1 GB+ 2 GB+
Performance Ausgezeichnet (mit ARC) Sehr gut Gut
Best für High-Performance Storage, NAS, Server General-Purpose Linux Hybrid-Setups, SSDs

Fehlerbehebung

Pool ist degraded

Überprüfen Sie den Status:

zpool status tank

Ersetzen Sie die fehlerhafte Disk und starten Sie den Resilver-Prozess:

sudo zpool replace tank /dev/sdb /dev/sdd

Checksum Errors

Wenn Checksum-Fehler auftreten, läuft ein Scrub automatisch (bei RAID):

sudo zpool scrub tank

Pool wird nicht automatisch gemountet

Überprüfen Sie den canmount-Eigenschaft:

zfs get canmount tank

Aktivieren Sie Auto-Mount:

sudo zfs set canmount=on tank

Zusammenfassung

ZFS ist ein hochmodernes Dateisystem mit einzigartigen Funktionen wie Copy-on-Write, Snapshots, Checksums und RAID-Z. Im Gegensatz zu traditionellen Setups (ext4 + Software-RAID + LVM) kombiniert ZFS alle diese Features in einem einzigen System mit besserer Fehlerbehandlung und Datenintegrität.

ZFS ist ideal für: - High-Performance Storage und NAS-Systeme - Server mit hohen Verfügbarkeits-Anforderungen - Backup und Archiv-Systeme - Entwickler, die native Snapshots benötigen

Wichtig: ZFS benötigt ausreichend RAM (mindestens 8 GB für Produktionsnutzung) und moderne Festplatten mit 4K-Sektor-Unterstützung.

Weitere Ressourcen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120