Configurando uma Máquina Virtual com KVM no Fedora
KVM (Kernel-based Virtual Machine) é uma solução de virtualização open source para Linux incluído por padrão no kernel a partir da versão 2.6.20. A maioria das distros possuem as ferramentas necessárias para virtualização com KVM nos CDs de instalação ou repositórios de pacotes. Nesse artigo vou usar o Fedora 16 como host e instalar o CentOS como guest.
Instalação
Execute o comando:
sudo yum install qemu-kvm python-virtinst libvirt virt-manager
Verificando suporte virtualização de hardware:
grep -E "(vmx|svm)" --color=always /proc/cpuinfo
Caso a saída do comando acima não retorne nenhuma informação na tela é porque o processador não suporta virtualização de hardware. Sendo asssim há apenas a opção de usar emulação com o QEMU.
Iniciando o serviço:
sudo service libvirtd start
Antes de instalar o sistema operacional no guest é necessário criar o virtual disk usado pela máquina virtual. KVM suporta o formato raw, qcow2 (nativo do QEMU), VMWare, dentre outros. Vou criar usando qcow2 e alocando 10GB de espaço:
qemu-img create -f qcow2 -o preallocation=metadata /home/gustavo/vm/hd-centos.qcow2 10G
As opções de rede disponíveis são bridge, virtual network e user:
- bridge permite que à máquina virtual obter endereço IP como se fosse outra máquina na rede onde está o host;
- virtual network cria uma rede virtual no qual apenas outros guests na mesma virtual network e o host consegueguem se comunicar;
- user provê uma forma de NAT muito limitada, indicado apenas se for executar o kvm com usuário diferente de root.
Para usar o modo bridge, primeiro é preciso criar a interface br0
. Os passos estão descritos nas instruções da documentação da libvirt
em http://wiki.libvirt.org/page/Networking.
Criando uma Virtual Machine com KVM
Modo simples, especificando o path da iso de instalação e do virtual disk:
virt-install --name=minha-vm-centos \
--arch=x86_64 --vcpus=1 \
--ram=512 --os-type=linux \
--os-variant=rhel5 \
--hvm \
--connect=qemu:///system \
--network bridge=br0 \
--cdrom=$HOME/Downloads/softwares/iso/CentOS-6.2-x86_64-LiveDVD.iso \
--disk path=$HOME/vm/hd-centos.qcow2,size=10 \
--graphics vnc,keymap=pt-br \
--noautoconsole
Modo muito simples, onde serão feitas perguntas ao usuário:
/usr/sbin/virt-install --prompt
Rodando no modo gráfico é possível utilizar o virt-manager
, uma interface gráfica para gerenciar máquinas virtuais.
Gerenciando máquinas virtuais com o Virsh
Virsh é utilitário em modo texto que utiliza a API da libvirt para gerenciamento de máquinas virtuais. Abaixo os comandos mais utilizados.
Exibir todas as máquinas virtuais:
virsh list --all
Iniciar uma máquina virtual:
virsh start <nome da vm>
Desligar uma máquina virtual:
virsh shutdown <nome da vm>
Editar configuração:
virsh edit <nome da vm>
Forçar o desligamento:
virsh destroy <nome da vm>
Salvar um snapshot:
virsh save <nome da vm> <nome do arquivo>
Restaurar um snapshot:
virsh restore <nome do arquivo>
Acessar remotamente via ssh:
virsh -c qemu+ssh://<usuario>@<ip>/system <nome da vm>
Alguma dicas
Para renomar uma máquina virtual no Virsh é necessário copiar o arquivo XML contendo as configurações, editar manualmente esse arquivo, criar uma máquina virtual com o novo nome e remover a antiga.
virsh dumpxml <nome da vm> > arquivo.xml
vim arquivo.xml #alterar o novo nome dentro do arquivo xml
virsh undefine <nome da vm>
virsh define arquivo.xml
Após aumentar o espaço de um virtual disk usando o qemu-img é necessário dar boot no guest com alguma distro livecd e usar o software gparted para redimensionar a partição sem perda de dados.
qemu-img resize /home/gustavo/vm/hd-centos.qcow2 +25GB
O processo de clonar uma máquina virtual consiste em criar uma cópia idêntica com outro nome que pode usar o mesmo virtual disk ou um clone.
virt-clone --connect=qemu:///system -o <nome da vm> -n <nome da vm clonada> -f <path do virtual disk>