Maquinas Virtuales con XEN – Como instalar XEN en Debian Squeeze

XEN Logo
Logo | XEN

Hoy toca hablar de un concepto muy grande en la rama de la informática, la virtualización, anteriormente hemos tenido la posibilidad de crear escritorios virtuales con VirtualBox

Pero no podemos usar este tipo de programas para un servidor, tendremos que hacer uso de una virtualización de verdad, no solo para hacer escritorios virtuales, si no algo que nos permita tener mas de un servidor en producción.

Hablemos de XEN.En mi caso voy a explicar como hacer una maquina virtual y luego varios comandos para que podáis usar esa maquina virtual. Tened en cuenta que esto es mas complicado que hacerlo con algún programa tipo VirtualBox, VirtualPC o parecidos.

Antes de nada conozcamos un poco como funciona XEN, podéis ver información aquí:

 Que es Xen

Comprobando qué tipo de virtualización soporta nuestro servidor

Lo primero que necesitamos saber es si nuestro ordenador/servidor permite la virtualización, en caso de que no lo permita, aquí se a acabaría el tutorial, ya que necesitarías un servidor que lo soportara.

egrep '(vmx|svm)' --color=always /proc/cpuinfo

Con este sencillo comando nos aparecerá algo parecido a esto:

flag : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

Si aparece remarcado VMX (para INTEL) o SVM (para AMD) podéis soportar XEN y por tanto continuar con el tutorial.

Os recomendaría que hagáis esto sobre una arquitectura de 64 bits ya que cada maquina virtualizada adquiere RAM del Host o dom0 (servidor que contendrá las maquinas virtuales), por tanto si vais a montar un par de maquinas (para diferentes servicios) vais a necesitar de bastante RAM.

Instalando Xen

Empecemos a darle caña a esto, lo primero que necesitamos es instalar XEN sus paquetes, el Kernel especifico y las herramientas.

Antes de nada, vamos a hacer un update & upgrade de nuestra maquina, para que este totalmente actualizada

apt-get update
apt-get upgrade

Ahora instalamos todo lo necesario:

apt-get install xen-linux-system-XXX xen-utils-4.0 bridge-utils xen-qemu-dm-4.0

Donde XXX cambiara dependiendo de tu arquitectura y kernel actual. Por ejemplo en mi caso es: xen-linux-system-amd64, ya que mi arquitectura es de 64 bits.

ACTUALIZACION: En debian Wheezy no hace falta instalar xen-qemu-dm-4.0

De ahí que actualizáramos anteriormente, con esto ya tenemos Xen instalado y podemos empezar a configurar las diferentes partes.

Configurando Grub

Lo primero es hacer que arranque el kernel de Xen de manera nativa, por eso nos toca modificar el Grub, en este caso Debian squeeze tiene Grub2:

mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux

Con esto lo que conseguimos es darle al kernel de Xen preferencia en el arranque, cambiando su prioridad en el Grub. Siempre que se toca el Grub, es necesario aplicar los cambios

update-grub2

Configurando la red

La mejor configuración es en modo bridge (puente) de esta manera las maquinas virtuales son accesibles desde cualquier parte de la red, como si se tratara de ordenador mas conectado.

Esto se consigue modificando el archivo xen-config.sxp ubicado en /etc/xen/

Dentro tenéis que descomentar las siguientes lineas:

(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 1024)

Explico un poco todas:

  • (network-script network-bridge): Es un script de Xen para permitir el modo bridge (puente) en las Maquinas Virtuales
  • (vif-script vif-bridge): Este script se utiliza para controlar el modo bridge (puente)
  • (dom0-min-mem 1024): Esto pone una limitación de 1024Mb de RAM al Host o dom0 de manera que su RAM no baje nunca de ese limite, de manera que controlamos siempre que no tenga asignada menos memoria de la necesaria para poder funcionar correctamente.

Configurando la creación de las maquinas virtuales

Para poder crear las maquinas virtuales necesitamos de un paquete mas xen-tools, lo instalamos:

apt-get install xen-tools

