Zum Hauptinhalt springen

OpenZFS Virtualisierung: Storage-Lösungen für moderne Infrastrukturen

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

OpenZFS Virtualisierung

OpenZFS hat sich als universelles Dateisystem bereits bewährt – als Storage-Backend für virtuelle Maschinen entfaltet es jedoch seine wahren Stärken. Die charakteristischen Features wie Block-Level-Checksumming, Instant-Snapshots, asynchrone Replikation und granulares Performance-Tuning sind exakt das, was VM-Architekturen benötigen.

Während einfache VM-Deployments bereits mit Standard-Konfigurationen auf ungefeinten OpenZFS-Pools hervorragende Ergebnisse erzielen, profitieren produktive Umgebungen erheblich von zielgerichteter Optimierung. Diese Optimierungen lohnen sich auch für kleinere Umgebungen und Homelab-Setups.

Hardware-Empfehlungen
#

Kleinere Infrastrukturen benötigen häufig keine Performance-Optimierung – die Standard-Konfiguration genügt für leichte bis mittlere Workloads. Für höhere Anforderungen bietet OpenZFS jedoch umfangreiche Tuning-Möglichkeiten, wobei drei Faktoren besonders relevant sind: Hardware, Pool-Topologie und Recordsize.

SSD-Auswahl für VM-Storage
#

Für optimale VM-Performance sollten Speichermedien nicht nur schnell, sondern vor allem vorhersagbar schnell sein – auch bei dauerhaften, intensiven Workloads.

Consumer- und “Prosumer”-M.2-SSDs erweisen sich trotz beeindruckender Benchmark-Werte als problematisch für VM-Hosting. Diese Laufwerke zeigen bei kurzen, einfachen Tests (unter 30 Sekunden) hohe Performance, fallen jedoch bei anhaltenden Schreibvorgängen dramatisch ab, sobald der begrenzte SLC-Cache gefüllt ist. Zusätzlich droht thermisches Throttling bei unzureichender Kühlung.

SATA-SSDs zeigen ähnliche Cache-Limitierungen, jedoch ohne thermische Probleme. Hochwertige “Prosumer”-SATA-SSDs sind für Performance auch nach Cache-Erschöpfung optimiert – der Preisunterschied zwischen Samsung EVO und Pro reflektiert diese Designunterschiede.

Enterprise-SSDs für kritische Workloads
#

Enterprise- oder Datacenter-SSDs stellen die optimale Wahl für Virtualisierungs-Storage dar. Diese Laufwerke bieten:

  • Hardware-QoS: Minimiert Latenz-Spitzen für konsistente Performance
  • Power Loss Protection (PLP): Ermöglicht sichere Beschleunigung synchroner Schreibvorgänge
  • Höhere Schreibausdauer: Doppelte bis vierfache Endurance-Ratings

Für anspruchsvolle Umgebungen sind Hot-Swap U.3 NVMe-Laufwerke erste Wahl, mit modernen Modellen, die sowohl extreme IOPS-Werte als auch HDD-vergleichbare Kapazitäten bieten.

Schreibausdauer und Dimensionierung
#

Die Schreibausdauer wird in DWPD (Drive Writes Per Day) gemessen – ein 1TB-SSD bietet doppelte Endurance gegenüber dem 512GB-Modell derselben Serie.

Faustregel für SSD-Dimensionierung:

  • Keine SSDs unter 1TB für VM-Storage
  • Power Loss Protection und QoS nicht unterschätzen
  • Schreibausdauer in Projektplanung einbeziehen

Eine 1TB-Consumer-SSD zeigt in Desktop-Umgebungen nach 3-5 Jahren Leistungsabfall. Eine 2TB-Consumer-SSD oder 1TB-Datacenter-SSD würde nach 6-10 Jahren noch vollwertige Performance liefern. Bei intensiveren Server-Workloads können selbst 4TB-Prosumer-SSDs innerhalb eines Jahres die Hälfte ihrer ursprünglichen Performance verlieren.

Storage-Controller: SATA vs. SAS
#

Standard-Motherboard-SATA genügt für die meisten Systeme. Für extreme Performance sind jedoch diskrete SATA/SAS-Controller erforderlich.

SATA-Controller, ob onboard oder diskret, bieten typischerweise nur eine PCIe-Lane (≈2GB/s full-duplex, aufgeteilt in ≈1GB/s up/down). SAS-Controller nutzen hingegen PCIe x4 oder x8, wodurch der Durchsatz-Engpass entfällt.

Die theoretischen 6Gbps (≈750MiB/s) pro SATA-Port werden durch die PCIe-Bandbreite des Controllers limitiert – ein häufig missverstandener Bottleneck.

RAM-Anforderungen
#

VM-Hosting ist RAM-intensiv und profitiert erheblich von hohen Storage-Cache-Hit-Raten. Die OpenZFS-Standardkonfiguration (“bis zu 50% des physischen RAMs für ARC”) sollte beibehalten werden.

Beispiel-Kalkulation für 32GB-System:

  • OpenZFS ARC: 12-16GB
  • Host-OS: 2GB
  • Verfügbar für VMs: 14GB

Obwohl zfs_arc_max anpassbar ist, wird von Änderungen ohne fundierte Analyse abgeraten.

# ARC-Limit auf 8GB setzen (16GB RAM-System)
echo 8589934592 > /sys/module/zfs/parameters/zfs_arc_max

# Aktuelle ARC-Statistiken anzeigen
arcstat 1 5

CPU-Anforderungen
#

OpenZFS ist nicht CPU-intensiv – selbst günstige AMD Kabini-Prozessoren (unter $50) bewältigen funktionale KVM-Hosts in Edge-Deployments.

Für viele VMs gilt jedoch: Ein physischer CPU-Core pro virtuellem Core minimiert Context-Switching und maximiert VM-Performance. Core-Oversubscription ist möglich, führt jedoch bei intensiver Nutzung zu Performance-Einbußen.

Für 10Gbps+-Netzwerke sind schnelle CPUs erforderlich, da Netzwerk-Transport oft auf einzelne CPU-Threads limitiert ist.

Performance-Tuning
#

Backend-Typ: ZVOL vs. Raw Files
#

Hypervisors unterstützen sowohl direkte Storage-Devices als auch dateibasierte Backends. OpenZFS ermöglicht native Raw-Storage-Devices (ZVOLs) – jedoch nicht immer mit optimaler Performance.

# ZVOL für VM erstellen (100GB)
zfs create -V 100G vmpool/vm-disk-01

# Raw-File für VM erstellen (sparse allocation)
truncate -s 100G /vmpool/vm-disk-02.raw

# .qcow2 Image erstellen mit voller Allokation
qemu-img create -f qcow2 -o preallocation=full /vmpool/vm-disk-03.qcow2 100G

Benchmark-Tests zeigen dramatische Performance-Unterschiede: Raw Files erreichen bei 4K-Random-I/O über 600% der ZVOL-Performance, bei 1MiB-Operationen immer noch 220%.

Raw Files übertreffen auch .qcow2-Files, wobei vollständig allokierte .qcow2-Files nahezu Raw-File-Performance erreichen.

Pool-Topologie für maximale Performance
#

Mirror-vdevs sind entscheidend für VM-Performance. Breite RAIDz-Arrays performen trotz mehr Laufwerken oft schlechter als einzelne Drives.

Pool-Performance skaliert mit der Anzahl der vdevs, nicht der Laufwerke.

# Optimale Mirror-Pool Topologie (8 Drives)
zpool create vmpool mirror /dev/sda /dev/sdb mirror /dev/sdc /dev/sdd \
                    mirror /dev/sde /dev/sdf mirror /dev/sdg /dev/sdh

# RAIDz2 Topologie (weniger optimal für VMs)  
zpool create vmpool raidz2 /dev/sda /dev/sdb /dev/sdc /dev/sdd \
                    raidz2 /dev/sde /dev/sdf /dev/sdg /dev/sdh

