Você está na página 1de 4

KVM: uma opção fácil ao VirtualBox e ao VMware

Publicado em 02/03/2009 – 10:13 


por Carlos Morimoto

Embora seja um software open-source bastante antigo e conhecido, o Qemu nunca foi muito
usado, pois era muito lento. Diferente do VMware e do VirtualBox, que são virtualizadores,
capazes de rodarem outros sistemas operacionais com um overhead relativamente baixo, o
Qemu é um emulador, que funciona de forma similar aos emuladores de consoles antigos,
que usamos para rodar jogos de SNES e Mega-Drive no PC.

Em vez de utilizar um sistema de virtualização, ele tenta processar todas as instruções, o


que acaba demorando mais tempo e fazendo com que a performance seja menor. Em geral,
o VMware consegue fazer com que o sistema guest rode com de 70 a 90% do desempenho
que teria se estivesse rodando diretamente, enquanto que o Qemu obtém de 5 a 10%.

Em 2005 o Qemu ganhou um módulo adicional, o Kqemu, um "acelerador" que faz com que
ele passe a ser capaz de virtualizar as instruções, passando a oferecer um desempenho
muito melhor. O Kqemu melhorou consideravelmente o desempenho do Qemu, mas, ainda
assim, ele continuou atrás do VMware em questão de desempenho. Como o Kqemu era um
componente proprietário, ele continuou sendo pouco usado.

O segundo salto veio em 2007, com o lançamento do KVM


(http://kvm.qumranet.com/kvmwiki), um sistema de virtualização incluído diretamente no
Kernel, disponível a partir da versão 2.6.20. O KVM substituiu o Kqemu como "acelerador" e,
por ser licenciado sob a GPL, passou a ser desenvolvido de forma ativa, incorporando
melhorias rapidamente, se tornando uma opção viável de virtualização, que passou a ser
cada vez mais usado em servidores, concorrendo com o Xen, o VMware e o Virtuozzo.

Em se tratando de desktops, a principal vantagem do KVM é a facilidade de instalação e de


criação das máquinas virtuais, combinada com o baixo impacto sobre o desempenho do
sistema host, diferente do VMware, onde o processador fica ocupado o tempo todo enquanto
a VM está ativa, mesmo que nada esteja sendo feito dentro dela.

O KVM pode ser instalado rapidamente sobre praticamente qualquer distribuição atual (com
kernel 2.6.20 ou mais recente); basta procurar pelos pacotes "kvm" e "qemu". No caso do
Debian Lenny e do Ubuntu 8.10, você pode instalá-los diretamente via apt.

O primeiro passo é instalar os dois pacotes. A grande vantagem do KVM é que, por ser um
virtualizador open-source, ele é bastante simples de instalar nas distribuições atuais. O
módulo vem incluído diretamente no kernel e os demais componentes podem ser instalados
usando o gerenciador de pacotes:

# apt-get install kvm qemu

Depois de instalar, adicione o usuário que estiver utilizando no grupo "kvm", para que ele
tenha permissão para usar o acelerador:

# adduser gdh kvm

Com isso a instalação está concluída. Falta apenas começar a criar os discos virtuais e rodar
as VMs. Assim como no caso do VMware, o KVM suporta o uso de discos virtuais dinâmicos,
que começam como arquivos vazios e vão crescendo conforme você instala coisas dentro da
VM. O comando para criar os discos virtuais é o "qemu-img create nome.img -f qcow
tamanho", como em: $ qemu-img create ubuntu.img -f qcow 10G

Este comando deve ser executado com o seu login de usuário (e não mais como root), já que
ele é quem deve ser o dono do arquivo. Se você criar as imagens usando o root, você não
terá permissão para escrever dentro dos arquivos ao usar o KVM, o que vai fazer com que a
instalação dentro da VM falhe com uma mensagem "não é possível escrever no disco", ou
similar.
Como pode imaginar, o "ubuntu.img" é o nome do arquivo e o "10G" é o limite máximo de
tamanho para o disco virtual. Ele é originalmente criado como um arquivo vazio, que ocupa
apenas alguns kbytes e pode crescer até o limite especificado.

É recomendável agrupar os discos virtuais em uma mesma pasta, para fins de organização,
mas isso fica a seu critério. Se quiser espelhá-los pelo HD, não há problema. :)

Com o disco virtual criado, falta apenas inicializar a VM usando o CD/DVD ou a imagem ISO
com o sistema de boot e começar a instalação do sistema.

O comando agora é o "kvm", seguido pelo arquivo ISO com a imagem de boot (pode ser
tanto o ISO de uma distribuição Linux quanto uma imagem de uma mídia de instalação do
Windows), seguido pelo disco virtual que será usado, a quantidade de memória RAM
reservada à VM (em MB) e a opção "-boot d", que faz com que o KVM inicialize a VM a partir
do CD-ROM:

