jul
KVM Nested on AMD running oVirt!
Ok, vamos voltar às grandes tecnologias…
Mexe com virtualização? KVM é o que há para um hypervisor, oVirt é a solução completa que promete.
Li as novidades sobre o oVirt uns dias atrás, e decidi que devia conhecer. Mas não quis parar tudo para usar meu PC/Servidor para bootar um oVirt Live DVD e então tentei instalar numa máquina virtual.
A gema do oVirt é o gerenciamento, que pode ser instalado separadamente da hypervisor host, mas os DVDs Live de demonstração querem usar a solução completa, incluindo virtualização. Então logo de cara ele acusou que não tinha suporte a virtualização por estar dentro de uma VM já. Mas lendo a documentação me deparei com algo que não tinha ouvido falar ainda: NESTED Virtualization!
Nested Virtualization = Virtual debaixo de Virtual. Ou seja, uma VM, neste caso usando KVM, rodando outro sistema com outras VMs dentro dela, podendo ser Linux, Windows, KVM, VirtualBox, VMWare, Hyper-V, etc.
A verdade é que uma virtualização nested é uma VM que consegue usar a tecnologia de virtualização do processador original, o hypervisor. Na configuração nested a VM também reconhece a função de virtualização do processador, e pode fazer outras máquinas virtuais ainda com a segurança dentro da VM, mas com pouca perda de performance em relação a própria VM. Na verdade há uma comunicação de hypervisor na VM com o hypervisor no HOST, que traz o filho do filho para o KVM original, com as devidas proteções. – Putz, já vi algum filme assim…
O detalhe é que não encontrei quase nenhum documentação a respeito, e foi difícil ativar essa tecnologia que já esta disponível num Ubuntu da vida há algum tempo. A maioria de minhas pesquisas me levavam a comentários e forums de 2013 pra trás, enquanto ainda estava em desenvolvimento. E, principalmente, os textos falavam apenas do processador Intel e sua marca de virtualização “vmx”, mesmo que ela tenha saído muito antes nos AMDs como “svm”, digo a função de nesting no KVM.
Então seguem minhas dicas para habilitar o KVM nested nas ultimas versões do Linux. Tudo mencionado é para AMD. Para Intel basta substituir amd por intel e svm para vmx.
Habilitar a opção de nested no modulo de kernel kvm_amd:
- Adicionar em /etc/modprobe.d/qemu-system-x86.conf:
options kvm_amd nested=1 - Adicionar em seu GRUB_CMDLINE_LINUX:
kvm-amd.nested=1
E a mais difícil de encontrar….
- Alterar a CPU no XML de sua VM KVM libvirt, em /etc/libvirt/qemu/VM.xml para:
mode=’host-passthrough’>
- Depois um comando pro virt-manager absorver o novo XML:
virsh define VM.xml
Pois é.. o virt-manager já tem uma opção de “Copy host CPU configuration“, mas ela não habilita o nesting.
Detalhes da minha config atual:
- AMD Phenom II X3 720 Processor (2.8GHz rodando a 3.1GHz)
- ECS A790GXM-AD3
- 12GB RAM (snif snif… pifou um pente de 4GB)
- Varios HDs… em md raid10 e btrfs raid10.
- Xubuntu 64 15.04
Links e Refs
- KVM
- oVirt
- Nested
- No tunel do tempo: XEN vs KVM
Cheers!
qemu:///Alroger Filho
Muito legal. Acabei de testar o sistema Proxmox VE usando Nested Virtualization. Bastou alterar o XML da VM do Proxmox que pude instalar um Lubuntu dentro dele, com toda a aceleracao. Super rapido.
setembro 27th, 2016 at 10:43 pm