Virtualização com KVM no Debian Jessie

De Eriberto Wiki
Revisão de 05h06min de 11 de dezembro de 2015 por Eriberto (discussão | contribs)
Ir para navegação Ir para pesquisar

Introdução: sai Xen, entra KVM

Por muito tempo eu usei Xen. Hoje, só aconselho KVM + LibVirt. Os motivos são os seguintes:

  • As máquinas evoluíram e, hoje em dia, possuem recursos de hardware para virtualização, acelerando processos.
  • Xen é nativo no kernel mas é especialista em paravirtualização.
    • A paravirtualização era um importante recurso na década de 2000, pois exigia pouco hardware. Hoje o hardware é muito mais potente e entende bem virtualização completa.
    • Na para virtualização só é possível virtualizar o mesmo sistema do hospedeiro.
    • A atualização de SO na paravirtualização é extremamente complexa e, geralmente, exige a parada total do sistema.
    • O Xen demanda em mais de 500.000 linhas de código.
  • KVM também é nativo do kernel e é especialista em virtualização completa.
    • A virtualização completa permite qualquer SO sobre qualquer SO.
    • Na virtualização completa as atualizações de software são fáceis e transparentes.
    • O KVM demanda em, apenas, um pouco mais de 10.000 linhas de código.
    • Mesmo realizando virtualização completa, o KVM demonstrou, em vários testes, ter performance superior ao Xen.
  • A LibVirt é uma API específica para virtualização. Ela provê uma linguagem única para a gerência de vários virtualizadores, além de drivers específicos para a melhoria de performance.

Para dados mais consistentes e testes comparativos, leia os seguintes documentos:

Para uma visão geral sobre a LibVirt, leia a página principal do projeto em http://libvirt.org.

Instalação inicial

Na máquina real (que será a hospedeira), instale os pacotes kvm, libvirt-bin, virtinst e virt-top.

# apt-get install kvm libvirt-bin virtinst virt-top

Com isso, o sistema estará pronto para uso.

Criação de uma máquina virtual Debian

As máquinas virtuais poderão ser criadas facilmente com o comando virt-install. Assim sendo, crie um script shell, denominado cria-vm.sh, com o seguinte conteúdo:

#!/bin/bash

# Alterar, de acordo com a máquina a ser criada

NOME=teste
VCPUS=2
RAM=4096
MAC=52:54:00:00:00:01

# Não alterar a partir daqui

virt-install -d \
--name=$NOME \
--vcpus=$VCPUS \
--ram $RAM \
--disk path=/vms/$NOME,bus=virtio,cache=none \
--network bridge=br-kvm,model=virtio,mac=$MAC \
--accelerate \
--extra-args="console=ttyS0,115200" \
--location=http://ftp.debian.org/debian/dists/jessie/main/installer-amd64

No primeiro bloco, altere, de acordo com a necessidade, o nome da máquina (NOME), a quantidade de núcleos (VCPUS), a quantidade de memória RAM em gigabytes (RAM) e o endereço MAC a ser utilizado pela máquina (MAC).

A seguir, crie um diretório /vms (poderá ser em outro local, diferente da raiz, se necessário).

# mkdir /vms

Dentro do /vms, crie um arquivo para receber a máquina virtual (sim, a máquina ficará dentro de um arquivo). Esse arquivo deverá ter o mesmo nome da máquina a ser criada. Para um teste rápido ou para um servidor pequeno, como um DNS ou DHCP, poderá ser utilizado um arquivo de 10 GB. Use o comando dd para criar o arquivo.

# dd if=/dev/zero of=/vms/teste bs=1G count=10

A linha --disk do script define que o arquivo será buscado em /vms.

Uma outra definição importante, provida pela linha --network, refere-se à placa de rede da máquina real (em modo bridge) que será utilizada para o tráfego.

Ao executar o script, a máquina será criada. Não esqueça de prover permissão de execução antes de rodar tal script:

# chmod 750 cria-vm.sh
# ./cria-vm.sh

A rodar o script, o mesmo baixará dois pequenos arquivos de instalação do Jessie amd64. Veja que isso é definido na linha --location do script e pode ser mudado.