Virtualização com o KVM

Virtualização baseado no KVM (Kernel-based Virtual Machine), usando como distribuição o CentOs 6.x.

O KVM é um software para virtualização de máquinas que possuam a tecnologia Intel VT-X e AMD-v, ou seja, onde o processador da suporte a virtualização.

Virtualizar, é rodar outro sistema Operacional real sobre uma máquina já instalada através do software de Virtualização, que neste caso o KVM.

Em Posts posteriores tenho intenção de abordar outros que já testei como Xen, Xen Server Open da Citrix , VMware Esx, OpenVaz , etc.

Como todo software no Linux, ele é open , e bem estável.

Uma vantagem do KVM é que se tratando de Desktops, é a facilidade de instalação e de criação das máquina virtuais, que se comparado com o VMware por exemplo, tem um desempenho melhor, enquanto o VMware ocupa todo tempo de processar enquanto a VM está ativa, o KVM gerencia isso melhor de forma que não uso todo o tempo do processador.

O KVM trabalha junto com o QEMU. O QEMU é um software de emulação, e não precisa de suporte de hardware a virtualização (VT-x,Vsm), mas em conjunto com o KVM que da suporte a virtualização diretamente no kernel, em substituto ao Kqemu, para aceleração , usado para virtualizar instruções , o ganho na performance é significativa.

No Virtualização temos o conceito de Host (hospedeiro) e Guest máquina virtualizada. O papel de Host será o servidor com KVM, e o papel de Guest será feito pelo Qemu, que será vista como um, ou mais processos na maquina host, dependendo da quantidade de maquinas virtuais.

A implantação, simplesmente é muito fácil, e ainda possui ferramentas de gerenciamento. Então vamos ao que importa instalação.

Instalando o KVM

Como disse anteriormente , utilizei a Distribuição CentOs, para variar um pouco, mais fiz os teste também com distribuições Like Debian, no caso Debian 6 e funcionou perfeitamente.

O primeiro comando a ser dado é em relação à verificação do hardware de sua máquina. Veremos se o mesmo tem suporte a virtualização por hardware, verificando as features do processador.

cat /proc/cpuinfo | grep -E “vmx|smv” –color

 

flags                      : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni vmx ssse3 cx16 sse4_1 sse4_2 popcnt hypervisor lahf_lm ida dts tpr_shadow vnmi ept vpid

Em meu caso ainda fiz teste usando o VMware Workstation, para virtualizar o CentOs, e passar o suporte da Hardware para o KVM. Para habilitar essa feature você deve instalar o VMware Workstations 7 ou 8 para Windows ou Linux, criar a máquina virtual normalmente, e nas configurações e propriedade do Processador marcar o item : “Virtualize Intel VT-x / EPT or AMD –V/RVI. Veja abaixo a figura:

kvm

Mas obviamente se você instalou sua máquina real, não terá problemas algum, desde que o processador tenha o suporte a virtualização.

Como estamos lidando com CentOs, estamos falando de pacotes rpm. Deve-se configurar os repositório em /etc/yum.repos.d. Normalmente já vem configurado, basta importamos as chaves com o comando :

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Nossos repositórios já estão configurados, esse é o momento de começarmos a instalar.

yum updateyum install kvm kmod-kvm qemu libvirt python-virtinst virt-managerreboot

Depois de subir o sistema, o módulo do kernel já deverá ter subido automaticamente, para conferir execute o comando abaixo:

lsmod | grep kvm

O retorno será algo como kvm_amd ou km Intel.

O kvm tá instalado, vamos testar, e verificar se já está tudo ok. No comando abaixo, podemos listar as nossas virtualizações já instaladas, que no nosso caso não existe ainda:

#virsh -c qemu:///system listId    Nome                           Estado—————————————————-

 

2     debian                         executando

No meu caso já tenho uma máquina instalada, mas  no caso de uma recém-instalação somente a primeira linha do comando irá ser retornado.

Isto demonstra que o Kvm já está funcional. Antes de começarmos a utilizar , e fazer novas instalações, devemos configurar alguns itens, entre ele a interface de rede virtual, as permissões do SE Linux.

Vamos começar com a rede, no meu caso eu tenho uma interface eth2, com a seguinte configuração no /etc/sysconfig/network-scripts/ifcfg-eth2:

DEVICE=eth2HWADDR=00:0c:29:ea:bc:f5

 

ONBOOT=yes

BRIDGE=br0

Agora devemos criar o arquivo de configuração da br0, em /etc/sysconfig/network-script/ifcfg-br0 com abaixo:

DEVICE=br0ONBOOT=yesTYPE=Bridge

 

BOOTPROTO=none

IPADDR=192.168.0.102

NETMASK=255.255.255.0

STP=on

DELAY=0

Depois disso podemos reiniciar a serviço de rede:

service network restart

A segunda parte é verificar se o SE Linux está desabilitado, edite o arquivo /etc/selinux/config e alterar a linha , conforme abaixo:

SELINUX=disable

É necessário configurar o SE Linux para que o KVM tenha  acesso às mídias, e dispositivos do Linux. Este é assunto para outro Post, por isso só desabilitamos.

Abra agora o virt-manager, e verifique se a conexão br0 já costa nas conexões, basta ir em Editar->Connection Details->Network interfaces. A sua tela deve estar igual a figura abaixo, caso não esteja altera para que fique:

virt2

Agora sim, podemos fazer nossas instalações.

Instalando um sistema no KVM

