Virtualização
O que é 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.
Porque é que Nested virtualisation importa
É necessária para Proxmox VE, trabalhos de CI baseados em VM e algumas configurações Docker. Muitos fornecedores desativam-na, que é a razão habitual para essas cargas de trabalho falharem noutros locais.
Nested virtualisation na prática
Quando usas virtualização aninhada, arrancas um hipervisor dentro de um convidado KVM e passas as extensões de virtualização do CPU do host. Verificas /proc/cpuinfo no convidado para as flags svm ou vmx. Se estiverem ausentes, o teu hipervisor interior cai em emulação por software, o que pode cortar a performance por uma ordem de grandeza. Pode também precisar de ativar o tipo de CPU 'host' em vez de um modelo genérico para obter essas flags. Se errares, o teu workload Proxmox ou CI arrasta.
O que se costuma entender mal sobre Nested virtualisation
Assume-se que a virtualização aninhada só importa para correr SOs completos como Windows numa VM. A correção: também parte a rede overlay padrão do Docker e certos módulos do kernel, porque dependem de funcionalidades de virtualização no convidado. Portanto, um workload de containers pode falhar num fornecedor que desative o aninhamento, mesmo que nunca pretendas correr uma VM.
Nested virtualisation — perguntas frequentes
Posso correr Docker dentro de uma VM aninhada?
Sim, e esta é a razão mais comum para precisar de virtualização aninhada. A rede bridge padrão do Docker usa iptables e módulos do kernel que podem comportar-se de forma diferente sem extensões de virtualização do CPU expostas. Os nossos planos KVM incluem virtualização aninhada, por isso os teus containers Docker funcionam como esperado.
Como verifico se a virtualização aninhada está ativa?
Dentro da tua VM, executa grep -E '(svm|vmx)' /proc/cpuinfo. Se vires as flags, o aninhamento está disponível. Se não, o hipervisor não as está a expor, o que normalmente significa que o fornecedor o desativou.
Onde Nested virtualisation surge
- Posso executar virtualização aninhada num VPS? Sim. A virtualização aninhada está ativada em todas as instâncias OnionVPS, para que possa executar convidados KVM dentro da sua instância, instalar o Prox…
- Qual é o VPS mais barato que é realmente utilizável? Cerca de $4 por mês compra 1 vCPU, 1 GB de RAM e 20 GB de NVMe em virtualização KVM real. Isso é genuinamente suficiente para uma VPN WireGuard, um resolve…
- O que é a virtualização KVM? KVM (Máquina Virtual Baseada no Kernel) é virtualização completa de hardware integrada no kernel Linux, usando extensões do processador para executar cada …
- KVM vs OpenVZ: porque é que o tipo de virtualização importa KVM é virtualização completa de hardware: a sua instância executa o seu próprio kernel e não consegue ver o anfitrião. OpenVZ e LXC são tecnologias de cont…
Mais de virtualização
- KVM
- KVM é virtualização completa de hardware integrada no kernel Linux, dando a cada convidado o seu próprio kernel e isolamento imposto por hardware dos outros inquilinos.
- OpenVZ
- OpenVZ é virtualização baseada em contentores em que cada instância partilha o kernel do anfitrião, pelo que os convidados não podem carregar módulos do kernel nem executar um sistema operativo diferente.
- LXC
- LXC é contentorização nativa do Linux que isola processos com namespaces e cgroups, partilhando o kernel do anfitrião.
- Hipervisor
- Um hipervisor é a camada de software que cria e executa máquinas virtuais, alocando CPU física, memória e I/O entre elas.
- vCPU
- Uma vCPU é um processador virtual apresentado a um convidado, suportado por tempo de agendamento num núcleo físico ou thread.
- cloud-init
- cloud-init é o mecanismo padrão para configurar uma máquina virtual no primeiro arranque, usando metadados fornecidos pela plataforma.