KVM, uma alternativa ao VMware, VirtualBox, Citrix Zen

Virtualização, algo que era uma tendência e hoje tornou-se realidade. É dificil encontrar nos dias de hoje um ambiente do qual não seja parte ou totalmente virtualizado. Desafio ainda mais, levante a mão quem nunca subiu uma máquina virtual para subir um S.O. diferente ou até mesmo testar alguma coisa?!

Pois bem, atualmente players para tais soluções não faltam. VMware, Citrix, VBox, são somente alguns dos mais conhecidos e utilizados, além de diversos outros menos conhecidos que se encontram pela Internet.

Durante meu período de trabalho em um órgão do Governo do Estado de SP, me deparei com uma demanda que devo confessar, bem interessante. Como é de conhecimento de muitos, órgãos do Governo são sempre difíceis de lidar em relação a recursos, principalmente tratando de tecnologia e inovação. Sério, nada mole.

Basicamente, possuíamos um serviço completo de proxy e link de dados, fornecido pela provedora. O contrato acabou e somente o link tinhamos como serviço no momento. Portanto, vamos correr para fazer um proxy neste meio. Até ai, tudo bem, mas com o que? Ok ok, vocês vão me falar usa squid, bom, estável e opensource. Perfeito, foi inclusive a solução que utilizamos, mas eu pergunto a vocês, em qual equipamento vou subir? Me refiro ao hardware de fato, onde? Sendo que tinhamos demandas de servidores de aplicação e tudo mais. Misturar tudo isso ia ser uma lambança! Não ia dar certo. Conseguimos comprar um servidor modular HP, bem legal devo confessar, conseguimos por um preço muito bom. Mas e ai, temos 1 servidor e vários serviços a subir neste. Detalhe, aplicações de diferentes plataformas Microsoft. Solução: Virtualização!

Legal, toda essa história para chegar ao KVM! Foi este o meu primeiro contato com esta solução. Já como vocês sabem o parto para conseguir um servidor, imaginem uma licença de Vmware ESX, Citrix ou até mesmo o HyperV da Microsoft. Esquece! Heis então, um colega de trabalho me apresentou o KVM!

Um Pouco de História do KVM

kvmbanner-logo2

O Kernel-based Virtual Machine é uma infraestrutura de virtualização, integrada ao Linux. Atualmente a KVM suporta virtualização nativa usando Intel VT ou AMD-V. Suporte limitado a paravirtualização também está disponível para hóspedes Linux e Microsoft Windows na forma de um driver de rede paravirtual,1 um driver de dispositivo de entrada/saída (disco),2 um driver recipiente para afetar a operação do gerenciador de memória virtual do hóspede,3 e otimizações de processamento para hóspedes Linux.

Atualmente transportes para as arquiteturas s390,4 PowerPC,5 and IA64 estão sendo desenvolvidos.

A primeira versão da KVM foi incluída no Linux 2.6.20 (Fevereiro de 2007).6 Também foi transportada para o FreeBSD como um módulo de núcleo carregável.7 (Retirado de Wikipedia)

O cara por trás do KVM é o chamado Libvirt e seu virtualizador de fato, o QEMU . Enquanto o LibVirt é responsável por fazer a interface entre o virtualizador e a apresentação do sistema de fato, o QEMU virtualiza todo o sistema.

Libvirt_support.svg

 

Enfim, muito bla bla blá e pouca ação. Vamos mãos a obra!

“Subindo e configurando um KVM”

Antes de instalar o KVM em sua máquina, verifique se o seu processador possui as instruções de Virtualização:

egrep ‘(vmx|svm)’ –color=always /proc/cpuinfo

egrep: Buscador de termos em sistemas Linux/Unix

‘(vmx|svm)’: Busca pelos termos vmx/svm que são os termos para reconhecimento de suporte a virtualização

–color=always: Destacar em cores

/proc/cpuinfo: Arquivo que contém as informações de CPU no Linux

Você deve receber uma saída parecida com a seguinte:

egrep

As letras coloridas em destaque indicam os termos dos quais solicitamos a busca (vmx/svm). No meu caso, o servidor de teste é um Athlon X2 5200, do qual já possui as instruções de virtualização. Caso você efetue a busca e nenhum valor seja retornado, é provável que seu processador não possua as instruções de virtualização.

O KVM consegue trabalhar sem essas instruções, mas com um desempenho muito abaixo do padrão. Recomenda-se utilizar em processadores que possuam tal função.

