Passos para usar o comando
qemu-kvm, ou simplesmente
kvm para executar máquinas virtuais no
Ubuntu
12.04.
O KVM utiliza a virtualização assistida por hardware, por isso requer processadores com Intel VT-x ou AMD-V habilitados.
Verifique se o seu processador possui este recurso. É imprescindível que possua, caso contrário, não funcionará.
Procure a flag
vmx para processadores Intel, ou
svm para processadores AMD, no arquivo
/proc/cpuinfo:
cat /proc/cpuinfo
ou:
grep -E 'vmx|svm' /proc/cpuinfo
Verifique se o processador suporta arquitetura de 64 bits. Não é necessário que suporte, mas em caso afirmativo, é recomendável usar um
sistema operacional de 64 bits na máquina anfitriã, pois assim será possível rodar um sistema convidado de 64 bits, além de melhorar o
desempenho.
Procure a flag
lm (LM em minúscula) no arquivo
/proc/cpuinfo:
grep lm /proc/cpuinfo --color=always
Instalação
Para instalar o KVM:
sudo apt-get install qemu-kvm
Verificar se tudo está certo:
kvm-ok
Para testar, rode um Live-CD em uma máquina virtual através de uma imagem de um CD ou DVD gravado no disco:
kvm -m 500 -drive file=/caminho/imagem.iso,media=cdrom
ou:
kvm -m 500 -cdrom /caminho/imagem.iso
Ambos os comandos fazem a mesma coisa, porém, é aconselhável habituar-se com a primeira forma, como perceberá adiante:
- -m 500 → Indica que a VM terá 500 MB de memória RAM.
- -drive file=→Indica o caminho e o nome do arquivo de imagem de CD.
- media=cdrom → indica que essa imagem será de um CD-ROM, a outra opção existente para media, é
media=disk, para indicar que é um disco rígido.
Na janela que se abre, use as combinações de teclas para:
- Ctrl-Alt → Libera o mouse da janela;
- Ctrl-Alt-f → Alternar entre tela cheia e janela normal;
- Ctrl-Alt-1 → Exibe a saída de video da máquina virtual;
- Ctrl-Alt-2 → Exibe o console de comando do QEMU-KVM;
- Ctrl-Alt-3 → Exibe a saída da porta serial;
- Ctrl-Alt-4 → Exibe a saída da porta paralela.
No console de comandos, você pode usar muitos comandos, veja alguns:
- (Qemu) help → Exibe a ajuda;
- (Qemu) system_reset → Reinicia a VM;
- (Qemu) system_powerdown → Envia sinal de desligamento para a VM;
- (Qemu) quit → Fecha a VM.
Obs.: Para rolar a tela do console de comandos, use: Ctrl + a seta para cima ou para baixo.
Crie um disco rígido virtual de 8 GB:
qemu-img create -f raw debian-kde.raw 8G
Onde:
- -f raw → indica que o formato da imagem é raw. Os principais formatos são raw e qcow2.
Instale um sistema no HD virtual criado com o comando acima:
kvm -m 500 -drive file=/caminho/imagem.iso,media=cdrom -drive file=/caminho/debian-
kde.raw,media=disk,cache=writeback
A novidade no comando acima, é
cache=writeback, usado para melhorar a performance do disco. O padrão é
cache=writethrough, que é mais seguro, porém, possui desempenho pior, principalmente quando usado com imagens no formato
qcow2.
Os sistemas operacionais mantém um cache para melhorar o desempenho de I/O de disco. Com o cache, as operações de gravação são
consideradas concluídas após os dados terem sido copiados para o cache.
As operações de leitura são satisfeitas a partir do cache, se os dados solicitados estiverem nele. No ambiente do KVM, tanto o sistema
operacional do host quanto do guest, podem manter seus próprios caches, resultando em duas cópias de dados na memória. Em geral, é
melhor ignorar pelo menos um destes caches.
As opções de cache são:
- writethrough
- writeback
- unsafe
- none
O
cache=none, como o nome já sugere, desabilita o cache para leitura e gravação, transformando todas as requisições de I/O do
guest em operações Direct I/O no host.
Para os outros 3 modos, o cache é ativado tanto para leitura quanto para gravação, porém, o cache de gravação é tratado de forma diferente
em cada caso.
O
cache=writethrough fará com que o cache do host seja usado para ler e escrever dados, mas a confirmação de escrita será
enviada para o guest somente quando os dados forem relatados como escrito pelo sistema de armazenamento.
Já o
cache=writeback, também usará o cache para ler e escrever, mas irá relatar os dados escritos como concluído, assim que
os dados estiverem presentes no cache do host. Este é seguro, desde que o host também seja. Se o seu host desligar por falta de energia,
pode ocorrer corrupção de dados no guest.
O
cache=unsafe usará o cache para ler e escrever e não será necessário gravar os dados no disco, podendo mantê-los em
cache. Se alguma coisa der errado, como o desligamento anormal do host, sua imagem de disco poderá ser inutilizada.
Já que o assunto é sobre desempenho de HD, aproveito para mostrar mais um parâmetro que pode ser configurado no
-drive,
veja o exemplo:
-drive file=/caminho/debian-kde.raw,media=disk,cache=writeback,if=virtio
O
if=virtio substitui a configuração padrão, que é
if=ide. O if=ide, apesar de ser mais lento, possui uma
compatibilidade maior com os sistemas convidados.
Qualquer distribuição
GNU/Linux atual, suporta o virtio. Portanto, sempre que seu hóspede suportar, use o virtio para um melhor desempenho.
Jargões:
- Máquina física: host, anfitrião, hospedeiro
- Máquina virtual: guest, convidado, hóspede, VM (Virtual Machine)
Fontes: