Usted está aquí: Inicio Dokumentazio Irekia Manuales Virtualización de servicios utilizando XEN Algunos ejemplos de nuestra instalación
Acciones de Documento

Algunos ejemplos de nuestra instalación

Nota: Ésta es la vista de impresión del Manual de referencia completo en una sola página. Si lo prefiere puede encontrar la versión original aquí.

En este manual explicamos el proceso de instalación de un servidor XEN y el proceso de creación de máquinas virtuales.

1. Nuestro servidor físico

Características de nuestro servidor

El servidor que hemos comprado para la virtualización tiene una importancia especial, ya que sobre él van los servidores virtuales. Por esta razón merece la pena comprar un buén hardware. En nuestro caso, nos hemos decantado por un servidor Supermicro , con hardware soportado para Debian linux. Sus características son las siguientes:

  • Dos procesadores
  • 4 Gb de RAM (no hubiera sido malo ponerle 8)
  • Controladora 3ware para gestión del Raid5. Tiene 4 discos SATA de 500 Gb. Con 3 discos montamos el Raid5 y el cuarto queda en modo HotSpare, de forma que si uno de los discos del Raid cae, el que está en HotSpare entra automáticamente al Raid. Además, esta controladora envía alertas por email, con lo que te avisa de lo que está pasando.
Todo esto, por 2.500 € (IVA incluido). Es dinero si, pero el servidor lo vale, y va a tener que trabajar.

2. Instalación del servidor

Explicamos cómo hemos instalado el servidor

Instalación del servidor Debian


Antes de instalar XEN hay que instalar el servidor físico. Nosotros lo hemos realizado sobre distribuciones Ubuntu Server y Debian Lenny  (64 bit). Lo primero es crear las particiones, en nuestro caso ha quedado así:

  • Partición /boot : 1 Giga y como partición de arranque.
  • Partición Swap
  • Partición / : 8 Giga
  • El resto como partición LVM

Es importante tener en cuenta que si queremos virtualizar máquinas Windows es necesario que el host físico tenga las X-Window instaladas, por lo que es mejor instalarlas desde el principio. No vamos a profundizar en esta parte, se supone que si vas a instalar XEN sabrás como se instala Debian.

Una vez hecha la instalación básica, en una consola ejecutamos lo siguiente:

apt-get update 
apt-get upgrade
apt-get install openssh-server

Instalación del servidor XEN

Dentro de Debian vamos a instalar el paquete de XEN. Al hacerlo instalará un kernel especial para XEN.

En un Ubuntu Server:

apt-get instal ubuntu-xen-server

En una Debian Lenny (32 bit):

apt-get install xen-linux-system-2.6.26-2-xen-686

En una Debian Lenny (64 bit):

apt-get install xen-linux-system-2.6.26-2-xen-amd64

Luego instalamos el paquete xen-tools:

apt-get install xen-tools

A continuación editamos el fichero “/etc/modules” y añadimos la opción “loop” :

loop max_loop=64 

Ahora tenemos que reiniciar el servidor. Cuando arranque podemos ver que lo hace con un kernel XEN:

root@IMH01XEN01:~# uname -a 
Linux IMH01XEN01 2.6.24-21-xen #1 SMP Mon Aug 25 18:56:44 UTC 2008 x86_64 GNU/Linux

Volúmenes Lógicos

Para cada máquina virtual vamos a crear un nuevo volumen lógico. Esto nos da opción de poder gestionar el volumen más adelante: aumentar su tamaño, etc.

Instalamos el paquete:

apt-get install lvm2

Editamos el fichero /etc/modules  y añadimos la opción: dm-mod

A continuación configuramos los volúmenes lógicos. Necesitamos saber cual es la partición LVM (con el comando fdisk), en nuestro ejemplo es la  /dev/sda4

pvcreate /dev/sda4

Ahora creamos el Grupo de volumen:

vgcreate volgroupxen /dev/sda4

Ahora creamos el volumen lógico para la máquina virtual. Hay dos opciones:

  1. Si queremos virtualizar  sistemas Linux, es decir, si queremos tener un sistema parecido al que tiene el servidor físico (debian etch, ubuntu, ...) y queremos que estén paravirtualizados.
  2. lvmcreate: para crear cualquier tipo de sistema virtual
Lo veremos enseguida con unos ejemplos.

3. Virtualización Debian linux

Crearemos una máquina virtual linux

