terça-feira, 20 de junho de 2023

Dica - Proxmox - Como fazer uma virtualização aninhada (ou "nested virtualization" ou VM dentro da VM) no Proxmox!

Pessoal,


Fui tentar dar uma melhorada no sistema (veja aqui) onde estou instalando os Windows antigos da série "Nostalgia 2.0".

Na verdade é só uma elucubração mental depois que eu percebi que deveria ter instalado o Xubuntu e não o Ubuntu no note véio. O Xubuntu é bem mais leve que o Ubuntu e, apesar que não faz nenhuma diferença para DOS, Windows 3.1 ou talvez até Windows XP, pode fazer alguma diferença para o Windows 7... Além disso, como o Xubuntu corre no Proxmox que suporta FHD e o Ubuntu do note véio só suporta HD, daria pra ter uma imagem melhor para as VMs.

Bom, aproveitei que já tinha instalado uma VM de Xubuntu no Proxmox e fui tentar instalar alguma VM dentro dele e recebi uma mensagem no VirtualBox que o VT-X não estava ativado. Achei muito estranho avisar que o VT-X não estava ativado, uma vez que eu havia ativado ele na BIOS para permitir a instalação de VMs no Proxmox!

Bom, VT-X é o nome da Intel para a tecnologia de virtualização para o x86. A gente usa o nome VT-X tanto para processadores Intel quanto AMD, mas o nome da mesma tecnologia para os AMD é "AMD-V". No final dos anos 1990, a virtualização nos x86 era obtida através de softwares complexos e dispendiosos para compensar a falta de hardware eficaz com o objetivo de ter um desempenho razoável. A primeira empresa a fazer isso foi a VMWare, seguida pela Microsoft. Nos anos 2000, tanto a Intel (em 2005) quanto a AMD (em 2006), lançaram processadores com suporte a virtualizações, com melhorias significativas no desempenho das VMs (veja mais aqui).

Voltando ao nosso post.

Aí a ficha caiu: eu estava fazendo uma "nested virtualization"ou "virtualização aninhada" ou ainda "uma máquina virtual correndo dentro de outra máquina virtual"!

Assim, preciso avisar para a VM do Xubuntu que ela vai hospedar uma uma VM.

A primeira coisa é saber se o hypervisor Proxmox já está com a virtualização ativada. Para isso, dê o comando abaixo se o seu processador for Intel ou o comando mais abaixo se for AMD:
# cat /sys/module/kvm_intel/parameters/nested
# cat /sys/module/kvm_amd/parameters/nested
A resposta pode ser "N" ou "0" caso não esteja ativado ou "Y" ou "1" caso esteja ativado:


Se não estiver ativado, use o comando abaixo para ativar (se for Intel) ou o mais abaixo (se for AMD):
# echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf
# echo "opções kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf
Após fazer isso, reinicie seu hypervisor.

A segunda coisa é saber se o VT-X está ativado na VM. Para isso, use o comando abaixo no Shell do Proxmox:
# egrep --color -i "svm|vmx" /proc/cpuinfo
Se não tiver nenhuma resposta, é porque não está ativo. No meu caso, veio isso aqui:


Reparem que veio "vmx" anotado em vários locais em vermelho. Assim, o meu já está ativo.

Se o seu não der nenhuma saída, é necessário ativar o VT-X. Podemos fazer isso de dois modos, pela linha de comando ou pela interface do Proxmox.

Primeiro, desligue a VM que você quer ativar isso.

Se optar pela linha de comando, dê o comando abaixo:
# qm set <VMID> --cpu host
Onde <VMID> é o número da VM que você quer ativar. No meu caso, a VM é a 104 (vai ter foto mais pra baixo), então o meu comando seria:
# qm set 104 --cpu host
Se optar pela interface gráfica do Proxmox, também em bem simples. Clique na VM que deseja habilitar e vá em Hardware -> Processors -> Edit:


Na tela que abrirá, vá em Type e mude para "HOST". Dê ok para confirmar e salvar.


Se agora você der o comando abaixo, deve aparecer que o VT-X está ativado:
$ egrep --color -i "svm|vmx" /proc/cpuinfo
Se aparecer "vmx" (tecnologia Intel-VT) ou "svm" (tecnologia AMD-V) na saída, o recurso VT-X está ativado e sua VM agora se tornou um hypervisor.

É isso!

Nenhum comentário:

Postar um comentário