Una vez instalado, podemos acceder a su configuración, aquí configuraremos como se van a crear las maquinas virtuales por defecto, el archivo podemos encontrarlo en /etc/xen-tools/xen-tools.conf

dir = /vm
install-method = debootstrap

size   = 10Gb      # Disk image size.
memory = 128Mb    # Memory size
swap   = 512Mb    # Swap size
fs     = ext4     # use the EXT3 filesystem for the disk image.
dist   = squeeze

# Default gateway and netmask for new VMs
gateway    = 192.168.1.1
netmask    = 255.255.255.0

# When creating an image, interactively setup root password
passwd = 123456

# Prevents new VMs using some generic mirror, but actually uses the one from the Dom0.
mirror = `xt-guess-suite-and-mirror --mirror`

# Ext3 had some weird settings per default, like noatime. If you want to change that, set it to 'defaults'
ext3_options     = defaults

# Let xen-create-image use pygrub, so that the grub from the VM is used, which means you no longer need to store kernels outside the VMs. Keeps things very flexible.
pygrub=1
  • dir: directorio donde se localizaran las imágenes de las maquinas virtuales
  • install-method: método de instalación del sistema operativo al crear la maquina virtual. Existen 4 tipos diferentes
    • copy: Instala copiando recursivamente un directorio
    • debootstrap: instala un sistema basado en Debian dentro de un subdirectorio de otro sistema ya instalado
    • rpmstrap: Exactamente lo mismo que debootstrap pero con sistemas RPM
    • tar: Instala descomprimiendo un fichero
  • size: Tamaño asignada la imagen que se generará para la maquina virtual. Esto generara un «disk.img» de ese tamaño.
  • memory: Memoria asignada a la maquina virtual.
  • swap: Swap que se asigna a la maquina virtual. Esto generara un «swap.img» de ese tamaño.
  • fs: FileSystem de la maquina virtual.
  • dist: Distribución que se instalará en la maquina virtual.
  • gateway: Puerta de enlace de la tarjeta de red de la maquina virtual
  • netmask: Mascara de red de la tarjeta de red de la maquina virtual
  • passwd: Contraseña por defecto del usuario root de la maquina virtual
  • mirror: Repositorios por defecto del sistema operativo de la maquina virtual.
  • ext3_options: Opciones de la extensión de archivos ext3 que se pueden dar al montar el sistema de archivos
  • pygrub: Pinchan en el enlace y tendrás toda la información

Con esto ya tenemos todo configurado, es hora de crear las maquinas virtuales.

Crear maquinas virtuales

Lo que hemos puesto en el archivo xen-tools.conf son los atributos por defecto que tendrá nuestra maquina virtual, como podéis ver, no tiene IP, ni nombre. Eso lo vamos a especificar al crear la maquina:

xen-create-image --hostname servidorWeb --ip 192.168.1.111 --vcpus 1

Con esto estamos creando una maquina virtual llamada servidorWeb con la IP 192.168.1.111. También le hemos asignado 1 procesador virtual a la maquina.

Xen se pondrá a trabajar y va a crear ciertos archivos, ademas nos pedirá la contraseña de administrador.

Este comando nos ha creado lo siguiente en /vm (recordemos que ha sido el directorio seleccionado en la configuración anterior)

  • Ha creado la carpeta domains en cuyo interior se crearan todas las maquinas virtuales.
  • Ha creado la carpeta servidorWeb dentro de domains.
  • Dentro de servidorWeb ha creado disk.img y swap.img.
  • De la misma manera, ha creado un archivo de configuración de la propia maquina, que podemos modificar nosotros mismos en /etc/xen/servidorWeb.cfg

Básicamente ha creado la estructura de archivos necesarios para la maquina virtual, el disco, el swap y el archivo de configuración. Ahora solamente hace falta arrancar la maquina virtual y entrar en ella.

xm create servidorWeb.cfg

Con esto ya tenemos nuestra maquina virtual arrancada, si usáis htop o top, podéis ver como ya tenéis menos memoria en vuestro Host, que es la memoria que esta usando la maquina virtual.

