Virtualizzazione
Cos'è 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.
Perché Nested virtualisation è importante
È richiesto per Proxmox VE, lavori CI basati su VM e alcune configurazioni Docker. Molti provider lo disabilitano, che è la solita ragione per cui quei carichi di lavoro falliscono altrove.
Nested virtualisation in pratica
Quando esegui la virtualizzazione annidata, avvii un ipervisore all'interno di una macchina virtuale KVM e passi le estensioni di virtualizzazione della CPU dell'host. Dovrai controllare /proc/cpuinfo nella VM per i flag svm o vmx. Se sono assenti, il tuo ipervisore interno ripiega sull'emulazione software, che può ridurre le prestazioni di un ordine di grandezza. Potresti anche dover abilitare il tipo di CPU 'host' invece di un modello generico per ottenere quei flag. Se sbagli, il tuo workload Proxmox o CI striscia.
Errori comuni su Nested virtualisation
La gente presume che la virtualizzazione annidata conti solo per eseguire sistemi operativi completi come Windows in una VM. La correzione: rompe anche il networking overlay predefinito di Docker e alcuni moduli del kernel, perché dipendono dalle funzionalità di virtualizzazione all'interno della VM. Quindi un workload container può fallire su un provider che disabilita l'annidamento, anche se non intendevi mai eseguire una VM.
Nested virtualisation — domande frequenti
Posso eseguire Docker dentro una VM annidata?
Sì, ed è il motivo più comune per cui la gente ha bisogno della virtualizzazione annidata. Il networking bridge predefinito di Docker usa iptables e moduli del kernel che potrebbero comportarsi diversamente senza le estensioni di virtualizzazione della CPU esposte. I nostri piani KVM includono la virtualizzazione annidata, quindi i tuoi container Docker funzionano come previsto.
Come verifico se la virtualizzazione annidata è abilitata?
Dentro la tua VM, esegui grep -E '(svm|vmx)' /proc/cpuinfo. Se vedi i flag, l'annidamento è disponibile. Se non li vedi, l'ipervisore non li sta esponendo, il che di solito significa che il provider lo ha disabilitato.
Dove si incontra Nested virtualisation
- Posso eseguire virtualizzazione annidata su una VPS? Sì. La virtualizzazione annidata è abilitata su ogni istanza OnionVPS, quindi puoi eseguire guest KVM all'interno della tua istanza, installare Proxmox VE,…
- Qual è il VPS più economico realmente utilizzabile? Circa $4 al mese offrono 1 vCPU, 1 GB di RAM e 20 GB di NVMe su vera virtualizzazione KVM. Questo è davvero sufficiente per una VPN WireGuard, un resolver …
- Cos'è la virtualizzazione KVM? KVM (Kernel-based Virtual Machine) è la virtualizzazione hardware completa integrata nel kernel Linux, che usa le estensioni del processore per eseguire og…
- KVM vs OpenVZ: perché il tipo di virtualizzazione conta KVM è virtualizzazione hardware completa: la tua istanza esegue il proprio kernel e non può vedere l'host. OpenVZ e LXC sono tecnologie container che condi…
Altro da virtualizzazione
- KVM
- KVM è una virtualizzazione completa dell'hardware integrata nel kernel Linux, che dà a ogni guest il proprio kernel e un isolamento dal hardware di altri tenant.
- OpenVZ
- OpenVZ è una virtualizzazione basata su container in cui ogni istanza condivide il kernel dell'host, quindi i guest non possono caricare moduli del kernel o eseguire un sistema operativo diverso.
- LXC
- LXC è una containerizzazione nativa di Linux che isola i processi con namespace e cgroups condividendo il kernel dell'host.
- Hypervisor
- Un hypervisor è il livello software che crea ed esegue macchine virtuali, allocando CPU fisica, memoria e I/O tra di esse.
- vCPU
- Una vCPU è un processore virtuale presentato a un guest, supportato da tempo di pianificazione su un core o thread fisico.
- cloud-init
- cloud-init è il meccanismo standard per configurare una macchina virtuale al primo avvio, usando metadati forniti dalla piattaforma.