Servidor Ubuntu con soporte de virtualización Xen

Veamos como podemos configurar un servidor Ubuntu como plataforma de virtualización mediante el uso de Xen. En primer lugar debemos instalar un kernel con soporte Xen:

apt-get install ubuntu-xen-server
mkdir /home/xen/

Nos aseguramos que las opciones de configuración de grub sean correctas en ‘/boot/grub/menu.lst’ y que el kernel con soporte Xen es el que arranca por defecto. A continuación reiniciamos:

reboot

En el siguiente inicio del sistema podemos comprobar que Xen esta corriendo si se ejecuta correctamente el siguiente comando:

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1738     2     r-----     68.4

Ahora ha llegado el momento de realizar la instalación de una máquina virtual. La distribución puede ser cualquiera de las que mencionadas en ‘/usr/lib/xen-tools’:

$ ls -l /usr/lib/xen-tools
drwxr-xr-x 2 root root 4096 Sep 25 22:05 centos-4.d
drwxr-xr-x 2 root root 4096 Sep 25 22:05 centos-5.d
-rwxr-xr-x 1 root root 4409 Apr  6 03:12 common.sh
drwxr-xr-x 2 root root 4096 Sep 25 22:05 dapper.d
drwxr-xr-x 2 root root 4096 Sep 25 22:05 debian.d
drwxr-xr-x 2 root root 4096 Sep 25 22:05 edgy.d
lrwxrwxrwx 1 root root    8 Sep 25 22:05 etch.d -> debian.d
lrwxrwxrwx 1 root root   15 Sep 25 22:05 fedora-core-4.d -> fedora-core-6.d
lrwxrwxrwx 1 root root   15 Sep 25 22:05 fedora-core-5.d -> fedora-core-6.d
drwxr-xr-x 2 root root 4096 Sep 25 22:05 fedora-core-6.d
lrwxrwxrwx 1 root root   15 Sep 25 22:05 fedora-core-7.d -> fedora-core-6.d
lrwxrwxrwx 1 root root    6 Sep 25 22:05 feisty.d -> edgy.d
drwxr-xr-x 2 root root 4096 Sep 25 22:05 gentoo.d
lrwxrwxrwx 1 root root    6 Sep 25 22:05 gutsy.d -> edgy.d
lrwxrwxrwx 1 root root    6 Sep 25 22:05 hardy.d -> edgy.d
lrwxrwxrwx 1 root root    8 Sep 25 22:05 lenny.d -> debian.d
lrwxrwxrwx 1 root root    8 Sep 25 22:05 sarge.d -> debian.d
lrwxrwxrwx 1 root root    8 Sep 25 22:05 sid.d -> debian.d

En concreto, vamos a crear una máquina virtual con las siguientes características:

  • Distribución: Ubuntu Hardy
  • Tamaño del disco duro: 5 GB
  • Swap: 256 MB
  • Memoria RAM: 256 MB
  • IP: 192.168.22.101
  • Contraseña de root: Se nos preguntará interactivamente.
  • Directorio donde se almacenara la información: /home/xen/
xen-create-image --hostname=webserver.localhost --size=5Gb --swap=256Mb --ide \
--ip=192.168.22.101 --netmask=255.255.255.0 --gateway=192.168.22.1 --force \
--dir=/home/xen --memory=256Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.24-19-xen \
--initrd=/boot/initrd.img-2.6.24-19-xen --install-method=debootstrap --dist=hardy \
--mirror=http://archive.ubuntu.com/ubuntu/ --passwd

Resultado:

General Information
--------------------
Hostname       :  webserver.localhost
Distribution   :  hardy
Partitions     :  swap            256Mb (swap)
                  /               5Gb   (ext3)
Image type     :  sparse
Memory size    :  256Mb
Kernel path    :  /boot/vmlinuz-2.6.24-19-xen
Initrd path    :  /boot/initrd.img-2.6.24-19-xen

Networking Information
----------------------
IP Address 1   : 192.168.22.101 [MAC: 00:16:3E:6B:A7:BD]
Netmask        : 255.255.255.0
Broadcast      : 192.168.22.255
Gateway        : 192.168.22.1


Creating partition image: /home/xen/domains/webserver.localhost/swap.img
Done

Creating swap on /home/xen/domains/webserver.localhost/swap.img
Done

Creating partition image: /home/xen/domains/webserver.localhost/disk.img
Done

Creating ext3 filesystem on /home/xen/domains/webserver.localhost/disk.img
Done
Installation method: debootstrap
Done

Running hooks
Done

No role scripts were 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/webserver.localhost.log

Se habran creado los ficheros necesarios en ‘/home/xen’ y la configuración de la máquina se encuentra en ‘/etc/xen/webserver.localhost.cfg’. Debemos editarla y cambiar las cadenas ‘file:/’ (obsoleta en la versión actual de Xen):

disk        = [
                  'file:/home/xen/domains/webserver.localhost/swap.img,hda1,w',
                  'file:/home/xen/domains/webserver.localhost/disk.img,hda2,w',
              ]

Por:

disk        = [
                  'tap:aio:/home/xen/domains/webserver.localhost/swap.img,hda1,w',
                  'tap:aio:/home/xen/domains/webserver.localhost/disk.img,hda2,w',
              ]

En ese mismo fichero, en caso de que tengamos un ordenador con varias CPUs o varios cores, podemos habilitar la máquina virtual para que use ambos añadiendo lo siguiente al mismo fichero ‘/etc/xen/webserver.localhost.cfg’:

vcpus       = '2'

Por defecto Xen viene configurado en modo bridge, como probablemente nuestro proveedor de Internet únicamente nos proporcione una IP, deberiamos cambiarlo a modo NAT. Sino, en el ejemplo anterior, cuando arranquemos la máquina virtual Xen intentará asignar la IP 192.168.22.101 a eth0 y probablemente perdamos la conexión remota si estamos por SSH. Para realizar el cambio editamos ‘/etc/xen/xend-config.sxp’ y comentamos:

# To bridge network traffic, like this:
#
# dom0: ----------------- bridge -> real eth0 -> the network
#                            |
# domU: fake eth0 -> vifN.0 -+
# [...]
#(network-script network-bridge)
#(vif-script vif-bridge)

Para después descomentar:

## Use the following if network traffic is routed with NAT, as an alternative
# to the settings for bridged networking given above.
(network-script network-nat)
(vif-script     vif-nat)

Además es recomendable deshabilitar la relocación de máquinas virtuales: ‘(xend-relocation-server no)’

A continuación ya podemos arrancar la máquina:

xm create /etc/xen/webserver.localhost.cfg

Para conectarse a la máquina:

xm console webserver.localhost

Si quisieramos salir de ella basta con pulsar CTRL y ‘+’. Para parar o destruir (como si fuese un power off) la máquina:

xm shutdown webserver.localhost
xm destroy webserver.localhost

Para listar las máquinas activas:

xm list

Más opciones en ‘xm help’.

Si quisiesemos añadir más discos duros virtuales, podemos crearlos mediante:

dd if=/dev/zero of=extra.img oflag=direct bs=1M seek=153600 count=1
mke2fs -j -O dir_index extra.img

Esto generará el fichero extra.img con capacidad para 150 GB, formateado con ext3. Para activarlo en nuestra máquina virtual debemos editar ‘/etc/xen/webserver.localhost.cfg’.

Finalmente, para que la máquina virtual arranque automáticamente al iniciar el sistema:

ln -s /etc/xen/webserver.localhost.cfg /etc/xen/auto

Más información en Virtualización con Xen.

Leave a Reply

Your email address will not be published. Required fields are marked *