Para poder entrar en la maquina se puede hacer tranquilamente por SSH, haciendo [email protected] y usando la contraseña que habéis configurado al crear la maquina virtual

Comandos Xen

Comandos para apagar la maquina virtual, pausar la maquina virtual, apagar bruscamente una maquina virtual (como si quitásemos el enchufe), y hacer un reboot respectivamente.

xm shutdow servidorWeb
xm pause servidorWeb
xm destroy servidorWeb
xm reboot servidorWeb

Para crear una maquina virtual usando una imagen ISO.

xen-create-image --hostname webserver --ip 192.168.10.222 --vcpus 1 --pygrub --mirror=/home/miHome/debian5.iso --dist=etch

Para listas todas las maquinas virtuales que tenemos, visualizando la memoria asignada, ID, procesador, estado y tiempo en ejecucion.

xm list

Asignar memoria al host o dom0, ya que esto no ocurre automáticamente al apagar una maquina.

xm mem-set 0 1024

Para poder ver la consola del servidor, ver como arranca y logearnos como si estuviéramos delante (alternativa al SSH).

xm console servidorWeb

Renombrar una maquina virtual.

xm rename servidorWeb ServidorWeb

Para monitorear en tiempo real todas tus maquinas virtuales.

xm top

Para conocer le tiempo que llevan en linea cada maquina virtual.

xm uptime

Listar las maquinas virtuales mostrando información sobre las cpus virtuales que tienen asignadas

xm vcpu-list

Para ver las cpus virtuales que tiene asignado un dominio

xm vcpu-list servidorWeb

Agregar un numero concreto de procesadores a un dominio (cambiamos el numero 2, por el numero de cpus que queremos asignar)

xm vcpu-set servidorWeb 2

Asignamos una limite máximo de memoria a una maquina virtual, en este caso 1Gb

xm mem-max servidorWeb 1024

Mostrar información del Host o dom0

xm info

Con este comando podemos ver el log de Xen, por si tenemos fallos

xm log

Ver el mensaje de buffer de xen, primer sitio que tienes que mirar si te ocurre algún erro en Xen

xm dmesg

Con esto ya tenéis muchos comando a usar para poder sacarle partido a vuestro Xen, si quereis mas comandos de este tipo, haced lo siguiente:

man xm

Ahí podéis ver todo acerca de xm

Tengo que recordad que por ejemplo para que algunos de los cambios se haga efectivos tenéis que reiniciar la maquina virtual que estáis tocando.

De la misma forma, podéis apagar la maquina virtual, y acceder a su configuración (ubicada en /etc/xen/) y modificar hay los valores que queráis, para arrancarla con mas cpu o RAM, por ejemplo.

Inicio automático de maquinas virtuales

Ya sabemos como configurar Xen, ya sabemos como crear una maquina virtual y sabemos jugar con ellas. Ahora ¿como hago para arrancar una maquina virtual al inicio del sistema?

Al iniciar el sistema unicamente se carga el demonio xen, tenemos que decirle que ademas queremos que cargue una o mas maquinas virtuales, tenemos que ir a /etc/xen/, dentro tenemos que mirar si existe la carpeta auto en caso de que no exista, la creamos:

cd /etc/xen
ls -las
mkdir auto

Con esto ya tenemos creada la carpeta que xen tendrá en cuenta al iniciarse. Dentro tendremos que poner los links a los «.cfg» de las maquinas que queramos arrancar, recordad que los «.cfg» esta en /etc/xen/.

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

Esto lo tenéis que repetir con cada una de las maquinas virtuales que queráis arrancar al inicio.

Conclusiones

Con este manual podéis crear vuestro propio sistema de virtualizacion y usar Xen de una manera rápida y sencilla, en mi caso tengo varias maquinas virtuales montadas sobre un Ml110 con mucha RAM para poder soportar diferentes servicios.

Es muy útil para no tener un único sistema operativo sobrecargado con múltiples servicios.

Y con esto se termina el manual de Xen. Espero que el manual os sirva de ayuda en la configuración y uso de Xen.