Instalação e configuração do KVM no linux

Introdução

O KVM (Kernel Virtual Machine) é uma implementação em software livre de uma solução de virtualização em arquiteturas x86. Ele é utilizado como hypervisor para gerenciar as máquinas virtuais, adicionando o módulo kvm.ko no kernel do sistema hospedeiro. Podemos usá-lo com técnicas de virtualização total e paravirtualização. Par criar o ambiente necessário para executar a virtualização, utilizamos o QEMU, que cria uma máquina virtual que será utilizada pelo KVM.

Nesse tutorial utilizarei o Ubuntu 15.04 para realizar os experimentos. É interessante notar que o KVM trabalha com virtualização assistida por hardware, ou seja, utiliza o hardware para fornecer virtualização. A seguir será descrito o passo a passo de como instalar e configurar o KVM.

Pré-requisitos

Antes de iniciar a instalação, precisamos conferir se nosso processador possui capacidade de interpretar instruções de virtualização. Os processadores da linha Intel-VTx e AMD-V  possuem essa tecnologia. Para saber se seu processador possui suporte, execute o comando:

$ sudo grep -cE 'vmx|svm' /proc/cpuinfo

O comando a seguir irá retornar o número de núcleos que possui suporte a virtualização. Se o resultado for zero, significa que seu processador não possui suporte nativo a virtualização e que o KVM não irá funcionar.

Instalação

A instalação do KVM é muito simples de ser realizada pois a maioria dos sistemas possui ele presente nos repositórios oficiais. Para instalar digite o comando:

$ sudo apt-get install qemu-kvm libvirt-bin

Após a instalação, é preciso observar se o suporte a hardware esta ativado. Para isso, executamos o comando:

$ sudo kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

A saída informa que o módulo existe e que a aceleração de hardware será utilizada. Caso o comando retorne uma saída diferente, 2 podem ser os motivos.

1° motivo:

Sua máquina possui o suporte a virtualização, porém ela está desabilitada. Para reverter isso, é necessário acessar as informações da sua BIOS e ativar o suporte a virtualização.

2° motivo:

O módulo do KVM não está ativo no kernel. O comando abaixo ativa os módulos necessários para a execução do KVM.

$ sudo modprobe kvm

Para consultar mais informações sobre os módulos carregados, utilize o comando:

$ sudo modinfo kvm
filename: /lib/modules/3.19.0-20-generic/kernel/arch/x86/kvm/kvm.ko
license: GPL
author: Qumranet
srcversion: 00E9ABEA167AF8EF683FC52
depends: 
intree: Y
vermagic: 3.19.0-20-generic SMP mod_unload modversions 
signer: Magrathea: Glacier signing key
sig_key: 08:4A:8D:7D:70:40:CF:DA:94:34:73:4A:2C:4F:D9:13:50:26:B7:72
sig_hashalgo: sha512
parm: allow_unsafe_assigned_interrupts:Enable device assignment on platforms without interrupt remapping support. (bool)
parm: ignore_msrs:bool
parm: min_timer_period_us:uint
parm: tsc_tolerance_ppm:uint

A saída do comando acima confirma que o módulo está carregado no kernel, com informações mais detalhadas como versão, caminho, etc.

Gerando arquivo de imagem

O disco que é utilizado por uma máquina virtual nada mais é que uma imagem de disco salva no computador. Essa imagem é um arquivo que contém a estrutura de um dispositivo de armazenamento de dados, onde existe diversos formatos dependendo da ferramenta e do tipo de virtualização utilizado. Os formatos mais comuns são o vdi, vmdk, qcow, qcow2 e raw.

vdi (Virtual Disk Image) é um formato de imagem utilizado pelas máquinas virtuais da Oracle VirtualBox.

vmdk (Virtual Machine Disk) é um formato de imagem utilizado pelas máquinas virtuais do VMware.

qcow (qemu copy on write) é um formato de imagem utilizado pelas máquinas virtuais do QEMU. Os dados modificados por uma máquina virtual podem ser armazenados na imagem, expandindo ainda mais o seu tamanho ou em uma nova imagem qcow através da cópia e escrita (copy on write) do conteúdo modificado. Atualmente existe duas versões implementadas: o qcow e o qcow2. A principal diferença é que o formato qcow2 permite múltiplos snapshots por imagem.