En este ejemplo, utilizaremos  paravirtualización .

Necesitamos saber el kernel de la máquina física para crear la nueva máquina virtual. Para ello utilizamos el comando uname

root@IMH01XEN01:~# uname -r
2.6.24-21-xen

En este ejemplo vamos a crear una máquina virtual para soportar un servidor de BD. Estas son sus características:

  • Nombre: XenDB
  • Distribución Linux: etch
  • Tamaño del disco duro: 10 Gb
  • Tamaño de la Swap : 1 Gb .

Con el siguiente comando se crearía la máquina virtual. Automáticamente se crea el volumen lógico con el valor que le hemos dado.

root@IMH01XEN01:~# xen-create-image install-method=debootstrap --hostname=XenDB
--dist=etch --lvm=volgroupxen --fs=ext3 --dhcp --kernel=/2.6.24-21-xen
--force --initrd=/boot/initrd.img-2.6.24-21-xen --arch=amd64 --size=10G
--swap=1G
Opción (para usarla con cuidado): Si utilizamos el parámetro "--force" si previamente existía una máquina virtual con el mismo nombre, la machacaría.

Ahora vamos a editar el fichero de configuración principal de Xen. Mejor hacer primero una copia.

cp /etc/xen/xend-config.sxp /etc/xen/xend-config.sxp.backup
nano /etc/xen/xend-config.sxp

En la gestión de interfaces activamos esta línea :

(network-script network-bridge)  

y reiniciamos el servicio:

/etc/init.d/xend restart

Ahora editamos el fichero de configuración:

nano /etc/xen/XenDB.cfg

Aquí podemos cambiar los parámetros que nos interesen (por ejemplo el tamaño de la swap) . Asegúrate de que el path del kernel es el correcto. En nuestro caso:

kernel      = '/boot/vmlinuz-2.6.24-21-xen'

Al final añade esta línea, sino al ejecutar el comando  xm console la consola no funciona:

extra="console=tty xencons=tty"

El comando de gestión de Xen es xm . Por ejemplo:

Para cargar el servidor virtual que hemos creado:

xm create XenDB.cfg 
xm console XenDB

Para apagarlo: 

xm shutdown XenDB

Si no responde:

xm destroy XenDB 

Si queremos que cuando arranque el servidor físico arranque también el virtual, hay que añadir este enlace simbólico:

ln -s /etc/xen/XenDB.cfg /etc/xen/auto/host.cfg

4. Virtualizando un Ubuntu Desktop

Crearemos una máquina virtual con Ubuntu Desktop

En este ejemplo queremos crear un  Ubuntu Intrepid Hearon, y como queremos que esté paravirtualizado, utilizaremos misma técnica que hemos utilizado antes al crear el servidor virtual con debian: debootstrap.

Para poder hacerlo, es imprescindible que en la carpeta /usr/lib/xen-tools/ del servidor físico exista un enlace o "soft link" con el nombre intrepid.d . Si no existiera no sabría como instalarlo.

root@IMH01XEN01:~# cd /usr/lib/xen-tools/ 

root@IMH01XEN01:/usr/lib/xen-tools# ls -la

total 72

drwxr-xr-x  9 root root  4096 2008-10-24 10:37 .

drwxr-xr-x 87 root root 32768 2008-12-10 17:46 ..

drwxr-xr-x  2 root root  4096 2008-10-24 10:37 centos-4.d

drwxr-xr-x  2 root root  4096 2008-10-24 10:37 centos-5.d

-rwxr-xr-x  1 root root  4409 2008-04-06 03:12 common.sh

drwxr-xr-x  2 root root  4096 2008-10-24 10:37 dapper.d

drwxr-xr-x  2 root root  4096 2008-10-24 10:37 debian.d

drwxr-xr-x  2 root root  4096 2008-12-10 17:53 edgy.d

lrwxrwxrwx  1 root root     8 2008-10-24 10:37 etch.d -> debian.d

lrwxrwxrwx  1 root root    15 2008-10-24 10:37 fedora-core-4.d -> fedora-core-6.d

lrwxrwxrwx  1 root root    15 2008-10-24 10:37 fedora-core-5.d -> fedora-core-6.d

drwxr-xr-x  2 root root  4096 2008-10-24 10:37 fedora-core-6.d

lrwxrwxrwx  1 root root    15 2008-10-24 10:37 fedora-core-7.d -> fedora-core-6.d

