Como instalar o XEN no Ubuntu – Virtualizador tipo VMware
O Xen é mais um virtualizador que permite rodar várias instâncias do Linux, 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 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
- Xen: http://www.xensource.com/xen/
- xen-tools: http://xen-tools.org/software/xen-tools
- Ubuntu: http://www.ubuntu.com/
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! Mais info» R$ 1,799.00 até 18x de 134.93 | R$ 1,999.00 até 18x de 149.93 | 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% [?]
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
oot@fernando-laptop:/home/fernando# apt-get install xen
e pressionar TAB para o apt-get procurar automaticamente os pacotes possiveis de instalar
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?