# Proxmox Disk I/O Optimization: Cache-Modi & Storage Tuning

TL;DR / Management Summary Die Speicher-Performance ist in 90% der Fälle der Flaschenhals in virtuellen Umgebungen. In Proxmox entscheiden wir pro VM-Disk über den Cache-Modus. Ein Senior Admin wählt standardmäßig No Cache für maximale Sicherheit, wechselt aber auf Write Back, wenn das Backend durch eine USV (UPS) geschützt ist und maximale Schreibgeschwindigkeit benötigt wird. Durch die Nutzung von io_uring und VirtIO-SCSI Single mit IO-Threads minimieren wir die Latenzen auf ein Minimum.


# 1. Die Cache-Modi erklärt

Sicherheit vs. Speed.

Unter VM -> Hardware -> Hard Disk -> Edit -> Cache:

  1. No Cache (Standard/Sicher): QEMU öffnet die Datei mit O_DIRECT. Daten gehen am Host-Cache vorbei direkt auf die Disk.
    • Ideal für: Datenbanken, Cluster-Workloads.
  2. Write Back: Daten werden sofort im Host-RAM als “geschrieben” markiert.
    • Vorteil: Enormer Speed-Boost bei Schreibvorgängen.
    • Gefahr: Datenverlust bei Stromausfall des Hosts (RAM-Inhalt weg).
  3. Write Through: Liest aus dem Host-Cache, schreibt aber direkt durch.
  4. Direct Sync: Sicherste, aber langsamste Methode. Jede Operation wird physisch quittiert.

# 2. Der I/O Thread & VirtIO-SCSI Single

Parallelisierung auf Host-Ebene.

Standardmäßig nutzt Proxmox einen Controller für alle VM-Disks.


# 3. Deep Dive: AIO (Async I/O) Engine

Der Motor der Pakete.

Proxmox unterstützt verschiedene Engines, um I/O Befehle abzuarbeiten:


# 4. Day-2 Operations: TRIM & Discard

Speicherplatz lebendig halten.

In virtuellen Umgebungen bleibt eine 100 GB Datei auf dem Host auch dann 100 GB groß, wenn der Gast alle Daten gelöscht hat.


# 5. Troubleshooting & “War Stories”

Wenn die Disk ‘lahmt’.

# Top 3 Fehlerbilder

  1. Symptom: Massive Latenz-Spikes alle 5 Sekunden.

    • Ursache: ZFS “Transaction Group Commit” (Artikel 683). Der Host-Cache wird auf einmal auf langsame Disks geleert.
    • Lösung: Nutzen Sie eine ZIL/SLOG SSD mit Power-Loss Protection.
  2. Symptom: VM bootet nicht von SCSI.

    • Ursache: Windows VirtIO Treiber nicht geladen.
    • Fix: Temporär auf SATA stellen, Treiber installieren, zurück auf SCSI.
  3. Symptom: Hoher CPU-Load durch kworker/uX:X.

    • Ursache: Der Host ist mit der Emulation des I/O-Stacks beschäftigt.

# “War Story”: Der “Double-Caching” Teufel

Ein Admin aktivierte Write Back in Proxmox und zusätzlich das Caching in seinem Hardware-RAID-Controller. Das Ergebnis: Die Schreibperformance war “unfassbar” (5000 MB/s). Die Katastrophe: Ein Netzkabel am Host wurde versehentlich gezogen. Da die Daten in drei verschiedenen RAM-Caches (App, Hypervisor, RAID-Controller) lagen, bevor sie die Disk berührten, war das Dateisystem der VM so korrupt, dass nur ein Full-Restore half. Lehre: Nutzen Sie Caching nur dort, wo Sie es kontrollieren können (z.B. ZFS ARC oder RAID-Controller mit BBU/Flash). Doppeltes Caching ist ein Daten-Roulette.


# 6. Monitoring & Reporting

Durchsatz messen.

# Performance Benchmark (Host)

Nutzen Sie fio, um die echten Fähigkeiten Ihres Storages zu testen:

fio --name=test --ioengine=libaio --direct=1 --rw=randwrite --bs=4k --numjobs=8 --iodepth=32 --size=1G --runtime=60

# 7. Fazit & Empfehlung

I/O Optimierung ist das Herzstück des VM-Tuning.


# Anhang: Cheatsheet (Disk Options)

Option Wert Zweck
Discard on TRIM Support
SSD Emulation on Hilft dem Gast-OS beim Optimieren
Backup off Schließt unwichtige Disks vom Backup aus
IO Thread on Parallelisierung

# Referenzen