Vamos lá. A maioria das distros Linux já vem preparada com seus repositórios com as dependências do KVM

like-Debian: apt-get install kvm qemu

Red Hat/CentOS: yum install kvm kvm-mod qemu libvirt

(Talvez em versões mais recentes de distros, o libvirt já esteja “embutido nos pacores do kvm ou qemu, talvez sua instalação via yum não seja necessária)

Após sua instalação, é necessário adicionar os grupos do KVM para suas devidas permissões:

Você tem duas maneiras de utilizar seu KVM:

1 – Tudo via Linha de Comando:

Toda a administração feita via Shell, inclusive criação de máquinas, start de VM’s, criação de interfaces, etc.

Exemplos:

qemu-img create -f qcow2 disk.img 5G – Criação de um disco com 5G de tamanho.

qemu-kvm -hda win2k.img -cdrom win2k.iso -m 512 -boot d – Iniciar uma Vm com o disco win2k.img e “bootar” via cdrom pela imagem win2k.iso com memória de 512.

2 – Modo simples e prático, utilize o Virt-manager!

apt-get install virt-manager

yum install virt-manager

Aqui está ele!

virt-manager

 

Neste exemplo, estou usando ele através do putty for Windows através de um forward ssh com o Xming.

Perai perai!! Muita informação, que que é SSh com Xming e esse putty ai no meio???? Calma, vamos lá:

Putty – Cliente para Windows para conexões Telnet, SSH, Console, enfim, a grosso modo, para se conectar a servidores através de shell’s remotos de forma fácil (Até porque pra instalar um cliente ssh no Windows nativamente é um parto!)

SSH – Secure Shell é um modo criptografado (Também um protocolo) de se administrar shell’s remotamente. Diferente de seu antecessor, o telnet, o SSH trabalha com trocas de chaves e, desta forma, consegue ter comunicação de forma criptografada.

Xming – Exibe janelas GTK, ou seja, através deste programa, é possível exibir as telas de outros computadores como se estivessem localmente em seu computador Windows. Neste caso, meu servidor que possui instalado o KVM e Virt-manager, mas quem exibe seu conteúdo é o Xming na minha máquina Windows tudo através do Forward SSH.

 

Através do Virt-manager, é possível a criação de novas Máquinas Virtuais de forma simples e rápida. Mesmo que seu servidor não possua um servidor Gráfico como Gnome ou KDE, através do Forward SSH você pode administrá-lo com o Virt-manager utilizando o servidor gráfico da máquina cliente sem nenhum problema.

kvm-virt-manager

 

As opções do Virt-manager são inúmeras. Desde administrar completamente seu ambiente virtualizado até mover “a quente” dois ambientes KVM trocando ou duplicando VM’s entre servidores.

Não quero fugir muito do escopo deste tópico, caso vocês estejam interessados nas opções por trás do Virt-manager, posso futuramente dedicar um Post somente tratando suas funcionalidades. Para não fugirmos muito da ideia, vamos criar o básico para subir uma máquina virtual no Virt-manager.

Após criada uma Máquina virtual e seguir as instruções passadas, é hora de criar interfaces Bridge. Afinal de contas, não é só com interfaces NAT que um sistema de virtualização vive. Neste caso temos duas opções.

1 – Subir na mão no arquivo /etc/network/interfaces

Like-Debian –

#br2 interface fast 10/100
auto br2
iface br2 inet dhcp
bridge_ports eth1
bridge_stp on
bridge_fd 0

CentOs –

DEVICE=”br0″
NM_CONTROLLED=”yes”
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.100
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=”System br0″

A primeira configuração o IP encontra-se como DHCP, já na segunda está configurado para um endereço estático 192.168.0.100.

2 – Uma nova função recente do Virt-manager, criar pela própria interface (Mais fácil):

connection-details

 

connection-details2

 

Pronto! Agora é só usufruir de suas Vm’s! Utilizar interfaces Nat, Bridge quando necessário.

Conclusão

Apesar de alguns deficits e ser um projeto em constante evolução, o KVM é uma ótima alternativa a uma solução de virtualização tanto caseira quanto de produção de fato. É uma solução muito estável e confiável. Não há como compará-lo com as soluções de mercado, obviamente possuem muito mais features e principalmente suporte, mas dependendo do seu cenário, é uma ótima solução para sua necessidade.

Dúvidas, perguntas, dicas, críticas? Fique a vontade para comentar!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *