XEN

De Biblioteca Unix

Conteúdo

XEN

Sobre

Xen é um software livre de virtualização para as arquiteturas x86, x86-64, IA-32, IA-64 e PowerPC. Xen permite a execução de vários sistemas operacionais, simultaneamente, sobre um mesmo hardware. Versões modificadas de Linux e NetBSD podem ser usadas como base. Diversos sistemas Unix modificados podem ser executados. Desde a versão 3.0, o Microsoft Windows e outros sistemas operacionais podem ser executados sobre o Xen.

Debian Squeeze 6.0

Instalando os Pacotes Necessários

A arquitetura utilizada neste exemplo será amd64(64 bits), porém, há a possibilidade de ser instalada em uma arquitetura i386(32 bits). A única diferença esta apenas na nomenclatura final dos pacotes utilizados.

A seguir, os pacotes à serem instalados:

# apt-get install xen-docs-4.0 xen-hypervisor-4.0-amd64 xen-linux-system-2.6.32-5-xen-amd64 xenstore-utils xen-tools xen-utils-4.0 xen-utils-common xenwatch

Após terminar a instalação, basta reinicializar o computador para que a instância do XEN seja carregada.

# reboot

Possível Erro

Após a reinicialização, execute o comando:

# xm dmesg

Caso a saída seja algo desse tipo:

WARNING! Can't find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?

Como no nosso caso, isso significa que está rodando o kernel do Xen, porém não está sendo executado o Hypervisor, ou seja, não é possível inicializar as máquinas virtuais. Para corrigir isso, basta alterar a ordem de inicilização, com os seguintes comandos:

# mv /etc/grub.d/10_linux /etc/grub.d/50_linux
# update-grub2

Agora basta reiniciar a máquina.

# reboot

Feito isso, execute novamente:

# xm dmesg

Agora, a saída deve ser algo totalmente diferente.

Configurações Básicas

A configuração do XEN permite algumas formas sobre a conectividade da rede:

  • Rede em modo Bridge (as máquinas virtuais serão ligadas diretamente a rede real)
  • Sem rede (ou o conhecido como host-only)
  • Rede em modo NAT (onde o servidor atribui um IP local para o servidor seguindo a RFC 1918)

Como nós queremos que as máquinas virtuais trabalhem como servidores reais, então escolhemos o modo Bridge.

Para tal, modificaremos o arquivo de configuração:

# vim /etc/xen/xend-config.sxp

descomentando/adicionando as seguintes linhas:

(network-script 'network-bridge antispoof=yes')
(vif-script vif-bridge)

Agora basta apenas reiniciar o serviço:

# /etc/init.d/xend restart

Multi-Bridge no Mesmo Servidor

Atualmente, vários servidores estão ligados em várias sub-redes, e as máquinas virtuais podem estar ligadas a essas sub-redes ou não, para ativar Multi-Bridge no Xen, basta criar um script dentro do diretório /etc/xen/scripts:

# vim /etc/xen/scripts/multi-bridge
#!/bin/bash
set -e
dir=$(dirname “$0”)
ifaces="eth0 eth1 eth2 eth3"
for i in $ifaces; do
  ip addr show dev $i | grep inet > /dev/null 2>&1
  if [ $? == 0 ]; then
    ip link set $i down
    "$dir/network-bridge" "$@" netdev=$i start
    ip link set $i up
  fi
done

No nosso caso, há quatro interfaces(eth0, eth1, eth2 e eth3). Basta torná-lo executavél:

# chmod +x /etc/xen/scripts/multi-bridge

E modificar a linha:

(network-script 'network-bridge antispoof=yes')

para:

(network-script 'multi-bridge antispoof=yes')

do arquivo /etc/xen/xend-config.sxp.

Após isso, basta reiniciar o serviço:

# /etc/init.d/xend restart

Configurando o Xen-Tools

Em nossa instalação, utilizamos LVM com o grupo chamado vg0. Agora, editaremos o arquivo de configuração do xen-tools:

# vim /etc/xen/tools/xen-tool.conf
lvm = vg0 
install-method = debootstrap 
size   = 4Gb      # Disk image size. 
memory = 128Mb    # Memory size 
swap   = 256Mb    # Swap size 
fs     = ext3     # use the EXT3 filesystem for the disk image. 
dist   = squeeze     # Default distribution to install. 
image  = sparse   # Specify sparse vs. full disk images. 
cache = yes 
passwd = 1 
kernel      = /boot/vmlinuz-`uname -r` 
initrd      = /boot/initrd.img-`uname -r` 
arch = amd64 
mirror = http://mirror.pop-ms.rnp.br/debian/ 
ext3_options   = noatime,nodiratime,errors=remount-ro  
ext2_options   = noatime,nodiratime,errors=remount-ro 
xfs_options    = defaults 
reiser_options = defaults 
serial_device = hvc0
disk_device = xvda

Este arquivo contém as configurações default para criação das máquinas virtuais, porém, pode-se alterar todas essas configurações por linha de comando.

Vamos criar agora a máquina virtual utilizando o xen-tools:

# xen-create-image --hostname=NOME_DA_MAQUINA --ip IP --netmask MASCARA_SUBREDE --gateway GATEWAY --role=udev

Lembre-se de sempre passar --role=udev como argumento, pois, isso fará que a máquina virtual inicie normalmente.

Operações Básicas com XEN

Algumas operações básicas são importantes, primeiro vamos mostrar quais as máquinas virtuais que estão ativas:

# xm list

agora vamos conectar em uma das máquinas virtuais:

# xm console NOME_DA_VM ou ID

para desconectar dela digite: CRTL+]

o próximo passo é inicializar a máquina:

# xm create NOME_DA_VM.cfg

e para reinicializá-la:

# xm reboot NOME_DA_VM ou ID

se for preciso desligar a VM:

# xm shutdown NOME_DA_VM ou ID

qualquer dúvida quanto ao comando:

# xm help

--Fabricio Carvalho 08h43min de 13 de julho de 2011 (AMT)

Debian Lenny 5.0

Instalando os Pacotes necessários

A primeira coisa a se verificar é a arquitetura do computador que vamos instalar, temos duas opções: i386 e amd64, a primeira para 32bits e a segunda com suporte a 64bits. A diferença muda apenas na nomeclatura final dos pacotes, no nosso caso é amd64.

Vamos instalar os pacotes necessários:

# apt-get install xen-hypervisor-3.2-1-amd64 xen-tools xen-utils  linux-image-2.6-xen-amd64 xen-linux-system-2.6.26-2-xen-amd64

Após terminar a instalação, o ambiente básico estará configurado, basta reinicializar o computador para que a instância do XEN seja carregada.

# reboot

Configurações Básicas

Podemos utilizar o XEN de diversas formas quanto a conectividade na rede:

  • Rede em modo Bridge (as máquinas virtuais estão ligadas diretamente a rede real)
  • Sem rede (ou o conhecido como host only)
  • Rede em modo NAT (onde o servidor atribui um IP local para o servidor seguindo a RFC 1918)

preferimos neste caso simular cada VM (virtual machine) como um servidor real na rede, então a nossa opção ficou pelo modo Bridge.

Vamos editar o arquivo de configuração para ativar o compartilhamento de rede via bridge:

# vim /etc/xen/xend-config.sxp

altere a linha:

(networks-script  dummy)

por:

(network-script network-bridge)

agora é necessário reinicializar o serviço para publicar as informações:

# /etc/init.d/xend restart

pronto.

Utilizando várias Bridges no mesmo Servidor

É comum termos servidores que estão ligados em mais de uma subrede, e as vezes as próprias VMs podem estar vinculadas a essas subredes ou não, por isso para ativar o suporte a multi-bridges no XEN, basta criar o script abaixo em /etc/xen/scripts:

# vim /etc/xen/scripts/bridges
#!/bin/bash
dir=$(dirname “$0”)
“$dir/network-bridge” “$@” vifnum=0
“$dir/network-bridge” “$@” vifnum=1
“$dir/network-bridge” “$@” vifnum=2

e depois torne-o executável:

# chmod +x /etc/xen/scripts/bridges

onde cada linha do network-bridge significa uma placa de rede, lembrando que o parâmetro vifnum deve ser diferente para cada um. Vamos agora reinicializar o serviço:

# /etc/init.d/xend restart

Configurando o Xen-tools para gerar VMs

Vamos editar o arquivo de configuração do Xen-tools, imaginando que estamos usando um LVM chamado vg0, que foi configurado durante a instalação do servidor:

# vim /etc/xen/tools/xen-tool.conf
lvm = vg0 
install-method = debootstrap 
size   = 4Gb      # Disk image size. 
memory = 256Mb    # Memory size 
swap   = 256Mb    # Swap size 
fs     = ext3     # use the EXT3 filesystem for the disk image. 
dist   = lenny     # Default distribution to install. 
image  = sparse   # Specify sparse vs. full disk images. 
cache = yes 
passwd = 1 
accounts = 1 
kernel      = /boot/vmlinuz-`uname -r` 
initrd      = /boot/initrd.img-`uname -r` 
arch=amd64 
mirror = http://mirror.pop-ms.rnp.br/debian/ 
ext3_options   = noatime,nodiratime,errors=remount-ro  
ext2_options   = noatime,nodiratime,errors=remount-ro 
xfs_options    = defaults 
reiser_options = defaults 
extension = .cfg

Este arquivo de configuração contém as configurações pra criação de maquinas virtuais a partir de agora, mas nada impede de usar a linha de comando para definir em tempo de criação as configurações da VM.

Vamos criar agora a maquina virtual utilizando o Xen-tools:

# xen-create-image --hostname=NOME_DA_MAQUINA --ip IP --netmask MASCARA_SUBREDE --gateway GATEWAY

feito isso, após algum tempo, vai se executado o hook pedindo a senha do root e depois disso sua VM estará criada, contudo já existe um problema inicial que deve ser sanado, o /etc/inittab não tem entrava para o hvc0 utilizado pela VM e nem o pacote udev utilizado para criação dinâmica dos dispositivos, vamos corrigir isso:

  1. mount /dev/vg0/maquina-disk /mnt
  2. chroot /mnt
  3. apt-get install udev

depois adicione a seguinte linha no /etc/inittab:

1:2345:respawn:/sbin/getty 38400 hvc0

e mude a entrada:

1:2345:respawn:/sbin/getty 38400 tty1

para:

2:2345:respawn:/sbin/getty 38400 hvc0

depois que isso foi alterado, é hora de sair e desmontar o dispositivo:

# exit
# umount /mnt

isso vai resolver o problema.

Operações Básicas com XEN

Algumas operações básicas são importantes, primeiro vamos mostrar quais as máquinas virtuais que estão ativas:

# xm list

agora vamos conectar em uma das máquinas virtuais:

# xm console NOME_DA_VM ou ID

para desconectar dela digite: CRTL+]

o próximo passo é inicializar a máquina:

# xm create NOME_DA_VM.cfg

e para reinicializá-la:

# xm reboot NOME_DA_VM ou ID

se for preciso desligar a VM:

# xm shutdown NOME_DA_VM ou ID

qualquer dúvida quanto ao comando:

# xm help


--Brivaldo 17h49min de 30 de julho de 2010 (UTC)

Ferramentas pessoais