Lembre-se de ter espaço e memória para poder fazer a instalação. A interface de instalação utilizada é o virt-manager. Mas podemos executar muitos comandos por linha de comando também.

Vamos a nossa primeira instalação, nesse momento utilizarei linha de comando:

virt-install –connect qemu://system –n Servidor –r 512 –vcpus=1 –f /dev/sda1 –c /mnt/iso/debian6.iso –vnc –noautoconsole  –os-type linux –os-variant debiansqueeze –accelerate –network=brigde:br0 -hvm

Vamos esclarecer o que é cada opção do virt-install. Primeiramente o virt-install, é utilizado para criar novas maquina virtuais.

  • –connect :                               conectar no hipervisor ( podendo ser para o Xen /proc/xen, kvm  será qemu://system)
  • -n  :                              Nome da maquina virtual
  • -r:                                 Quantidade de memoria em MB
  • –vcpus:                     Número de processadores
  • -c:                                path do cdrom
  • –os-type:                 Qual tipo se Sistema Operacional, como Linux e Windows.
  • –os-variant              Qual versão do Sistema ( debiansqueeze,debianlenny, winxp64,vin2k8
  • -f                                  Arquivo de Disco , podendo ser um dispositivo como vista acima, ou uma imagem como exemplo de baixo
  • –network:                               Qual tipo de interface será usada , podendo ser bridge, nomedarede, e user.

Abaixo um novo exemplo, mas agora utilizando um imagem.

virt-install –connect qemu:///system -n debian -r 512 –vcpus=1 -f /mnt/vm/debian.img -c /mnt/hgfs/Iso/debian-6.0.4-amd64-CD-1.iso –vnc –noautoconsole –os-type linux –os-variant debiansqueeze –accelerate

Para criar uma imagem com 1200 MB , execute o comando “dd if=/dev/zero of=/caminho/imagem.img bs=100M count=12”.

virt3

Depois de criado você poderá executar o virt-manager e gerenciar via interface gráfica à instalação do sistema operacional, no caso , debian lenny.

Esse procedimento visto acima, também poderá ser feito através do próprio virt-manager. Basta seguir os passos abaixo:

  • Clique no botão Create a New virtual Machine ( primeiro botão)
  • Em Name coloque o nome para o Guest ou Máquina Virtual , e abaixo escolha o método de instalação (Local install Média (iso ou CDROM), Network, Network Boot ou Importar)
  • Dependendo do método de instalação, informe o caminho , informa o OS Type e Version ( os mesmos que vimos antes para os-type e os-variant)
  • Informe a quantidade de memória e CPUs
  • Tamanho do Disco e se for o caso onde será criado marcando Select managed or other existing storage( Você pode deixar configurado um padrão para o virt-manager em Editar conexões)
  • Concluir ( Em advanced é possível alterar a placa de rede)

E com isso está pronto e já iniciará o processo de instalação.

Um aplicativo interessante para uso das VMS é o virsh.

Através do Virsh é possível criar, deletar, executar, parar e gerenciar suas maquina virtuais. Vejamos algumas opções do virsh.

Para conectar e visualizar as máquinas no domínio :

virsh –c qemu:///system

 

virsh # list Id    Nome                           Estado

—————————————————-

6     debian                         parado

Iniciar ou parar uma máquina virtual

virsh shutdown debianvirsh start debian

Em ambos os comandos acima o virsh foi executado diretamente do shell, por isso a necessidade de chama-lo novamente através do virsh. Se já estivesse conectado ao mesmo, bastaria executar start debian, por exemplo. Temos ainda:

  • shutdown
  • reboot
  • resume
  • suspend
  • start

Podemos usar uma máquina já criada como base:

virsh dumpxml debian >/tmp/novodebian.xmlvirsh create /tmp/novodebian.xml

Neste caso acima, antes da criação da maquina virtual, deve-se editar o arquivo mudar nome onde aparecer debian para novodebian por exemplo, uuid, e a imagem deve ser outra, e deverá ser criada via dd, como feito anteriormente.

Para visualizar detalhes sem editar, depois da criação da máquina virtual

virsh dumpxml novodebian

Quando o arquivo xml, foi alterado, deve-se importá-lo novamente:

virsh define debiannovo

Enfim para deletar uma máquina virtual:

virsh destroy debiannovovirsh undefine debiannovo

Existem muito outros comando que podem ser executados com o virsh, desde configuração de Storage, até rede.

Obviamente o virt-manager existe para facilitar a administração dessas maquina, então é muito mais fácil fazer pelo próprio virt-manager. Para mais informações execute “man virsh”.

Conclusão

Vimos neste Post, que o KVM é uma alternativa para virtualização muito boa. Ainda não comparamos com outros sistemas, mas teremos novos Posts a respeito.

Particularmente já teste o Xen, Xen Server Citrix, VMware Esx entre outros e o KVM se mostrou tão bom quanto.

E ainda devemos levar em conta que ele somente funcionará ou executará , se o processador suportar virtualização. Caso contrario você deverá optar por um software que não necessite disso, como somente o qemu , VMware Workstation ou Oracle Virtual Box.

Muito mais fácil de gerenciar , que muitos outros sistemas de virtualização.

Então , em minha conclusão, vale a pena testar e botar para rodar em produção.

Espero que tenham gostado desse Post, e até a próxima.

Veja mais do virsh em http://manpages.ubuntu.com/manpages/karmic/en/man1/virsh.1.html

 

Fonte: http://stato.blog.br/wordpress/virtualizacao-com-o-kvm/

.