lrwxrwxrwx  1 root root     6 2008-10-24 10:37 feisty.d -> edgy.d

drwxr-xr-x  2 root root  4096 2008-10-24 10:37 gentoo.d

lrwxrwxrwx  1 root root     6 2008-10-24 10:37 gutsy.d -> edgy.d

lrwxrwxrwx  1 root root     6 2008-10-24 10:37 hardy.d -> edgy.d

lrwxrwxrwx  1 root root     8 2008-10-24 10:37 lenny.d -> debian.d

lrwxrwxrwx  1 root root     8 2008-10-24 10:37 sarge.d -> debian.d

lrwxrwxrwx  1 root root     8 2008-10-24 10:37 sid.d -> debian.d

Como no existe, lo creamos nosotros:

root@IMH01XEN01:/usr/lib/xen-tools# ln -s  edgy.d intrepid.d

Hay que hacer algo parecido para debootstrap:

cd /usr/share/debootstrap/scripts/  
ln -s edgy intrepid

Ahora con este comando creamos la máquina virtual:

root@IMH01XEN01:/usr/lib/xen-tools# xen-create-image install-method=deboottstrap --hostname=XenUbuntuDesktop01 --dist=intrepid --mirror=http://es.archive.ubuntu.com/ubuntu/ --lvm=volgroupxen --fs=ext3 --dhcp --kernel=/2.6.24-21-xen --force --initrd=/boot/initrd.img-2.6.24-21-xen --arch=amd64 --size=10G –swap=1G

Este es el resultado:

General Information 
--------------------
Hostname       :  XenUbuntuDesktop01
Distribution   :  intrepid
Partitions     :  swap            1G    (swap)
                  /               10G   (ext3)
Image type     :  full
Memory size    :  128Mb
Kernel path    :  /2.6.24-21-xen
Initrd path    :  /boot/initrd.img-2.6.24-21-xen
Networking Information
----------------------
IP Address     : DHCP [MAC: 00:16:3E:84:99:66]
Removing /dev/volgroupxen/XenUbuntuDesktop01-swap - since we're forcing the install
Removing /dev/volgroupxen/XenUbuntuDesktop01-disk - since we're forcing the install
Creating swap on /dev/volgroupxen/XenUbuntuDesktop01-swap
Done
Creating ext3 filesystem on /dev/volgroupxen/XenUbuntuDesktop01-disk
Done
Installation method: debootstrap
Done
Running hooks
Done
No role scripts were specified.  Skipping
Creating Xen configuration file
Done
All done
Logfile produced at:
     /var/log/xen-tools/XenUbuntuDesktop01.log

Si queremos ver cómo ha ido la instalación, podemos mirar el log:

/var/log/xen-tools/XenUbuntuDesktop01.log

Antes de arrancar, repasamos la configuración. Editamos el fichero de configuración:

cd /etc/xen 
nano XenUbuntuDesktop01.cfg

En el parámetro kernel yo tenía esto:

kernel      = '/2.6.24-21-xen' 

Y lo he dejado así:

kernel      = '/boot/vmlinuz-2.6.24-21-xen' 

Ahora para poner en marcha la máquina virtual:

xm create XenUbuntuDesktop01.cfg ; xm console XenUbuntuDesktop01

Como resultado nos da una consola de login, y podrás acceer como root (sin password).

La IP la coge a través de DHCP, tendrás que ejecutar ifconfig para ver cual tiene.

Por defecto no se instala gnome, y como nosotros lo vamos a necesitar lo instalamos:

apt-get install xorg gnome-core

Para poder conectarnos al Ubuntu Desktop mediante VNC primero tenemos que instalar el servidor de VNC en el ubuntu virtual

sudo apt-get install vnc4server

Ahora hay que configurarlo. En caso contrario al conectarnos no podremos utilizar Gnome. Instalamos nano y editamos el fichero de configuración.

apt-get install nano
nano .vnc/xstartup

Esto es lo que trae por defecto:

#!/bin/sh 
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &

Lo dejamos así:

#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
unset SESSION_MANAGER
gnome-session &

Ahora arrancamos vncserver:

vncserver :1

Nos pide que configuremos un password. Hay que apuntarlo porque lo necesitaremos para poder conectarnos desde otra máquina.

En adelante podremos conectarnos al Ubuntu virtual utilizando VNC.

5. Virtualización Windows

En este caso vamos a utilzar XEN para virtualizar una máquina Windows

En este ejemplo vamos a instalar una maquina Windows dentro de XEN. Como veremos, no es tan rápido como crear una máquina Linux pero se puede hacer. Por otro lado, hay que tener en cuenta que no será  paravirtualización, por lo que no será tan eficiente.

Creamos el volumen

Para esto utilizamos el comando lvcreate. Esta es su sintaxis:
lvcreate -L 40G -n NombreVolumenLogico NombreGrupoVolumen

En nuestro caso la máquina windows tiene estas características:

  • Nombre: XenWinServer01
  • Tamaño de disco duro: 40 Gb
Por lo tanto, este es el comando para crear el volumen:
lv create -L 40G -n xenwiserver01 volgroupxen

Una vez hecho esto, lo formateamos como VFAT:

mkfs -t vfat /dev/volgroupxen/xenwinserver01

Para instalar maquinas virtuales Windows es necesario que en el servidor físico Linux tengamos instaladas las X-Window. En caso contrario no podríamos ver la ventana de instalación de la máquina Windows. Es importante tener esto en cuenta al instalar el servidor físico Linux.

Imaginémonos que la plantilla del servidor virtual es esta: /etc/xen/xenwinserver01.cfg

La editamos y y configuramos los valores que nos interesan: nombre, memoria, procesadores ...

  • En la sección Boot tenemos que poner el valor 'd' para que arranque desde CD y poder comenzar la instalación de Windows. Una vez finalizada la instalación ponemos de nuevo 'c' para que arranque de disco duro.
  • En el parámetro Disk le ponemos el volumen lógico que le corresponde.

Por ejemplo:

kernel = '/usr/lib/xen/boot/hvmloader'
builder = 'hvm'
memory = 1024
name = 'xenwinserver01'
vcpus = 1
vif = [ 'type=ioemu, bridge=xenbr0' ]
cdrom = '/dev/sdc0'
boot = 'c'
sdl = 1
vnc = 0
nographic = 1
disk = [ 'phy:/dev/volgroupxen/xenwinserver01,hda,w', 'phy:/dev/loop1,ioemu:hdc:cdrom,r' ]
device_model = '/usr/lib/xen/bin/qemu-dm'

Para seguir con la instalación necesitamos los CD de instalación de Windows. Nosotros hemos generado una imagen ISO del CD que luego montamos en el servidor. Para hacerlo primero tenemos que buscar un  loop libre:

Por ejemplo este está ocupado:

root@IMH01XEN01:/etc/xen# losetup /dev/loop1 
/dev/loop1: [0803]:4472839 (/root/InstalazioIrudiak/win2kserver/w2kserver.iso)

Este en cambio está libre:

root@IMH01XEN01:/etc/xen# losetup /dev/loop2 
loop: can't get info on device /dev/loop2: No such device or address

Ahora montamos la imagen ISO para que el servidor virtual la pueda ver:

root@IMH01XEN01:/etc/xen# losetup -r /dev/loop2 /root/InstalazioIrudiak/win2003server/SW_CD_Win.iso

Configuramos el Loop en la plantilla del servidor virtual, en el parámetro  disk :

disk = [ 'phy:/dev/volgroupxen/xenwinserver2003_01,hda,w', 'phy:/dev/loop2,ioemu:hdc:cdrom,r' ]
Ahora deberíamos comenzar con la instalación de Windows. Perdonad, pero esa parte la tengo documentada en el siguiente ejemplo, en el de la virtualización de Windows XP, asi que seguid leyendo  ;-)

6. Virtualizando Windows XP

Veremos como virtualizar un Windows XP

Lo primero que haremos será crear una ISO con el CD de instalación de Windows XP. Lo podemos hacer utilizando K3B. Una vez que hemos generado la imagen, la copiamos por scp al servidor físico.

root@IMH01XEN01:~# ls -l  /root/InstalazioIrudiak/wxpsp3/ 
total 669712
-rw-r--r-- 1 root root 685105152 2008-12-11 16:30 WXPSP3.iso

Ahora vamos a generar un volumen lógico. Le pondremos un disco de 10 Gb, ya que en nuestro caso el XP virtualizado no va  a tener muchos datos.

root@IMH01XEN01:~# lvcreate -L 10G -n xenwinxp01 volgroupxen 
  Logical volume "xenwinxp01" created

