Como instalar o XEN no Ubuntu – Virtualizador tipo VMware

This entry was posted on Monday, 17 December, 2007

O Xen é mais um virtualizador que permite rodar várias instâncias do Linux[bb], FreeBSD ou Windows no mesmo servidor, algo similar ao VMware, mas implementado de forma diferente.Em resumo, o Xen utiliza um conceito chamado para virtualização, onde o sistema operacional rodando dentro da máquina virtual tem a ilusão de estar sendo executado diretamente sobre o hardware. O Xen se encarrega de organizar as requisições feitas pelas máquinas virtuais e repassá-las ao sistema principal. Ele se limita a repassar as instruções, sem interpretá-las como faria um emulador (como por exemplo o Qemu), o que causa uma diminuição de desempenho muito pequena.

O VMware usa uma técnica similar, mas incluindo uma série de funções de checagem destinadas a eliminar problemas de compatibilidade com diversos sistemas operacionais. Isso faz com que o VMware[bb] rode diretamente a maioria das versões do Windows, Linux e outros sistemas diretamente, bastando instalá-los na máquina virtual.

No caso do Xen, o sistema que vai ser executado dentro da máquina virtual precisa ser modificado. Ou seja, você precisaria de uma versão específica do Fedora, por exemplo, para poder executá-lo dentro do Xen é necessário instalar um patch no Kernel para isso.

O objetivo inicial do Xen não é ser uma solução fácil de usar como o VMware, ele é mais voltado para uso em servidores, permitindo rodar vários servidores virtuais numa única máquina. Mesmo assim o projeto está sendo desenvolvido de forma bastante ativa, com participação de empresas como a IBM, Sun, Red Hat e com o apoio da Microsoft para que seja compatível com o seu sistema. É de se esperar que o Xen se torne um sistema mais conhecido no futuro e que possa suportar outras plataformas, quem sabe…

Estou utilizando o Ubuntu Feisty Fawn (i386) para o host slave3 (dom0), e vou utilizar o Ubuntu Dapper para o slave4 (domU).

1 Instalando o XEN

Para instalar o XEN com todas as dependências, basta fazer:

apt-get install ubuntu-xen-server

Neste pacote também acompanha o xen-tools, que usaremos para criar os Servidores Virtuais.

Agora edite o arquivo /etc/xen/xend-config.sxp, você pode comentar as linhas, e somente colar o abaixo:

vi /etc/xen/xend-config.sxp
(xend-relocation-hosts-allow '^localhost$ ^localhost.localdomain$')
(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 256)
(dom0-cpus 0)

Precisamos também adicionar o módulo de loop para o kernel carregar todas as vezes que nós realizarnos o boot do sistema. Edite o arquivo /etc/modules e adicione a seguinte linha no final do arquivo:

vi /etc/modules

[...]
loop max_loop=64

Agora, vamos ver se está tudo instalado no /boot.

linuxuser@slave1:~$ ls -lah /boot/
total 19M
drwxr-xr-x  3 root root 4.0K 2007-07-07 22:51 .
drwxr-xr-x 22 root root 4.0K 2007-07-07 22:58 ..
-rw-r--r--  1 root root 405K 2007-04-15 05:07 abi-2.6.20-15-generic
-rw-r--r--  1 root root  72K 2007-04-05 03:08 config-2.6.19-4-server
-rw-r--r--  1 root root  82K 2007-04-15 02:33 config-2.6.20-15-generic
drwxr-xr-x  2 root root 4.0K 2007-07-07 22:53 grub
-rw-r--r--  1 root root 6.2M 2007-07-07 22:53 initrd.img-2.6.19-4-server
-rw-r--r--  1 root root 6.7M 2001-09-13 23:54 initrd.img-2.6.20-15-generic
-rw-r--r--  1 root root  93K 2006-10-20 08:44 memtest86+.bin
-rw-r--r--  1 root root 765K 2007-04-05 03:08 System.map-2.6.19-4-server
-rw-r--r--  1 root root 789K 2007-04-15 05:08 System.map-2.6.20-15-generic
-rw-r--r--  1 root root 1.7M 2007-04-05 03:08 vmlinuz-2.6.19-4-server
-rw-r--r--  1 root root 1.7M 2007-04-15 05:07 vmlinuz-2.6.20-15-generic
-rw-r--r--  1 root root 253K 2007-03-24 13:03 xen-3.0-i386-pae.gz

O arquivo /boot/vmlinuz-2.6.19-4-server é o kernel do Xen que foi instalado junto com o pacote ubuntu-xen-server, e /boot/initrd.img-2.6.19-4-server é o ramdisk.

Agora, crie o diretório onde será armazenado as máquinas virtuais, eu criei na partição /, é o único lugar onde sobrou um espaço em disco :

mkdir /xen

Para criar as máquinas virtuais, nós iremos utilizar o xen-tools http://xen-tools.org/software/xen-tools/ , como disse antes, ele vem instalado junto com o ubuntu-xen-server. Para isto, vamos editar o arquivo de configuração:

vi /etc/xen-tools/xen-tools.conf

Para facilitar, novamente mando meu arquivo limpo:

