sábado, 28 de julho de 2012

Virtualização com KVM

O Projeto KVM (Kernel based Virtual Machine), da empresa Red Hat, visa criar um ambiente profissional de virtualização em software livre para o universo Linux. Até pouco tempo, dispúnhamos apenas do XEN (pronuncia-se ZEN) com essas características.

O KVM é um módulo do Linux que o transforma em um hypervisor, um software que intercepta parte ou toda a comunicaçao entre o Kernel de uma máquina virtual (que comumnente roda no ring 3) e a CPU, permitindo a tecnologia da virtualizaçao.

O KVM faz uso pesado dos recursos de virtualizaçao implementados nas novas arquiteturas de CPU da Intel e AMD. Algo que está sendo chamado de HAV - Hardware Assisted Virtualization[1].

1. Instalando o KVM no Fedora

Nota inicial: não é requisito obrigatório, mas é importante que o sistema seja 64 bits. Arquiteturas de 64 bits, além de permitir um endereçamento de memória superior a 2 GB, possibilitará rodar VM's de 32 e 64 bits.

Após a instalaçao normal do sistema, verifique se hardware tem suporte a virtualizaçao:

# egrep -c '(vmx|svm)' /proc/cpuinfo


Se retornar 0, nao existe suporte de hardware a virtualizaçao. Se retornar 1 ou mais, há suporte.

Observaçao: mesmo que nao haja suporte de hardware, o KVM poderá ser instalado e executado, mas o desempenho será bem baixo.

Instale os pacotes necessários:


# yum install kvm virt-manager libvirt libvirt-python python-virtinst virt-viewer


2. Configuração Básica


Verifique se o ambiente de virtualização está funcional:


# virsh -c qemu:///system list

O comando acima deve retornar sem erros. Caso haja erros, verifique se o daemon libvirtd está rodando.

# service libvirtd status


E, se não estiver:

# service libvirtd start


3. Instalando VM's

Você deverá ter a imagem em disco do sistema operacional a instalar ou a mídia de instalação.

Colocaremos as imagens dos sistemas a instalar e as imagens dos sistemas criados no diretório /var/lib/libvirt/images/

Vamos diferenciar imagens instaláveis das imagens instaladas através do prefixo dos arquivos:

.iso - Imagem para instalação.
.img - Imagem do sistema já instalado.

Obs.: A localização das imagens e os prefixos não são padrão, apenas convenções criadas para o âmbito desse tutorial.

Nesse documento, instalaremos as imagens do Debian, versão 6. Faça o download da imagem do CD de instalação e copie o arquivo .iso para /var/lib/libvirt/images.

Inicie a instalação do SO:


# virt-install --name debian6_vm1 --ram 512 --os-type linux --os-variant debiansqueeze --disk path=/var/lib/libvirt/images/debian6_vm1.img,size=5 --vnc--cdrom /var/lib/libvirt/images/debian-6.0.5-amd64-CD-1.iso

Os parâmetros passados para a criação da máquina são explicados abaixo:

name: Nome da VM.
ram: Quantidade de RAM, em MB.
os-type: Tipo do sistema operacional (Linux, FreeBSD, Windows etc).
os-variant: Versão do SO (ver manpage do virt-install).
disk: parâmetro que permite subparâmetros relacionados ao storage:
    path: local onde a VM será armazenada e o nome do arquivo.
    size: espaço alocado para a VM, e GB.
vnc: Acesso ao console da VM via protocolo VNC.
cdrom: Dispositivo leitor de CD. Pode ser indicado um arquivo de imagem (ISO).


Caso o procedimento inicie com sucesso, um console (processo virt-viewer) será aberto automaticamente. Se não, execute o virt_viewer manualmente, passando como parâmetro o nome da VM a visualizar:

# virt-viewer debian6-vm1


Parte 2: Gerência de VM's com o virsh

Referências:
[1] White Paper: KVM - Kernel Based Virtual Machine [Red Hat]

Links:
https://help.ubuntu.com/community/KVM/Installation