$ kvm -cdrom /dev/cdrom -hda ubuntu.img -m 512 -boot d

Se quiser usar diretamente um CD ou DVD gravado dentro do drive, especifique o dispositivo


"/dev/cdrom", que permite acesso direto à mídia dentro do drive:

$ kvm -cdrom /dev/cdrom -hda ubuntu.img -m 512 -boot d

Assim como em outros virtualizadores, uma nova janela é aberta e o boot ocorre da maneira
tradicional. Ao clicar sobre a janela, o mouse fica "preso" dentro dela; para soltá-lo,
pressione Ctrl+Alt:

O KVM não possui uma opção de tela cheia, mas você pode aumentar o espaço útil
removendo a borda da janela, o que no KDE é feito clicando com o botão direito na barra de
título e usando a opção "Avançado > Sem Borda" (pressione "Alt+F3" para que ela volte a
ser exibida). Você pode também mover a janela (o que é muito útil em casos em que o
sistema dentro da VM configura o vídeo com uma resolução vertical maior que a área útil da
tela), segurando a tecla Alt e arrastando a janela usando o botão esquerdo do mouse.

Em alguns casos (que estão se tornando cada vez mais raros, conforme o software evolui), o
KVM pode apresentar erros diversos durante a instalação de alguns sistemas operacionais
específicos. Nesse caso, você tem a opção de desativar o KVM, ficando apenas com o Qemu
sem aceleração que, embora muito mais lento, consegue completar a instalação na maioria
dos casos. Para isso, basta executar o mesmo comando, substituindo o "kvm" por "qemu
-no-kvm":

$ qemu -no-kvm -cdrom /dev/cdrom -hda ubuntu.img -m 512 -boot d

Estes problemas se manifestam apenas durante a instalação, de maneira que você pode
voltar a usar o KVM normalmente depois que ela estiver concluída.

Outra opção destinada a solucionar problemas de instalação é a "-no-acpi" (que era


necessária para instalar o Windows em versões anteriores do KVM), que pode ser adicionada
no final do comando, como em:

$ kvm -cdrom winxp.iso -hda xp.img -m 256 -boot d -no-acpi

Depois de instalado o sistema dentro da VM, o comando para inicializá-la daí em dia é bem
mais simples, indicando apenas o disco virtual e a quantidade de memória reservada, como
em:

$ kvm -hda ubuntu.img -m 512

Para facilitar, crie ícones de atalho para as VMs criadas. Basta indicar o comando,
especificando o caminho completo para o arquivo do disco virtual:

O KVM inclui um sistema de compartilhamento de conexão, que simplesmente compartilha a


conexão de rede via NAT, permitindo que o sistema guest configure a rede via DHCP. Graças
a isso, você não precisa executar nenhum passo adicional para que a VM acesse a web,
basta deixar que ela obtenha a configuração de rede via DHCP durante a instalação. Este
modo é equivalente às opções "-net nic -net user", que precisavam ser especificadas
manualmente em versões antigas.

Concluindo, se ao abrir a VM você receber um erro como:

open /dev/kvm: Permission denied


Could not initialize KVM, will disable KVM support

… significa que o KVM não está carregado, ou que (mais provável) as permissões de acesso
ao dispositivo virtual não foram ajustadas corretamente ao instalar o pacote. Nesse caso,
carregue o módulo (apenas por desencargo) e ajuste as permissões manualmente, como
em:
# modprobe kvm
# chown root:kvm /dev/kvm
# adduser gdh kvm

Se você é o único que utiliza o PC, pode simplesmente abrir as permissões do dispositivo, de
modo a não precisar mais se preocupar com isso:

# chmod 666 /dev/kvm

A principal limitação do KVM é que ele funciona apenas em processadores com suporte a
virtualização via hardware, o que deixa de fora a maioria das máquinas antigas. Você pode
checar se o processador possui ou não suporte à virtualização usando o comando "cat
/proc/cpuinfo", onde o campo "flags" deve incluir o "vmx" ou o "svm", como em:

flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush
mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl
pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch

É necessário também que o suporte a virtualização esteja ativado no Setup (caso a opção
esteja disponível. Procure pela opção "Enable SVM" ou "Virtualization support".

Caso o processador não suporte nenhum dos dois, você ainda poderá usar o Qemu em modo
de emulação (usando os mesmos comandos), mas tudo ficará muito lento. Nesse caso, o
melhor seria partir para o VMware ou o VirtualBox, que não dependem de suporte especial
por parte do processador.

Você também pode gostar