Zum Hauptinhalt springen

ZIL und SLOG in ZFS: Architektur, Wirkung, Risiken (Teil 3)

·
Wim Bonis
Storage ZFS Performance
Autor
Stylite AG
Spezialisten in ZFS storage solutions, security. Docker containerization for enterprise environments.
Inhaltsverzeichnis

Header-Bild

ZIL und SLOG: Intent Log verstehen
#

Wichtige Unterscheidung:

  • ZIL (ZFS Intent Log): Logische Komponente, immer vorhanden
  • SLOG (Separate Log Device): Optionales Device, das nur die ZIL aufnimmt

ZIL ist kein Write-Cache. Es dient ausschließlich der Crash-Consistency für synchrone Writes.

Transaction Group Mechanik
#

TXG-Zyklus (gesteuert durch zfs_txg_timeout, Default: 5s):
┌─────────────────────────────────────────────────┐
│ t=0s: Neue TXG startet                          │
│ t=0-5s: Writes sammeln                          │
│   ├─ Async Writes → RAM-Buffer (ACK sofort)     │
│   └─ Sync Writes → RAM + ZIL (ACK nach ZIL)     │
│ t=5s: TXG-Commit → Alle Daten auf Pool          │
└─────────────────────────────────────────────────┘

TXG-Timeout anpassen:

# TXG-Zyklus verlängern (weniger Fragmentation)
echo 10 > /sys/module/zfs/parameters/zfs_txg_timeout  # 10s statt 5s

# Persistent via /etc/modprobe.d/zfs.conf:
options zfs zfs_txg_timeout=10

SLOG: Nur für Sync-Writes relevant
#

Ein SLOG lagert die ZIL auf dediziertes Flash aus. Es beschleunigt NUR synchrone Writes.

WorkloadSync-Write-AnteilSLOG-Benefit
NFS (sync=always)~80–100%sehr hoch
SMB (strict sync)~60–80%hoch
iSCSI (default)~40–60%mittel
Local ZFS<10%gering

Latenz vs. Durchsatz
#

Wählen Sie SLOG nach Latenz, nicht nach Durchsatz. Beispiel: HDD-Pool (~10–20ms) vs. Optane (~0.01ms).

Kein SLOG? Default-ZIL auf dem Pool
#

Ohne SLOG liegt die ZIL auf den Pool-Vdevs. Moderne NVMe/SSD-Pools bieten oft schon sehr gute Sync-Latenzen.

Pool-Vdev-TypZIL-LatencySLOG-BenefitEmpfehlung
NVMe Mirror~0.1–0.2msMinimalSLOG meist unnötig
SSD Mirror~0.3–0.5msGeringOptional
SSD RAIDZ~0.5–1msModeratBei hoher Last
HDD Pool~10–20msEnormSLOG stark empfohlen

SLOG-Sizing: Klein aber fein
#

Faustregel:

SLOG-Größe = (Max Sync-Write-Rate * 10 Sekunden) * 2
Beispiel: 500 MB/s Sync → 5 GB * 2 = 10 GB SLOG ausreichend

TrueNAS Empfehlung: 16-32 GB pro SLOG-Device (gespiegelt!)

SLOG-Status prüfen:

# Pool MIT SLOG:
zpool iostat -v tank 1
              capacity  operations  bandwidth
pool         alloc free  read write  read write
tank         5.2T  2.8T   142  8247  45M  2.1G
  raidz2     5.2T  2.8T   142  8247  45M  2.1G
    sda         -     -    18  1031  5.6M  262M
logs            -     -     -     -     -     -
  mirror     2.1G  13.9G    0  8247   0   2.1G  ← SLOG aktiv!

# Pool OHNE SLOG (ZIL auf Vdevs):
zpool status tank
  pool: tank
  config:
        NAME          STATE
        tank          ONLINE
          mirror-0    ONLINE       # ZIL liegt auf diesen Devices
            nvme0n1   ONLINE
            nvme1n1   ONLINE
        # Kein "logs" Abschnitt = ZIL auf Pool-Vdevs

SLOG: Write-Only im Normalbetrieb
#

SLOG-Devices werden im Normalbetrieb nicht gelesen, nur beschrieben. Reads passieren nur beim Crash-Recovery (ZIL-Replay).

SLOG-Ausfall: Was passiert
#

  • Pool bleibt ONLINE, ZIL wechselt auf die Haupt-Vdevs
  • Bereits bestätigte Sync-Writes liegen im RAM und werden beim nächsten TXG-Commit persistiert
  • Risiko besteht nur beim Doppel-Ereignis: SLOG-Ausfall und unmittelbar danach ein Strom/OS-Crash
zpool import -m tank  # Import trotz fehlendem Log-Device

Mirroring: Best Practice, nicht Pflicht
#

SetupRiskBeschreibung
Single SLOGMittel0–5s Datenverlust bei Crash möglich
Mirrored SLOGMinimalRedundanz, stabilere Latenz
Kein SLOGKeinsLangsamer, aber sicher

Status/Diagnose – kompakt
#

# Pool mit SLOG: Schreiblasteinsicht
zpool iostat -v tank 1

# Import trotz fehlendem SLOG (Crash-Recovery)
zpool import -m tank

Schlüsse (praxisnah)
#

  • SLOG optimiert Latenz, nicht Durchsatz – Auswahl nach μs, nicht MB/s.
  • NVMe/SSD‑Pools: Häufig ausreichend schnell → SLOG meist optional.
  • HDD‑Pools: SLOG bringt große Effekte; gespiegelt für Produktion.
  • SLOG‑Ausfall ≠ Datenverlust: Nur Doppelereignis (Ausfall + Crash) riskant.

Weiterlesen
#

Verwandte Artikel

ZFS L2ARC: Wann er sinnvoll ist und wie man ihn bewertet (Teil 2)
Wim Bonis
Storage ZFS Performance
ZFS ARC mit Prefetch: Funktionsweise und Tuning (Teil 1)
Wim Bonis
Storage ZFS Performance
ZFS Performance-Tuning: ARC, L2ARC und SLOG (Übersicht)
Wim Bonis
Storage ZFS Performance
Die richtige ZFS Pool-Konfiguration wählen: Ein Leitfaden für Enterprise-Storage
Wim Bonis
Storage ZFS Performance
TrueNAS Goldeye 25.10 – Einfachere Deployments und Terabit-Performance
Wim Bonis
Storage TrueNAS ZFS Performance Enterprise AI KI Virtualisierung
ZFS-Storage Vergleich 2025: TrueNAS Scale vs Core, Open-E, Ubuntu, FreeBSD & 8 Alternativen
Wim Bonis
Storage ZFS NAS TrueNAS Open-E Vergleich Enterprise HA-Cluster Metro-Cluster
OpenZFS Virtualisierung: Storage-Lösungen für moderne Infrastrukturen
Wim Bonis
Storage Tools ZFS
ZFS JBOD Tools: Effiziente Verwaltung von Storage-Systemen
Wim Bonis
Storage Tools ZFS
Ransomware: Geschichte, Schutzmaßnahmen und ZFS als Verteidigungslinie
Wim Bonis
Storage Security ZFS