Ahora vamos a formatear el disco que hemos creado

root@IMH01XEN01:~# mkfs -t vfat /dev/volgroupxen/xenwinxp01 

Como hemos comentado antes, utilizaremos una imagen ISO para la instalación, y previamente hay que montarla para que el sistema la pueda ver. Para montar la ISO primero buscaremos un  loop libre.

root@IMH01XEN01:/etc/xen# losetup /dev/loop1 
loop: can't get info on device /dev/loop1: No such device or address

Este está libre, así que lo utilizaremos.

root@IMH01XEN01:/etc/xen# losetup -r /dev/loop1 /root/InstalazioIrudiak/wxpsp3/WXPSP3.iso

Podemos ver si se ha montado correctamente:

root@IMH01XEN01:/etc/xen# losetup /dev/loop1 
/dev/loop1: [0803]:4472848 (/root/InstalazioIrudiak/wxpsp3/WXPSP3.iso)

Ahora vamos a la carpeta de configuración de XEN y copiamos la configuración de otra máquina virtual windows para luega modificarla:

root@IMH01XEN01:~# cd /etc/xen 
root@IMH01XEN01:/etc/xen# cp xenwinserver01.cfg xenwinxp01.cfg

Modificamos la configuración

kernel = '/usr/lib/xen/boot/hvmloader' 
builder = 'hvm'
memory = 512
name = 'xenwinxp01'
vcpus = 1
vif = [ 'type=ioemu, bridge=xenbr0' ]
# cdrom = '/dev/sdc0'
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot='d'
sdl = 1
vnc = 0
nographic = 0
disk = [ 'phy:/dev/volgroupxen/xenwinxp01,hda,w','phy:/dev/loop1,ioemu:hdc:cdrom,r']
device_model = '/usr/lib/xen/bin/qemu-dm'
usbdevice='tablet'

Estos son los parámetros que hemos modificado:

memory = 512 
name = 'xenwinxp01'
boot = 'd'
sdl = 1
vnc = 0
nographic = 0
disk = [ 'phy:/dev/volgroupxen/xenwinxp01,hda,w', 'phy:/dev/loop1,ioemu:hdc:cdrom,r' ]
usbdevice='tablet' (para que el raton no de problemas)

Se supone que todo está preparado. Para poner en marcha la instalación necesitamos tener cargadas las X-Windows en el servidor linux, en caso contrario no podremos ver las ventanas de instalación de Windows. En nuestro caso vamos a conectarnos al servidor físico a través de VNC.

En el servidor físico XEN tenemos cargadas las X-Window (Gnome) y Remote Desktop configurado como se ve en la imagen:

XEN instalazioko irudia

Si hemos hecho todo bien podremos conectarnos por VNC al servidor físico XEN. Aquí vemos el escritorio remoto de nuestro servidor, limpio ¿verdad?

XEN instalazioko irudia













Ahora desde la sesión VNC abrimos un consola en el servidor XEN y ponemos en marcha la máquina virtual Windows, con lo que pondremos en marcha la instación de Windows:

XEN instalazioko irudia

Vemos la ventana de instalación

XEN instalazioko irudia

Ahora continuamos con la instalación normal de Windows. Al finalizar editamos la configuración de la máquina virtual y comentamos el parámetro  nographic=1 .

#nographic=1
Con esto conseguimos que esta máquina virtual pueda arrancar a pesar de que el servidor físico no tenga cargado Gnome. Dicho de otra forma, el servidor Linux no necesita tener las X-Windows cargadas para arrancar una máquina virtual Windows con su entorno gráfico.

Recomienda al IMH

Anuncios Google
Zerikasi
Zerikasi: Aprendizaje a lo largo de la vida
Gobierno Vasco - Departamento de Educación, Universidades e Investigación. Ir a su web
Ciclos Formativos - Heziketa Zikloak
Ciclos Formativos - Heziketa Zikloak
Contacto

IMH en las Redes Sociales
Siguenos en Twitter Siguenos en Facebook Siguenos en Tuenti Siguenos en Linkedin Siguenos en nuestro canal de Youtube Siguenos en Flickr Siguenos en SlideShare
Ingenieria en Alternancia en las Redes Sociales
Siguenos en Twitter Siguenos en Facebook Siguenos en nuestro canal de Youtube Siguenos en Tuenti Follow us on Flickr Follow us on Picasa