linuxuser@slave1:~$ grep -v ^# /etc/xen-tools/xen-tools.conf | sed '/^$/d'
dir = /xen
dist   = edgy
size   = 4Gb      # Disk image size.
memory = 128Mb    # Memory size
swap   = 128Mb    # Swap size
fs     = ext3     # use the EXT3 filesystem for the disk image.
dist   = etch     # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
gateway   = 10.1.1.1
netmask   = 255.255.255.0
passwd = 1
mirror = http://de.archive.ubuntu.com/ubuntu/
kernel = /boot/vmlinuz-2.6.16-2-xen-686
initrd = /boot/initrd.img-2.6.16-2-xen-686
mirror = http://ftp.us.debian.org/debian/

A linha dist diz qual é a distribuição default que você vai instalar. No próprio arquivo, tem uma relação das distribuições suportadas.

A linha kernek contém o nosso Kernel Xen, e a linha initrd seta o ramdisk.

A linha passwd = 1 força você especificar uma senha root quando você cria um novo dominio. E a linha mirror diz de onde vamos baixar o bootstrap.

Tenha certeza de especificar um gateway e netmask. Se você não fizer isto, e não especificar quando utilizar o xen-create-image, não funcionará a rede para o novo domínio.

Reiniciando o sistema:

shutdown -r now

Se reiniciou sem problemas, então vamos para o próximo passo.

linuxuser@slave1:~$ uname -r
2.6.19-4-server
linuxuser@slave1:~$ free -m
            total       used       free     shared    buffers     cached
Mem:            90         79         10          0          0         27
-/+ buffers/cache:         51         38
Swap:          486          4        481

É, eu só tinha 128 MB de memória, vemos que o XEN já pegou a parte dele

Agora, criaremos o servidor Virtual:

xen-create-image --hostname=slave03.hympi.com --debootstrap --ip=192.168.0.98

Para quem deseja fazer manualmente:

xen-create-image --hostname=slave3.hympi.com --size=2Gb --swap=256Mb --ide
--ip=10.1.1.6 --netmask=255.255.255.0 --gateway=10.1.1.1 --force
--dir=/xen --memory=64Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.19-4-server
--initrd=/boot/initrd.img-2.6.19-4-server --debootstrap --dist=dapper
--mirror=http://de.archive.ubuntu.com/ubuntu/ --passwd

Para saber mais sobre o comando:

man xen-create-image
root@slave1:/home/linuxuser# xen-create-image --hostname=slave3 --size=2Gb --swap=256Mb --ide
> --ip=10.1.1.7 --netmask=255.255.255.0 --gateway=10.1.1.1 --force
> --dir=/xen --memory=64Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.19-4-server
> --initrd=/boot/initrd.img-2.6.19-4-server --debootstrap --dist=dapper
> --mirror=http://de.archive.ubuntu.com/ubuntu/ --passwd
General Infomation
--------------------
Hostname       :  slave3
Distribution   :  dapper
Fileystem Type :  ext3
Size Information
----------------
Image size     :  2Gb
Swap size      :  256Mb
Image type     :  sparse
Memory size    :  64Mb
Kernel path    :  /boot/vmlinuz-2.6.19-4-server
Initrd path    :  /boot/initrd.img-2.6.19-4-server
Networking Information
----------------------
IP Address 1   : 10.1.1.7
Netmask        : 255.255.255.0
Gateway        : 10.1.1.1
Creating swap image: /xen/domains/slave3/swap.img
Done
Creating disk image: /xen/domains/slave3/disk.img
Done
Creating ext3 filesystem on /xen/domains/slave3/disk.img
Done
Installing your system with debootstrap mirror http://de.archive.ubuntu.com/ubuntu/
Done
Running hooks
Done
No role script specified.  Skipping
Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done
Logfile produced at:
        /var/log/xen-tools/slave3.log
root@slave1:/home/linuxuser#

E o nosso arquivo de configuração limpo:

root@slave1:/home/linuxuser# sed '/^$/d;/^#/d' /etc/xen/slave3.cfg
kernel = '/boot/vmlinuz-2.6.19-4-server'
ramdisk = '/boot/initrd.img-2.6.19-4-server'
memory  = '64'
root    = '/dev/hda1 ro'
disk    = [ 'file:/xen/domains/slave3/disk.img,hda1,w', 'file:/xen/domains/slave3/swap.img,hda2,w' ]
name    = 'slave3'
vif  = [ 'ip=10.1.1.7' ]
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

Para iniciar a Máquina Virtual:

xm create /etc/xen/slave3.cfg
Using config file "/etc/xen/slave3.cfg".
Error: I need 65536 KiB, but dom0_min_mem is 262144 and shrinking to 262144 KiB would leave only -162532 KiB free.

Tudo bem, belo detalhe, minha máquina só tem 256 de memória, a solução é baixar o valor no /etc/xen/xend-config.sxp

(dom0-min-mem 64)

Reinicie a máquina.

E crie novamente a VM.

xm create /etc/xen/slave3.cfg

Para rodar:

xm console slave3

Para listar a VM:

xm list

Para desligá-la:

xm shutdown slave3

Se você deseja adicionar a VM para iniciar automaticamente no próximo boot, então:

ln -s /etc/xen/slave3.cfg /etc/xen/auto

Aqui estão os comando smais importantes:

xm create -c /path/to/config - Inicia a VM.
xm shutdown <name> - Pára a VM.
xm destroy <name> - Pára a VM SEM Shutdown. Como desligar o cabo de energia.
xm list - Lista as VM ativas.
xm console <name> - Login na VM.
xm help - Básico!

Passos rápidos para criar uma segunda VM:

xen-create-image --hostname=slave4 --size=2Gb --swap=256Mb --ide
--ip=10.1.1.7 --netmask=255.255.255.0 --gateway=10.1.1.1 --force
--dir=/xen --memory=64Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.19-4-server
--initrd=/boot/initrd.img-2.6.19-4-server --debootstrap --dist=edgy
--mirror=http://de.archive.ubuntu.com/ubuntu/ --passwd

Iniciando:

xm create /etc/xen/slave4.cfg

Shutdown:

xm shutdown slave2

E para listar todas as VM que foram criadas:

xen-list-images

É isto.

  • Ao instalar uma VM com o Debian 4, e fazer ssh eu tenho a seguinte mensagem:
stdin: is
not a tty, and no console.

Para resolver isto, basta instalar o udev na máquina virtual.

Instalação no Debian

Para a instalação no Debian Etch, muda-se poucos passos, conforme resumudamente abaixo:

apt-get install screen ssh debootstrap python python-twisted iproute bridge-utils libcurl3-dev libssl0.9.7

Obtendo o binário:

cd /usr/src
wget http://bits.xensource.com/oss-xen/release/3.1.0/bin.tgz/xen-3.1.0-install-x86_32.tgz
tar xvzf xen-3.1.0-install-x86_32.tgz
cd dist/
./install.sh
mv /lib/tls /lib/tls.disabled

Iniciando o xen junto com o RunLive(Campaign, não consegui evitar)

update-rc.d xend defaults 20 21
update-rc.d xendomains defaults 21 20

Criando a ramdisk:

depmod 2.6.18-xen
apt-get install yaird
mkinitrd.yaird -o /boot/initrd.img-2.6.18-xen 2.6.18-xen

O mkinitrd cria a ramdisk em /boot/initrd.img-2.6.18-xen
Precisamos adicionar o novo kernel no Grub, fazendo apenas:

update-grub

Agora é só reiniciar o sistema:

shutdown -r now

Pronto, para criar as VM, basta seguir os passos descritos acima (para ubuntu).

Links

Leia também essas notícias:

Veja o logfile "ao vivo" no Linux

Basta espetar os dispositivos no computador e usar?

Análise do Windows Vista pela Apple

Fire Fly mais um pack de icones para sua Personalização de Vista/XP

Samsung Solid State Drive - O substituto do HD?

Ofertas Relacionadas
Apple Iphone 3gs 16gb Desbloqueado!
Apple Iphone 3gs 16gb Desbloqueado!
Mais info»
R$ 1,799.00
até 18x de 134.93
Iphone 3gs 32gb Desbloqueado 3.2mpx Gps Sygic Grtis!
Iphone 3gs 32gb Desbloqueado 3.2mpx Gps Sygic Grtis!
Mais info»
R$ 1,999.00
até 18x de 149.93
Promoo Celular Mp12 Hiphone Tv 2 Chips Cam 12.0   2gb Java
Promoo Celular Mp12 Hiphone Tv 2 Chips Cam 12.0 2gb Java
Mais info»
R$ 249.99
até 18x de 18.75
Vitrine TecnoBlog  

Popularity: 3% [?]

No Responses to “Como instalar o XEN no Ubuntu – Virtualizador tipo VMware”

  1. Fernando
    Boa noite,

    Estava tentando utilizar este tutorial para instalar o Xen no Ubuntu Feisty Fawn (i386), mas ao executar o primeiro comando:

    apt-get install ubuntu-xen-server

    Apresentou o erro:

    root@fernando-laptop:/home/fernando# apt-get install ubuntu-xen-server
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    E: Couldn’t find package ubuntu-xen-server
    root@fernando-laptop:/home/fernando#

    Seria possivel voce me ajudar.

    Muito obrigado

    Fernando

  2. stelmo
    experimente:

    oot@fernando-laptop:/home/fernando# apt-get install xen
    e pressionar TAB para o apt-get procurar automaticamente os pacotes possiveis de instalar

  3. Matheus De Gea
    Consegui instar tudo certo + na hora de criar a VM apresenta o seguinte erro:

    ERROR Internal error: Could not obtain handle on privileged command interface (2 = No such file or directory)
    Traceback (most recent call last):
    File “/usr/sbin/xm”, line 8, in
    from xen.xm import main
    File “/usr/lib/python2.5/site-packages/xen/xm/main.py”, line 61, in
    xc = xen.lowlevel.xc.xc()
    xen.lowlevel.xc.Error: (1, ‘Internal error’, ‘Could not obtain handle on privileged command interface (2 = No such file or directory)’)

    Alguem sabe o que pode ser?