Virtualisierung

Was ist Nested virtualisation?

Definition

Nested virtualisation lets a virtual machine itself run virtual machines, by exposing the processor virtualisation extensions to the guest. It is required for Proxmox VE, VM-based CI jobs and some Docker configurations. Many providers disable it, which is the usual reason those workloads fail elsewhere.

Warum Nested virtualisation wichtig ist

Es ist für Proxmox VE, VM-basierte CI-Jobs und einige Docker-Konfigurationen erforderlich. Viele Anbieter deaktivieren es, was der übliche Grund ist, warum solche Workloads anderswo scheitern.

Nested virtualisation in der Praxis

Wenn du verschachtelte Virtualisierung betreibst, bootest du einen Hypervisor in einem KVM-Gast und reichst die Virtualisierungs-Erweiterungen der Host-CPU durch. Du prüfst /proc/cpuinfo im Gast auf svm- oder vmx-Flags. Wenn sie fehlen, fällt dein innerer Hypervisor auf Software-Emulation zurück, was die Leistung um eine Größenordnung reduzieren kann. Möglicherweise musst du auch den CPU-Typ 'host' statt eines generischen Modells aktivieren, um diese Flags zu erhalten. Wenn du das falsch machst, läuft deine Proxmox- oder CI-Workload nur noch im Kriechenstempo.

Was Leute bei Nested virtualisation falsch machen

Leute nehmen an, dass verschachtelte Virtualisierung nur wichtig ist, um vollständige Betriebssysteme wie Windows in einer VM zu betreiben. Die Korrektur: Sie bricht auch Dockets Standard-Overlay-Netzwerk und bestimmte Kernelmodule, weil diese von Virtualisierungsfunktionen im Gast abhängen. So kann eine Container-Workload bei einem Anbieter, der Verschachtelung deaktiviert, fehlschlagen, selbst wenn du nie vorhattest, eine VM zu betreiben.

Nested virtualisation – häufige Fragen

Kann ich Docker in einer verschachtelten VM ausführen?

Ja, und das ist der häufigste Grund, warum Leute verschachtelte Virtualisierung benötigen. Dockets Standard-Bridge-Netzwerk nutzt iptables und Kernelmodule, die sich ohne exponierte CPU-Virtualisierungs-Erweiterungen anders verhalten können. Unsere KVM-Pläne beinhalten verschachtelte Virtualisierung, sodass deine Docker-Container wie erwartet laufen.

Wie prüfe ich, ob verschachtelte Virtualisierung aktiviert ist?

Führe in deiner VM grep -E '(svm|vmx)' /proc/cpuinfo aus. Wenn du die Flags siehst, ist Verschachtelung verfügbar. Wenn nicht, setzt der Hypervisor sie nicht aus, was normalerweise bedeutet, dass der Anbieter sie deaktiviert hat.

Mehr aus virtualisierung

KVM
KVM ist vollständige Hardware-Virtualisierung, die in den Linux-Kernel integriert ist und jedem Gast einen eigenen Kernel und hardwaregestützte Isolierung von anderen Mandanten bietet.
OpenVZ
OpenVZ ist containerbasierte Virtualisierung, bei der jede Instanz den Host-Kernel teilt, sodass Gäste keine Kernel-Module laden oder ein anderes Betriebssystem ausführen können.
LXC
LXC ist Linux-native Containerisierung, die Prozesse mit Namespaces und Cgroups isoliert, während der Host-Kernel geteilt wird.
Hypervisor
Ein Hypervisor ist die Softwareschicht, die virtuelle Maschinen erstellt und ausführt und physische CPU, Speicher und E/A zwischen ihnen zuteilt.
vCPU
Eine vCPU ist ein virtueller Prozessor, der einem Gast präsentiert wird und durch Planungszeit auf einem physischen Kern oder Thread unterstützt wird.
cloud-init
cloud-init ist der Standardmechanismus zur Konfiguration einer virtuellen Maschine beim ersten Start unter Verwendung von Metadaten, die von der Plattform bereitgestellt werden.