linux-ubuntu-debian proxmox virtualization optimization performance guest-agent

Ubuntu in Proxmox: VM Optimization (Artikel 060)

Der definitive Guide zur Optimierung von Ubuntu-VMs auf Proxmox VE. Erfahren Sie alles über VirtIO-Tuning, CPU-Typen, den Guest Agent und Disk-Discard für effizienten Betrieb.

# Ubuntu & Proxmox: Maximale Performance für virtuelle Workloads

TL;DR / Management Summary Ein Standard-Ubuntu-Install auf Proxmox verschenkt Potenzial. Für eine echte Enterprise-VM müssen wir die paravirtualisierten VirtIO-Treiber nutzen, den QEMU Guest Agent für saubere Kommunikation aktivieren und den CPU-Typ auf Host stellen, um alle Befehlssatzerweiterungen (AES-NI, AVX) zu nutzen. Das Ziel: Minimale Latenz, maximale I/O-Leistung und ein effizientes Storage-Management via TRIM/Discard.


# 1. Einführung & Architektur

Die Symbiose von KVM und Ubuntu.

Proxmox nutzt KVM zur Virtualisierung. Ubuntu erkennt als moderner Kernel diese Umgebung automatisch, benötigt aber Feintuning für die “Last Mile” der Performance.

graph TD
    A[Ubuntu Guest OS] -->|VirtIO Drivers| B[KVM Hypervisor / Proxmox]
    A -->|QEMU Guest Agent| C[Proxmox Web GUI / API]
    B -->|CPU Passthrough| D[Physical Intel/AMD CPU]
    B -->|VirtIO-SCSI| E[ZFS / Ceph Storage]
    C -->|ACPI Shutdown| A

# 2. Die goldenen VM-Einstellungen

Konfiguration in der Proxmox GUI.

# CPU: Die Macht der Architektur

Stellen Sie den CPU-Typ auf host.

  • Warum?: Standardmäßig emuliert QEMU eine generische CPU (kvm64). Mit host sieht der Gast die echte CPU und kann Features wie Hardware-Verschlüsselung (AES-NI) nutzen – essenziell für VPNs und DBs.

# Storage: VirtIO-SCSI & iothread

  • Controller: Nutzen Sie den VirtIO SCSI single. Er ist performanter als der Standard-VirtIO.
  • iothread: Aktivieren Sie dieses Häkchen in den Disk-Optionen. Es erlaubt dem Hypervisor, I/O in einem eigenen Thread zu verarbeiten, was Latenzen bei Multi-Core VMs massiv senkt.

# 3. Gast-System Optimierung

Befehle innerhalb der VM.

# QEMU Guest Agent (Pflicht!)

Ohne den Agenten kann Proxmox die VM nur “hart” ausschalten. Der Agent erlaubt saubere Shutdowns und Snapshots (FS Freeze).

sudo apt update && sudo apt install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

# Disk-Discard (TRIM)

Wenn Sie Thin Provisioning (LVM-Thin, ZFS, Ceph) nutzen, merkt der Hypervisor nicht, wenn Sie im Gast Dateien löschen. Der Platz bleibt belegt.

  1. In Proxmox: Option Discard bei der Disk aktivieren.
  2. Im Gast:
# Sofort ausführen
sudo fstrim -av
# Dauerhaft aktivieren via Systemd Timer
sudo systemctl enable fstrim.timer

# 4. Day-2 Operations: Netzwerk & Monitoring

Keine Millisekunde verschenken.

# Netzwerk: VirtIO Multiqueue

Wenn Sie massiven Traffic (> 10 Gbit/s) haben, erhöhen Sie die Anzahl der Queues in der Netzwerkkarte (Proxmox GUI -> Net0 -> Edit). Stellen Sie den Wert auf die Anzahl der vCPUs.

# Cloud-Init Integration

Nutzen Sie Cloud-Init (siehe Artikel 002), um Hostname, User und Netzwerk automatisch beim ersten Boot zu setzen. Das spart hunderte manuelle Klicks.


# 5. Troubleshooting & “War Stories”

Wenn die VM hakt.

# Story 1: “Der hängende Snapshot”

Symptom: Proxmox Backup oder Snapshot bleibt bei 95% hängen und blockiert die VM. Ursache: Der Guest Agent versucht das Dateisystem einzufrieren (fsfreeze), aber ein Prozess (oft hängender NFS-Mount) antwortet nicht. Lösung: Prüfen Sie hängende Mounts im Gast oder deaktivieren Sie temporär den “Freeze” in den Backup-Optionen (unsicher!).

# Story 2: “Uhrzeit-Drift”

Symptom: Logs haben falsche Zeitstempel, Datenbank-Cluster brechen wegen Zeitunterschieden ab. Ursache: VMs “schlafen” manchmal für Millisekunden, wenn der Host überlastet ist. Lösung: Installieren Sie immer chrony im Gast für präzise NTP-Synchronisation: sudo apt install chrony.


# 6. Fazit & Empfehlung

  1. CPU: Immer Type: host.
  2. Treiber: Immer VirtIO.
  3. Kommunikation: Immer QEMU Guest Agent.
  4. Effizienz: Immer Discard/TRIM.

Wer diese vier Punkte beherrscht, betreibt Ubuntu-VMs auf Bare-Metal-Niveau.


# Anhang: Cheatsheet

Aufgabe Ort Einstellung/Befehl
Agent Status Gast systemctl status qemu-guest-agent
IP in GUI sehen Host Erfordert Guest Agent
CPU Extensions Gast `lscpu
Disk TRIM Test Gast sudo fstrim -v /
Konsole via CLI Host qm terminal <vmid>