raw (cru) é um formato de imagem que não passou por nenhum processo de compressão, ou seja, não possui nenhuma perda de informação. Esse formato representa geralmente um dump de um disco, logo as imagens são bem maiores e podem ser convertidas para qualquer um dos tipos anteriores sem chances de erro. Não se pode executar uma máquina virtual com uma imagem do tipo raw. Ela precisa passar por algum tratamento antes que possa ser utilizada por qualquer ferramenta.

Como o KVM utiliza o QEMU para criar suas máquinas virtuais e a imagem de disco faz parte desse processo, vamos utilizar o formato qcow2 para nossas imagens de disco. O comando a seguir cria uma imagem com 8GB de tamanho.

$ qemu-img create -f qcow2 ubuntu.qcow 8G
Formatting 'ubuntu.qcow', fmt=qcow2 size=8589934592 encryption=off cluster_size=65536 lazy_refcounts=off

Onde:

  • -f: Formato da imagem criada
  • ubuntu.qcow: nome da imagem que será armazenada no disco
  • 8G: tamanho da imagem

A ferramenta qemu-img permite criar imagens em diversos formatos como raw, qcow, qcow2, vmdk, vdi e cloop.

Instalando um sistema operacional na imagem

Precisamos instalar um sistema operacional na imagem para que possamos utilizá-la em uma máquina virtual.

Vamos precisar de uma imagem do sistema operacional que queremos instalar. Nesse tutorial irei instalar o Ubuntu Server 14.04. O comando abaixo carrega a iso e a imagem de disco em uma máquina virtual. Dessa forma podemos instalar o sistema operacional na imagem de disco.

$ kvm -m 1G -drive file=ubuntu14.04.iso,media=cdrom -drive file=ubuntu.qcow,media=disk

Onde:

  • -m: memória RAM utilizada pela máquina virtual
  • -drive: carrega um arquivo especificado para um determinado tipo de drive. Vale ressaltar que esse parâmetro necessita dos parâmetro file e media.
  • file: caminho onde está localizado o arquivo que será carregado.
  • media: Tipo do arquivo que esta sendo carregado para o drive.

Apesar de existir um alias no comando de criar uma máquina virtual, é interessante habituarmos com essa notação pois ela permite mais opções de alterações de configurações. O comando abaixo é um alias do comando apresentado acima.

  $ kvm -m 1G -hda ubuntu.qcow -cdrom ubuntu14.04.iso

Onde:

  • -hda: Caminho do arquivo de imagem de disco
  • -cdrom: Caminho da iso do sistema operacional

A figura abaixo mostra a janela que é aberta quando executamos qualquer um dos comando acima.

qemu
Figura 1: Janela aberta pelo KVM

O comando kvm é um wrapper para o qemu-system-x86_64 que foi inserido na versão 1.3 do QEMU. Toda vez que se usa o comando kvm ele é chamado. O comando mostra que a arquitetura que será utilizada em todo procedimento utiliza 64 bits.

Se você não quiser preparar uma imagem para executar o KVM pode procurar pela internet imagens de disco com sistemas operacionais já disponíveis e baixá-las. A partir daqui a instalação é realizada normalmente como a instalação de qualquer sistema operacional.

Após instalar o sistema operacional na imagem podemos executar uma máquina virtual que utilize essa imagem.

Rodando uma máquina virtual

Por incrível que possa parecer nós realizamos esse passo anteriormente. Precisamos criar uma máquina virtual para instalar o sistema operacional na imagem de disco que ele ia utilizar. O comando que usamos é o mesmo, com pequenas mudanças em seus parâmetros. Abaixo, seque o comando para iniciar uma máquina virtual.

$ kvm -drive file=ubuntu.qcow,media=disk

Novamente, existe um comando alias que realiza a mesma função

$ kvm -hda ubuntu.qcow

O resultado final é a máquina virtual iniciada e pode ser visto na figura 2.

ubuntu
Figura 2: Máquina virtual em execução

Conclusão

Nos próximos tutorias irei apresentar maneiras mais fáceis de criar e gerenciar máquinas virtuais. É importante conhecer o procedimento padrão para aprofundarmos em outros métodos como o virsh, virt-manager, etc.

Curtam e compartilhem essa dica. Dúvidas deixem nos comentários. Keep learning!

Referencias

http://www.ibm.com/developerworks/br/local/linux/instalandokvmnolinux/

https://en.wikibooks.org/wiki/QEMU/Images

2 comentários

Deixe um comentário