Skip to main content

Virtualização Aninhada (Nested Virtualization)

Regiões

Este recurso está disponível nas seguintes regiões:
br-se1
br-ne1

A virtualização aninhada permite a execução de máquinas virtuais (VMs) dentro de uma VM já provisionada na plataforma.

Esse recurso é suportado para workloads baseados em Linux, utilizando hipervisores compatíveis com KVM.

Atenção!

Para instâncias Windows Server, a execução de hipervisores baseados em Hyper-V não é suportada.

Visão geral

Instâncias Linux suportam virtualização aninhada para execução de hipervisores baseados em KVM.

Esse modelo permite:

  • Criação de ambientes de virtualização dentro da VM
  • Execução de VMs adicionais (nível L2)
  • Testes de sistemas operacionais e cenários isolados

Pré-requisitos

  • Instância Linux provisionada (Ubuntu 22.04 ou superior recomendado)
  • Acesso via SSH com privilégios administrativos

Passo a Passo

1. Provisionar a VM na plataforma

Crie uma VM Linux normalmente via:

  • Console
  • CLI (mgc)
  • Terraform

Exemplo via CLI (ajuste para seu ambiente):

mgc virtual-machines instances create \
--name="vm-nested-linux" \
--machine-type.name="BV4-8-40" \
--image.name="cloud-ubuntu-22.04 LTS" \
--ssh-key-name="sua-chave-ssh" \
--availability-zone="br-se1-a"

Requisitos importantes da VM:

RequisitoValor mínimo
Sistema operacionalLinux (Ubuntu recomendado)
vCPU≥ 2
RAM≥ 4 GB
ImagemImagem oficial da plataforma
AcessoSSH configurado

2. Acessar a VM

ssh ubuntu@<ip-publico>

3. Validar suporte à virtualização

egrep -c '(vmx|svm)' /proc/cpuinfo

Um valor maior que 0 indica suporte à virtualização.

Em seguida, execute:

kvm-ok

Caso o comando kvm-ok não esteja disponível, instale o pacote necessário:

sudo apt install cpu-checker

Saída esperada:

INFO: /dev/kvm exists
KVM acceleration can be used

4. Validar módulo de virtualização aninhada

cat /sys/module/kvm_intel/parameters/nested

Resultado esperado: Y


5. Instalar QEMU e ferramentas de virtualização

sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst cpu-checker cloud-image-utils

6. Verificar status do serviço libvirt

sudo systemctl enable --now libvirtd

virsh list --all

Resultado esperado:

Id Name State
--------------------

Uma saída vazia indica que o serviço está ativo, sem VMs criadas ainda.


7. Criar uma VM interna (L2)

O comando abaixo cria uma máquina virtual dentro da VM Linux utilizando uma imagem ISO remota do Ubuntu:

sudo virt-install \
--connect qemu:///system \
--name ubuntu-l2-test \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/ubuntu-l2-test.qcow2,size=20 \
--os-variant ubuntu18.04 \
--cdrom https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso \
--network network=default \
--graphics vnc,listen=0.0.0.0

8. Validar execução da VM interna

sudo virsh list --all

Resultado esperado:

Id Name State
---------------------------------
1 ubuntu-l2-test running

✔️ A VM interna está em execução dentro da sua instância Linux.


Limitações

  • Virtualização aninhada é suportada apenas para workloads Linux baseados em KVM
  • Hyper-V não é suportado em instâncias Windows Server