LMBTIC

Soluções e Informações em TI e Comunicação

13 Dec 2021

Introducao ao Kernel Virtual Machine - KVM

Nesse post vou demonstrar o que é KVM, como funciona e o processo de criação e configuração de maquina virtual usando KVM.


O KVM (Kernel Virtual Machine) por si só, não faz muita coisa, pois ele é tecnicamente módulos do Kernel Linux. Esses módulos são responsaveis pela separação e/ou reserva de recursos de hardware (drivers) (virtio e vfio), disponibilizando esses recursos para uma interface a nivel de usuario do Kernel Linux. Com isso, o KVM é um tipo Hypervisor de virtualização, fonecendo uma virtualização completa de hardware.

Entendendo que o KVM faz essa reserva de hardware, precisa-se se criar a interface de gerencia e de uso para esses hardwares, é ai que temos as ferramentas QEMU e Libvirt.

Libvirt

Libvirt é basicamente um conjunto de ferramentas (toolkit) para gerenciar e configurar plataformas de virtualização nese caso usaremos para o KVM. Ele se comunica a nivel dos modulos do KVM e provê para o emulador da virtualização a alocação do hardware (nesse caso sera a QEMU).

QEMU

O QEMU é uma plataforma/emulador que prove a emulação da virtualização completa do Hardware feita pelo KVM ao sistema operacional a ser usado nesse hardware (ou tecnicamente sistema operacional convidado rodando nesse hardware virtualizado). Ou seja, o QEMU que roda junto com o KVM, é um emulador de virtualização para o hardware, que é definido pelos módulos do KVM.

Como instalar?

Depende da distro Linux que voce for utilizar para ser maquina servidor. Abaixo a documentação para as principais distros:

Configuração

No meu cenario de testes/laboratorio eu utilizei o meu notebook (com interface grafica) que é o hospedeiro (collocation) ou seja, é como se eu estivesse atuando fisicamente na frente de um server de virtualização.

Certifique se dos pontos abaixo:

  • A virtualização precisa estar habilitada na BIOS da placa mae do servidor

  • Processador do servidor precisa ter suporte a comunicação com o modulo KVM do Kernel Linux. (kvm-intel.ko (vmx) ou kvm-amd.ko (svm)). Para verificar, rode na CLI da distro linux do server o seguinte comando:

    grep --color --perl-regexp 'vmx|svm' /proc/cpuinfo

  • Valide se esta tudo OK com o sistema e hardware utilizando uma das ferramentas da Libvirt com o comando abaixo:

    • virt-host-validate (Se FAIL, não irá funcionar e provavelmente a virtualização toda estará comprometida, … se WARN, siga as instruções para corrigir )

Criando uma VM com KVM e libvirt

Tendo validado essas condições, vamos utilizar uma das ferramentas do Libvirt (virt-install). Abaixo o ccomando completo para uma criação simples de amaquina virtual e mais abaixo, explico o que cada parametro/comando faz:

virt-install --virt-type kvm --name vm-teste --os-variant debian9 --memory 512 --vcpus=1 --cdrom=/kvm-labvms/debian-9.13.0-amd64-netinst.iso --graphics vnc --disk path=/kvm-labvms/vm-teste.raw,size=4,bus=virtio,cache=none,format=raw  

--virt-type kvm -> selecionamos o tipo de virtualização (kvm no caso) se não houver suporte, nessa flag deve ser usado qemu, (emulação de hardware)  

--name vm-teste -> parâmetro para definir o nome  

--os-variant debian9 -> seleciona o SO para definir parametros especificos e se é suportado. Para você verificar se existe suporte e qual o nome, instale o pacote libosinfo-bin e use o comando osinfo-query os então procure o SO na lista.  

--memory 512 -> quantidade de memória RAM  

--vcpus=1 -> quantidade de CPUs Virtuais  

--cdrom=/kvm-labvms/debian-9.13.0-amd64-netinst.iso -> é um tipo de “montagem de disco” para buscar a imagem do sistema operacional a ser instalado  

--graphics vnc -> modo grafico (caso tenha suporte a X no server) usando o vnc no caso.  

--disk path=/kvm-labvms/vm-teste.raw,size=4,bus=virtio,cache=none,format=raw -> Parametros do HD da maquina virtual, como caminho, tamanho do disco, tipo do disco sem cache (melhor desempenho) e o formato raw (formato puro, literal, ou seja, o espaço determinado é reservado por inteiro. É possivel usar .qcow2 para ter acesso a discos dinamicos e poder gerar snapshot e outros… porem o desempenho de alto nivel, é menor)  

Apos definir os parametros e apertar enter, ira abrir outra ferramenta da libvirt para fornecer a interface grafica via vnc, o virtviewer (isso caso voce tenha interface grafica no servidor, caso não, siga esse post

 

Validando se esta rodando KVM na VM

Após instalar o SO Linux no caso, voce pode validar se esta rodando KVM, utilizando o comando abaixo:

hostnamectl && lscpu

 


Esse post foi criado com base no meu video que se encontra no YouTube, caso queira acompanhar, tem algumas informações complementares!

 


Caso tenha alguma duvida ou se te ajudou, deixe nos comentarios logo abaixo. Tks! :)

Comments: