29
jul

KVM Nested on AMD running oVirt!

kvmbanner-logo2Ok, 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 intelsvm 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

Cheers!

qemu:///Alroger Filho

One Response to “KVM Nested on AMD running oVirt!”

  1. 1
    Alroger Filho Says:

    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.

© 2017 Cafe TI – pra perder o sono. | [RSS] Artigos and [RSS] Comentários

Design by Web4 Sudoku - Powered By Wordpress