Instalación y configuración de Xen en Debian Wheezy


Xen es una plataforma libre para virtualización de sistemas. El componente fundamental de Xen es un hipervisor para arquitecturas x86 (x86_64) que permite ejecutar sobre él tanto sistemas operativos modificados en modo paravirtualizado como sistemas operativos sin modificar en modo hvm (hardware virtual machine). La primera versión de Xen que probé fue la 3.0 sobre Debian Etch, de lo que podéis encontrar detallada información en Instalación y configuración de Xen 3.0 en Debian Etch en la sección de manuales.

Estuve utilizando Xen en clase durante varios años, pero cuando Citrix compró XenSource (la empresa que fundaron los creadores de Xen), el soporte en las distribuciones de GNU/Linux se hizo bastante complicado por lo que mucha gente nos pasamos a KVM, un sistema de virtualización integrado en el kérnel linux y fácilmente utilizable. Parece ser que esas turbulencias ya pasaron y que desde hace un tiempo el soporte de Xen en los núcleos de la mayoría de las distribuciones vuelve a ser bueno. Aunque es difícil que Xen le quite ya a KVM su posición dominante, es una magnífica alternativa y vale la pena aprender a utilizarla.

En esta entrada vamos a explicar la forma de configurar un equipo con Debian Wheezy (versión de Debian actualmente congelada y que próximamente se estabilizará y será publicada como Debian 7.0) como dominio principal con Xen como hipervisor. No vamos a entrar en detalles sobre la provisión de máquinas virtuales o la configuración de las redes en Xen, que no ha cambiado respecto a versiones anteriores y que daremos por conocido.

Instalación de Xen

En versiones anteriores de Debian había un núcleo específico para utilizar con Xen en modo paravirtualizado, como en el caso de Debian squeeze (la versión actualmente estable) que incluye el núcleo linux-image-2.6.32-5-xen-amd64. Estos núcleos estaban preparados para ejecutarse sobre un hipervisor en modo paravirtualizado, mientras que los normales no. Si queríamos utilizar Xen en modo paravirtualizado era necesario utilizar este núcleo en particular, lo que era bastante incómodo, sobre todo si se había hecho la compilación de algún módulo específico para el sistema, que provocaba que hubiera que compilar de nuevo todo para el nuevo núcleo con soporte para Xen. En Debian Wheezy esto ha cambiado, ya que el núcleo normal, incluye los parches de Xen tanto para el dominio principal (dom0) como para el resto de dominios. Si el sistema se ejecuta sobre hardware de forma nativa, no los utiliza, pero sí lo hace si detecta que se está ejecutando sobre un hipervisor de Xen. Podemos comprobar que efectivamente nuestro núcleo tiene soporte para Xen mediante la sencilla instrucción:

# cat /boot/config-3.2.0-4-amd64 |grep -i xen
CONFIG_XEN=y
CONFIG_XEN_DOM0=y
CONFIG_XEN_PRIVILEGED_GUEST=y
CONFIG_XEN_PVHVM=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=128
CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
CONFIG_PCI_XEN=y
CONFIG_XEN_PCIDEV_FRONTEND=m
CONFIG_XEN_BLKDEV_FRONTEND=m
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_NETXEN_NIC=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
CONFIG_HVC_XEN=y
CONFIG_XEN_WDT=m
CONFIG_XEN_FBDEV_FRONTEND=y
# Xen driver support
CONFIG_XEN_BALLOON=y
# CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is not set
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_BACKEND=y
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_XENBUS_FRONTEND=y
CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GRANT_DEV_ALLOC=m
CONFIG_SWIOTLB_XEN=y
CONFIG_XEN_PCIDEV_BACKEND=m

Los otros dos componentes fundamentales de Xen son el hipervisor y las herramientas administrativas, que permiten gestionar las máquinas virtuales desde el dom0. Se podría hacer una instalación paso a paso de cada componente, pero Debian proporciona un meta-paquete que nos instala todos los componentes de Xen necesarios para el funcionamiento correcto:

# aptitude install xen-linux-system-amd64

que nos instala por dependencias el hipervisor (paquete xen-hypervisor-4.1-amd64) y las herramientras administrativas (xen-utils-4.1). Si nos fijamos en la salida durante la instalación del paquete, comprobaremos que se ha actualizado GRUB apropiadamente, creando una entrada específica para cuando queramos utilizar Xen:

...
Configurando xen-hypervisor-4.1-amd64 (4.1.3-3) ...
Generating grub.cfg ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-3.2.0-4-amd64
Found initrd image: /boot/initrd.img-3.2.0-4-amd64
...

Reiniciamos el equipo y seleccionamos en grub la entrada “Xen 4.1-amd64”.

Inicio de dom0 sobre el hipervisor de Xen

En modo paravirtualizado lo primero que se carga en memoria es el hipervisor. Si hemos estado atentos durante el inicio del sistema habremos visto en pantalla unos mensajes que comenzaban por (XEN) … antes de los mensajes habituales del núcleo de linux.

Una vez iniciado el sistema, podemos comprobar que el sistema sabe que se está ejecutando sobre un hipervisor en modo paravirtualizado mediante el mensaje:

# dmesg |grep -i boot|grep -i xen
[    0.000000] Booting paravirtualized kernel on Xen

Lo que propicia que se carguen automáticamente algunos módulos para el funcionamiento correcto de Xen:

# lsmod|grep xen
xen_netback            26967  0 
xen_blkback            22112  0 
xen_gntdev             12981  0 
xen_evtchn             13012  1 
xenfs                  17724  1

En Xen todos los sistemas, incluido el dom0, están virtualizados y se ejecutan sobre el hipervisor, como podemos ver si ejecutamos la instrucción xm (xen management user interface):

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

Xen puede gestionarse de forma alternativa mediante libvirt, que incluye soporte para Xen. Pero es necesario en primer lugar habilitar la XenAPI para que libvirt se puede comunicar con el servidor de Xen a través de http, para lo que tenemos que hacer algunas modificaciones en el fichero /etc/xen/xend-config.sxp:

(xend-http-server yes)
(xend-port            8000)

Y reinciamos el demonio de Xen. Para utilizar libvirt mediante línea de comandos deberemos instalar previamente el paquete libvirt-bin, que una vez instalado nos permite gestionar los dominios de Xen a través de virsh:

# virsh -c xen:///
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # list
 Id    Name                           State
----------------------------------------------------
 0     Domain-0                       running

virsh # dominfo 0
Id:             0
Name:           Domain-0
UUID:           00000000-0000-0000-0000-000000000000
OS Type:        linux
State:          running
CPU(s):         2
CPU time:       275,0s
Max memory:     17179868160 KiB
Used memory:    1930240 KiB
Persistent:     unknown
Autostart:      disable
Managed save:   unknown

Los siguientes pasos serían la configuración de la red y la provisión de máquinas virtuales, pero lo dejamos para posteriores entradas.

, , ,

  1. #1 por Beny el 2-03-15 - 9:03 pm

    Hola amigo los modulos xen_netback y xen_blkback no me cargar en el debian al ejecutar el comando lsmod|grep xen que puedo hacer?

    Me gusta

    • #2 por albertomolina el 3-03-15 - 7:31 pm

      Hola Beny,

      Probablemente no sea importante, pero en cuanquier caso puedes probar a cargarlos manualmente con:

      modprobe xen-blkback
      modprobe xen-netback

      Me gusta

  2. #3 por antonioruiz1974 el 31-03-16 - 4:18 pm

    Reblogueó esto en antonioruiz1974.

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: