Proxmox VE bietet zwei Virtualisierungstechnologien: LXC-Container und KVM-VMs. Die Wahl zwischen beiden hat erhebliche Auswirkungen auf Performance, Isolation und Verwaltbarkeit. Hier eine praktische Entscheidungshilfe.

LXC Container — leichtgewichtig und schnell

LXC-Container teilen sich den Kernel mit dem Host. Das bedeutet nahezu null Overhead, schnellen Start und geringen RAM-Verbrauch. Ideal für:

  • Webserver (nginx, Apache, PHP-FPM)
  • Datenbanken (MySQL, MariaDB, Redis)
  • DNS-Server, Monitoring-Dienste
  • Gameserver (Source Engine, Minecraft)
  • Jede Linux-only Anwendung ohne Kernel-Anforderungen
# Neuen CT erstellen (Beispiel)
pct create 110 local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \
  --hostname mein-dienst \
  --memory 512 \
  --cores 2 \
  --rootfs local-lvm:8 \
  --net0 name=eth0,bridge=vmbr1,ip=dhcp \
  --unprivileged 1 \
  --start 1

KVM VMs — volle Isolation

KVM-VMs bekommen einen eigenen virtuellen Kernel und sind vollständig vom Host isoliert. Verwenden wenn:

  • Windows-Gast benötigt wird
  • Kernel-Module im Gast gebraucht werden
  • Vollständige Netzwerk-Isolation erforderlich ist (z.B. Firewall-VM wie pfSense)
  • Unbekannte/untrusted Software läuft
  • Desktop-Umgebung mit GPU-Passthrough

Ressourcenvergleich

LXC ContainerKVM VM
RAM-Overhead~10–20 MB100–200+ MB
Boot-Zeit< 1s5–30s
Disk-Performancenahezu nativmit virtio fast nativ
Kernel-Isolation❌ geteilt✅ eigenständig
Windows-Support
Snapshots✅ (ZFS/LVM)✅ (ZFS/LVM/Qcow2)

Tipp: Unprivileged Containers

LXC-Container immer als unprivileged betreiben (--unprivileged 1). Dabei werden UID/GID im Container auf einen Bereich ab 100000 auf dem Host gemappt. Selbst wenn ein Angreifer aus dem Container ausbricht, landet er als unprivilegierter Nutzer auf dem Host.

# Privilegierten CT nachträglich auf unprivileged umstellen
# 1. CT stoppen
pct stop 110
# 2. Config editieren
sed -i "s/unprivileged: 0/unprivileged: 1/" /etc/pve/lxc/110.conf
# 3. UID-Mapping hinzufügen falls fehlend
echo "lxc.idmap: u 0 100000 65536" >> /etc/pve/lxc/110.conf
echo "lxc.idmap: g 0 100000 65536" >> /etc/pve/lxc/110.conf