# Pool-Status überprüfen
zpool status vmpool
zpool list -v

8-Bay-System Performance-Ranking:

  1. Vier 2-wide Mirror vdevs (optimal)
  2. Zwei 4-wide RAIDz2 vdevs
  3. Ein 6-wide RAIDz2 vdev (oft schlechter als Single-Drive)

OpenZFS Recordsize-Optimierung
#

Recordsize kontrolliert die maximale Blockgröße und sollte den I/O-Patterns der VM-Workloads entsprechen.

# Dataset für Allzweck-VMs erstellen (64K recordsize)
zfs create -o recordsize=64K vmpool/general-vms

# Dataset für Datenbank-VMs (16K für MySQL)
zfs create -o recordsize=16K vmpool/mysql-vms

# Dataset für PostgreSQL (8K)
zfs create -o recordsize=8K vmpool/postgres-vms

# Dataset für File-Server/Media (1M)
zfs create -o recordsize=1M vmpool/fileserver

# Aktuellen Recordsize prüfen
zfs get recordsize vmpool/general-vms

Empfohlene Recordsize-Werte:

  • 64K: Allzweck-VMs (ext4/NTFS-optimiert)
  • 16K: MySQL-Datenbanken
  • 8K: PostgreSQL-Datenbanken
  • 1M: File-Sharing/Medienserver

Bei .qcow2-Backends muss cluster_size (Standard: 64KiB) mit Recordsize abgestimmt werden:

# .qcow2 mit angepasster Cluster-Size erstellen
qemu-img create -f qcow2 -o cluster_size=16384,preallocation=metadata \
         /vmpool/mysql-vms/database-vm.qcow2 50G

Zu große Recordsize bei Small-Block-Workloads führt zu Read-Amplification – 128K-Recordsize bei PostgreSQL bedeutet 16 Datenbankseiten lesen für eine benötigte Seite.

Fazit
#

OpenZFS bietet von Enterprise-Deployments bis zum Homelab unvergleichliche Zuverlässigkeit, Administrierbarkeit und Skalierbarkeit. Die richtige Hardware-Auswahl, durchdachte Pool-Topologie und angepasste Recordsize-Konfiguration erschließen das volle Performance-Potenzial für Virtualisierungs-Workloads.

Für produktive Umgebungen mit spezifischen Performance-Anforderungen empfiehlt sich eine detaillierte Analyse der konkreten Workload-Patterns und entsprechende Optimierung der OpenZFS-Parameter.

# VM-spezifische Tuning-Parameter
zfs set sync=disabled vmpool/general-vms     # Nur für Test-VMs!
zfs set primarycache=metadata vmpool/mysql-vms  # Bei RAM-Knappheit

Wim Bonis ist CTO bei Stylite AG und beschäftigt sich schwerpunktmäßig mit Enterprise-Storage-Lösungen und Virtualisierungstechnologien.

Verwandte Artikel

ZFS JBOD Tools: Effiziente Verwaltung von Storage-Systemen
Wim Bonis
Storage Tools ZFS
FreeNAS, TrueNAS Core und OpenZFS: Ein Überblick
Wim Bonis
Storage Tools ZFS
OpenZFS vs. TrueNAS: Ein Vergleich der Storage-Lösungen
Wim Bonis
Storage Tools ZFS
Ransomware: Geschichte, Schutzmaßnahmen und ZFS als Verteidigungslinie
Wim Bonis
Storage Security ZFS
FIO-Analyzer: Performance-Vergleich von ZFS und TrueNAS Servern
Wim Bonis
Storage Tools Opensource
NAS, SAN oder das, was Unternehmen über Speicherlösungen wissen sollten
Wim Bonis
Storage Tools
TrueNAS Fans aufgepasst: Neue Features und Updates
Wim Bonis
Storage News ZFS
Phishing erkennen, verstehen, vermeiden: Ein Leitfaden für Unternehmen und Anwender
Wim Bonis
Security Tools
TrueNAS F-Serie: Performance-optimierte Storage-Lösungen
Wim Bonis
Storage Performance