Virtualisierung
Was ist Nested virtualisation?
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.
Wo Nested virtualisation vorkommt
- Kann ich auf einem VPS verschachtelte Virtualisierung ausführen? Ja. Verschachtelte Virtualisierung ist auf jeder OnionVPS-Instanz aktiviert, sodass Sie KVM-Gäste in Ihrer Instanz ausführen, Proxmox VE installieren oder …
- Was ist der billigste VPS, der tatsächlich brauchbar ist? Etwa 4 $ pro Monat kaufen 1 vCPU, 1 GB RAM und 20 GB NVMe auf echter KVM-Virtualisierung. Das ist wirklich genug für ein WireGuard-VPN, einen DNS-Resolver,…
- Was ist KVM-Virtualisierung? KVM (Kernel-based Virtual Machine) ist eine vollständige Hardwarevirtualisierung im Linux-Kernel, die Prozessor-Erweiterungen nutzt, um jeden Gast mit eige…
- KVM vs. OpenVZ: Warum die Virtualisierungsart wichtig ist KVM ist vollständige Hardware-Virtualisierung: Ihre Instanz läuft mit eigenem Kernel und kann den Host nicht sehen. OpenVZ und LXC sind Container-Technolog…
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.