Xen para impostores

En cualquier trabajo, el día a día siempre es sota, caballo y rey.
Realmente solo es necesario conocer un par de cosas sobre una herramienta para manejarla bien y eso es lo que voy a mostrar ahora con Xen.
Si aprendes a hacer estas dos cosas podrás ir por ahí diciendo que sabes Xen ... aunque sea mentira. ;-)



¿Que es Xen?
Primero que nada, Xen sirve para montar un servidor de máquinas virtuales. También podíamos haber usado qemu, virtualbox u openvz (me encanta openvz), pero el mejor cuando hay dinero y recursos es Xen.
Este guiaburros es para máquinas que soportan virtualización por hardware. Por ejemplo, si tu procesador es intel y miras /proc/cpuinfo deberías ver que uno de los flags de la CPU es vmx.

Paso 1: instalar Xen
Necesitamos instalar el núcleo, el hypervisor y las utils.
En resumen, si estás en Debian apt-get install xen-linux-system-2.6.26-2-xen-686 qemu y reiniciar. Si estás en Ubuntu apt-get install linux-xen bridge-utils xen-hypervisor-3.2 xen-utils-3.2 qemu y reiniciar con el núcleo que sale arriba del todo. Si no arranca algo hay mal hecho pero ya no es objeto de esta entrada.

Paso 2: configurar la red
Necesitamos configurar la red para que las máquinas virtuales puedan ser uno más con su IP y su mac. A todos los efectos, el único que se enterará de que la máquina virtual es una máquina virtual será el que la haya creado.
Debemos hacer estos cambios en nuestro /etc/network/interfaces:

Reiniciamos y vemos si tenemos red.

Paso 3: crear una máquina virtual

  • Crear el disco duro: qemu-img create -f raw MiDiscoDuro.img 20G
  • Copiar el CD de instalación a algún lugar accesible
  • Crear la configuración de la máquina configuracionMaquina.cfg:

    kernel = '/usr/lib/xen-default/boot/hvmloader'
    builder = 'hvm'
    device_model = '/usr/lib/xen-default/bin/qemu-dm'
    #
    memory = '512'
    #
    # Para arrancar desde el CD
    disk = [ 'file:/ruta/al/disco/duro,ioemu:hda,w', 'file:/ruta/al/CD/de/instalacion,hdc:cdrom,r' ]
    boot = 'd'
    # Para arrancar desde el disco duro
    #disk = [ 'file:/ruta/al/disco/duro,ioemu:hda,w' ]
    #boot = 'c'
    #
    name = 'nombreVirtual'
    #
    dhcp = 'dhcp'
    # Puedes poner cualquier MAC que empiece por 02
    vif = [ 'mac=02:ca:ca:de:ba:ca,type=ioemu,bridge=xenbr0' ]
    #
    vnc = 0
    sdl = 1
    # nographic=0 -> interfaz gráfica, nographic=1 -> sin interfaz gráfica
    nographic = 0
    serial = 'pty'
  • Arrancar la máquina con un xm create configuracionMaquina.cfg
  • Instalar la máquina
  • Para la máquina con un xm shutdown configuracionMaquina.cfg. Si se niega a pararse cambia el shutdown por un destroy.

Paso 4: dejarla lista para su uso
Hay que cambiar la configuración para que no se vea la gráfica y no arranque desde el CD:

Comandos básicos

  • xm create configuracionMaquina.cfg crea la máquina virtual.
  • xm shutdown configuracionMaquina.cfg le dice a la máquina virtual que se cierre.
  • xm destroy configuracionMaquina.cfg destruye la máquina virtual. Es como tirar del cable.
  • xm list muestra las máquinas virtuales en funcionamiento.
  • xm info muestra información sobre el estado del anfitrión.

Pequeño ajuste
Se puede variar la memoria reservada para el contenedor de las máquinas virtuales en la configuración del grub en /boot/grub/menu.lst

## Xen hypervisor options to use with the default Xen boot option
# xenhopt=dom0_mem=1024M

Comentarios

Con todos mis respetos, creo

Con todos mis respetos, creo que usar los discos de qemu en lugar de LVM, te hace perder bastante flexibilidad y no sé si rendimiento.

¿Tienes alguna razón aparte de la sencillez para hacerlo así? Es que no se me ocurre ninguna...

NInguna razón lógica, solo psicológica

No existe ningún motivo, es solo la sencillez. Es lo que más se parece a las imágenes de vmware, virtualbox y esas cosas que la gente está acostumbrada a utilizar.

Pero aunque diera igual rendimiento, el backup ocupa bastante más porque son ficheros grandes que cambian todos los días. Además, la capacidad de lvm para hacer snapshots.
Pero entonces ya estaríamos utilizando tres términos que a la gente le dan igual o desconocen como rendimiento, snapshot y por supuesto ... backup. ;-)