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 Container | KVM VM | |
|---|---|---|
| RAM-Overhead | ~10–20 MB | 100–200+ MB |
| Boot-Zeit | < 1s | 5–30s |
| Disk-Performance | nahezu nativ | mit 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