Metainformationen zur Seite
Grundlagen
Virtuelle Maschinen (VM), LXC Container (privilegiert und unprivilegiert) in Proxmox
In diesem Dokument werden die grundlegenden Konzepte von virtuellen Maschinen (VM) sowie privilegierten und unprivilegierten LXC Containern im Kontext der Virtualisierungsplattform [Proxmox](https://www.proxmox.com) erläutert. Zudem werden Vor- und Nachteile dargestellt und Entscheidungshilfen gegeben, wann welche Technologie eingesetzt werden sollte.
Was ist eine Virtuelle Maschine (VM)?
Eine Virtuelle Maschine ist eine vollständig isolierte Umgebung, die ein komplettes Betriebssystem inklusive eigener Kernel-Instanz ausführt. Die Virtualisierung erfolgt in der Regel durch einen Hypervisor (bei Proxmox KVM-basiert). VMs erhalten dedizierte virtuelle Hardware (CPU, RAM, virtuelle Festplatten, virtuelle Netzwerkadapter), auf welcher ein Gastbetriebssystem wie Linux, Windows oder BSD installiert werden kann.
Eigenschaften einer VM:
- Volle Virtualisierung von Hardware-Ressourcen (CPU, Speicher, Netzwerk, Speichergeräte)
- Läuft in einem isolierten Software-Container, der durch den Hypervisor kontrolliert wird
- Betriebssystemunabhängig (kann verschiedenste OS-Typen nutzen)
- Höherer Overhead, da vollständige virtuelle Hardware emuliert wird
Beispiel: Auf einem Proxmox-Host wird eine VM mit 4 vCPUs, 8 GB RAM und 100 GB virtuellem Speicherplatz erstellt, auf der ein vollständiges Ubuntu Server OS läuft.
Was ist ein LXC Container?
LXC (Linux Containers) ist eine leichtgewichtige Virtualisierungs- bzw. Containerisierungstechnologie, die auf Betriebssystem-Ebene arbeitet. Anstatt eine komplette Hardware-Umgebung zu emulieren, nutzen LXC Container den Kernel des Host-Systems direkt, teilen sich also denselben Kernel. Jeder Container ist jedoch in Bezug auf Prozesse, Dateisystem, Netzwerk und Ressourcen weitgehend isoliert.
Eigenschaften von LXC Containern:
- Betriebssystem-Ebene-Isolation (kein eigener Kernel im Container)
- Niedriger Overhead, da keine volle Hardwarevirtualisierung stattfindet
- Sehr schnelle Start- und Stoppzeiten
- In Proxmox direkt unterstützt
LXC Container sind in zwei Varianten verfügbar: privilegiert und unprivilegiert.
Privilegierte LXC Container
Ein privilegierter Container läuft mit root-Rechten im Kontext des Host-Systems (UID 0 im Container entspricht UID 0 auf dem Host). Dies macht ihn konzeptionell einfacher, birgt aber gewisse Sicherheitsrisiken, da ein Fehler in einem privilegierten Container theoretisch einfacher auf den Host übergreifen kann.
Eigenschaften privilegierter Container:
- Einfachere Verwaltung von Berechtigungen und Ressourcen
- Höheres Sicherheitsrisiko bei Exploits oder Fehlkonfigurationen, da „root“ im Container auch „root“ auf dem Host ist
- Noch immer geringerer Overhead als eine VM
Unprivilegierte LXC Container
Unprivilegierte Container verwenden eine UID/GID-Map (Benutzer- und Gruppen-ID-Zuordnungen) im Host, um sicherzustellen, dass „root“ im Container nicht dasselbe wie „root“ im Host ist. Der Container-„root“ ist hierbei im Host lediglich ein normaler unprivilegierter User, was die Sicherheit deutlich erhöht.
Eigenschaften unprivilegierter Container:
- Höhere Sicherheit, da Host-Root-Rechte nicht direkt auf den Container-Root abgebildet werden
- Etwas aufwändigere Einrichtung, da UID/GID-Maps korrekt konfiguriert sein müssen
- Sicherheit steht hier klar im Vordergrund
Vergleich zwischen VM und LXC
Technologie | Virtualisierungsebene | Kernel-Nutzung | Overhead | Startzeit | Anwendungsfälle |
---|---|---|---|---|---|
VM (KVM) | Hardware-Ebene | Eigener Kernel im Gast | Höher | Langsamer (Sekunden bis Minuten) | Vollständige OS-Isolation, heterogene Betriebssysteme (z. B. Windows, Linux gemischt) |
LXC Container (priv./unpriv.) | Betriebssystem-Ebene | Teilt sich den Kernel mit dem Host | Sehr gering | Sehr schnell (Sekundenbruchteile) | Homogene Linux-Workloads, schnelle Bereitstellung, leichtgewichtige Services |
Vor- und Nachteile
Virtuelle Maschinen
Vorteile:
- Volle Isolation, vollständige virtuelle Hardwareumgebung
- Beliebige Betriebssysteme können installiert werden
- Stabiler und etablierter Standard für viele Einsatzzwecke
Nachteile:
- Höherer Ressourcenverbrauch
- Längere Boot-Zeiten
- Komplexere Verwaltung, da eigenes OS gepflegt werden muss
Privilegierte LXC Container
Vorteile:
- Sehr geringe Ressourcenbelastung
- Schnelle Startzeiten
- Einfache Einrichtung im Vergleich zu unprivilegierten Containern
Nachteile:
- Geringere Sicherheit als unprivilegierte Container
- Risiko von Privilege Escalation, falls Lücken ausgenutzt werden
Unprivilegierte LXC Container
Vorteile:
- Höchste Sicherheit unter den Container-Varianten
- Geringe Ressourcenbelastung, schnelle Startzeiten
Nachteile:
- Etwas komplexere Einrichtung durch UID/GID-Mapping
- Teilweise Einschränkungen bei Zugriffen und Berechtigungen, die man im privilegierten Modus nicht hat
Wann was verwenden?
Virtuelle Maschinen: Setze VMs ein, wenn
- Verschiedene Betriebssysteme (z. B. Windows und Linux) auf demselben Host laufen sollen
- Eine vollständige Hardwarevirtualisierung und maximale Isolation erforderlich ist
- Eine stabil etablierte und flexible Lösung benötigt wird, unabhängig vom Host-Kernel
Privilegierte LXC Container: Setze privilegierte Container ein, wenn
- Du schnell und ressourcensparend Linux-basierte Services bereitstellen willst
- Du weniger Aufwand bei der Verwaltung von UID/GID-Maps betreiben möchtest
- Sicherheitsrisiko tolerierbar ist (z. B. interne Entwicklungsumgebung)
Unprivilegierte LXC Container: Setze unprivilegierte Container ein, wenn
- Sicherheit oberste Priorität hat
- Du nur Linux-Workloads betreibst, die im gleichen Kernelumfeld funktionieren
- Du die Vorteile der Containerisierung nutzen willst, ohne die Host-Sicherheit zu kompromittieren
Zusammenfassung
Proxmox bietet mit KVM-VMs und LXC-Containern zwei Hauptvirtualisierungsansätze. VMs sind ideal für heterogene, vollständig isolierte Umgebungen und bieten maximale Flexibilität, aber auf Kosten von Ressourcen und Startzeiten. LXC Container bieten leichtgewichtigere, schnellere Umgebungen für Linux-basierte Workloads. Unprivilegierte Container erhöhen dabei die Sicherheit erheblich.
Durch die gezielte Wahl der passenden Technologie kannst Du Deine Ressourcen effizient nutzen und Deine Sicherheits- und Performanzanforderungen optimal ausbalancieren.