Translation(s): English Indonesian

(!) ?/Discussion


Resumen Xen

Xen es un hypervisor de código abierto (GPL) de tipo-1 o Baremetal, el cual hace posible correr muchas instancias de un sistema operativo o inclusive diferentes sistemas operativos en paralelo dentro de una sola maquina (o host).

Algunas de las características claves de Xen son:

Lee el Xen Overview (inglés) en el Wiki de Xen para más información.

Tipos de invitados (Guest)

Xen soporta ejecución con dos diferentes tipos de invitados: Paravirtualización (PV) y completa o Virtulización con Asistencia de Hardware (HVM). Ambos tipos de invitados pueden ser usados al mismo tiempo en un mismo sistema Xen. También es posible usar técnicas usadas para Paravirtualización en un invitado HVM: esencialmente creando una continuidad entre PV y HVM. Este enfoque es llamado PV en HVM. De nuevo invito a que lea el Xen Overview en el Wiki de Xen para más información.

Dominio 0 (Domain 0)

Xen tiene un dominio especial llamado dominio 0 (Domain 0 en inglés) el cual contiene controladores de hardware así como también tiene un conjunto de herramientas para el control de las Maquinas Virtuales (MV). El Dominio 0 a menudo se le llama el "dom0".

Instalación del Domain 0 (Host)

Instalación inicial del Domain 0

Antes de instalar Xen deberás instalar Debian en la maquina principal (host). Esta instalación será de forma básica para el Domain 0.

La instalación de Debian puede ser hecha de una manera normal usando el DebianInstaller. Lee Debian Release Notes para más información de como instalar Debian.

En orden de instalar Xen se requiere ya sea un 32-bit PC (i386) o 64-bit PC (amd64) para instalarlo en Debian

En general tu puedes instalar el Domain 0 Debian como cualquier otra instalación. Como sea el Wiki de Xen tiene algunas consideraciones Host OS Installation Considerations(inglés) que tal vez te interesen. Lo importante considerar la tabla de particiones de la maquina principal que sí tendrá un impacto en la configuración del disco de los invitados (Guest).

Si tiene un sistema Debian instalado entonces continúe con la siguiente sección.

Instalando los paquetes de Xen

El software Xen y debootstrap en Squeeze (Debian 6.0) son mucho mas nuevos que en la versión Lenny. Debido a eso trabajar con Xen se ha vuelto mucho mas fácil.

La configuración descrita aquí está probada para maquinas virtuales en Debian Squeeze y Ubuntu Maverick pero también sirve para otras más.

Primero instalar el hipervisor, Kernel Xen y las herramientas de Xen.

apt-get install xen-linux-system-arquitectura xen-utils-4.0 bridge-utils

Donde Arquitectura dependerá de la arquitectura que hayas instalado.

Para tener soporte Xen HVM en Squeeze el modelo de dispositivo qemu nos proveerá la emulación necesaria para la infraestructura de un invitado (guest) con HVM, esto también es requerido.

apt-get install xen-qemu-dm-4.0

NOTA: Esto no es necesario desde la versión Wheezy.

Comprobando qué tipo de virtualización soporta nuestro host

En el caso de querer hacer virtualización completa debemos verificar si nuestro CPU soporta esta tecnología, para verificarlo hacemos el siguiente comando.

egrep '(vmx|svm)' /proc/cpuinfo

VMX para Intel y SVM para AMD

Iniciando desde Xen de manera nativa

Debian Squeeze usa Grub 2 por omisión éste lista los kernel ordinarios de primero y después lista el hipervisor Xen con su kernel.

Se puede cambiar esto dandole a Grub la preferencia de iniciar por el Kernel Xen cambiando la prioridad del grub en el script de configuración (20_linux_xen) haciendo que sea más alta que la configuración estándar de Linux (10_linux). Esto es mas fácil hacerlo usando dpkg-divert:

dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen

Para deshacer el cambio:

dpkg-divert --rename --remove /etc/grub.d/20_linux_xen

Después de cualquier modificación en la configuración del grub se debe aplicar los cambios ejecutando:

update-grub

Configurar la red

En orden de dar acceso de la red a los invitados es necesario configurar la red del dominio 0 (domain 0) apropiadamente. La configuración más común es usar el software Bridge.

Es recomendable que manejes tu propio puente de red (bridge) usando el Debian network bridge (inglés). En el Wiki de Xen Host Configuration/Networking (inglés) también puedes conseguir información útil. Xen brinda scripts de redes que no siempre son seguros y serán removidos de versiones posteriores. Ellos están deshabilitados por omisión en los paquetes de Debian.

Ejemplo de parámetro br0 (puente) en el archivo /etc/network/interfaces usando bridge-utils:

iface br0 inet static
   bridge_ports none
   address 192.168.1.1
   broadcast 192.168.1.255
   netmask 255.255.255.0
   gateway 192.168.10.1

Nota: Se debe configurar una cadena en iptables que permita el tráfico de paquetes entre la interfaz principal y el puente.

Otras configuraciones y ajustes

Configurando parámetros de inicio

También puede pasar algunos parámetros en el inicio a Xen cuando comienza en modo normal o recuperación. Agrega estas variables a /etc/default/grub para lograr esto

# Parámetros para todas las entradas de Xen
GRUB_CMDLINE_XEN="algo"
# parámetros para modo NO recovery de Xen (mas GRUB_CMDLINE_XEN)
GRUB_CMDLINE_XEN_DEFAULT="algo mas"

Recuerde aplicar el cambio de la configuración de Grub ejecutando update-grub

Más información sobre opciones de la linea de comando del hipervisor pueden ser encontrado en upstream documentation (inglés).

Configurar memoria mínima del domain 0 (host)

Por omisión en un sistema Xen la mayoría de la memoria de los host es asignada al dom0 en el incio y el tamaño de la memoria es dinámicamente modificada (opción "ballooned") de manera automática con el fin de acomodar nuevos invitados (guest) que pueden iniciar en un futuro.

Como sea en un sistema el cual es dedicado a ejecutar invitados Xen es mejor darle una cantidad estática de RAM y deshabilitar la opción dinámica (ballooning).

El siguiente ejemplo asigna 1024MB de RAM como reservado al dom0

Para este fin debemos agregar primero la opción dom0_mem en la linea de comando del hipervisor. Esto se hace editando /etc/default/grub y agregando

# Parámetro para todos los inicios Xen
GRUB_CMDLINE_XEN="dom0_mem=1024M"

Recuerde aplicar el cambio de la configuración de Grub ejecutando update-grub

Entonces edita /etc/xen/xend-config.sxp para configurar el conjunto de herramientas que corresponden para cambiar la siguiente configuración:

(dom0-min-mem 1024)
(enable-dom0-ballooning no)

En este punto ya deberá reiniciar el dom 0 (host) para que tomen efecto los cambios.

Configurar comportamiento del invitado en el reinicio del host (dom0)

Por omisión cuando el dom0 de Xen se apaga o reincia, intentará guardar (Ej. hibernar) los estados de los invitados (dom U). Aveces hay problemas con eso y puede que falle por el espacio en /var o por algún error al azar del software. Debido a que se debe apagar de manera "limpia" los invitados antes de apagar el dom0, si quieres estar seguro de que se apague normalmente agrega estos parámetros de configuración en /etc/default/xendomains:

XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=""

Activando terminal serial

Para ver la salida del GRUB el hipervisor Xen, el kernel y getty (prompt de login) deben funcionar ambas configuraciones VGA y Serial, acá se da un ejemplo de los parámetros correctos en Squeeze:

Editar /etc/default/grub y agregar:

GRUB_SERIAL_COMMAND="serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1"
GRUB_TERMINAL="console serial"
GRUB_TIMEOUT=5
GRUB_CMDLINE_XEN="com1=9600,8n1 console=com1,vga"
GRUB_CMDLINE_LINUX="console=tty0 console=hvc0"

Aquí se ve como usar la configuración de la Consola Serial (para una tarjeta madre Supermicro X8STi-F con IPMI y SOL):

GRUB_CMDLINE_XEN="loglvl=all guest_loglvl=all com1=115200,8n1,0x3e8,5 console=com1,vga"
GRUB_CMDLINE_LINUX="console=hvc0 earlyprintk=xen"

En /etc/inittab necesitará al menos estas lineas:

1:2345:respawn:/sbin/getty 38400 hvc0
2:23:respawn:/sbin/getty 38400 tty1
# NO getty on ttyS0!

De esta manera tty1 se mostrará en la salida VGA y la hvc0 se mostrará una terminal sserial.le.

Para mantener ambos en la salida del kernel de Xen y dom0 deben estar en la misma tty, solo omite la configuración relacionada con "VGA" de la configuración anterior

Si necesitas ver una salida completa del inicio en Xen y ver un quiebre del kernel puedes hacer usandolo IPMITool si tu servidor es SOL:

ipmitool -I lanplus -H server-ip-address -U your-username sol activate | tee my-log-file.txt

Instalación de un invitado o domU

Usando xen-tools

El paquete xen-tools de Debian es una serie de scripts que pueden crear fácilmente un configuración completa de un invitado de Xen.

Una vez que hayas instalado el dom0 puedes instalar xen-tools en tu host con:

Nota: para configurar xen-tools, puedes editar el archivo /etc/xen-tools/xen-tools.conf el cual contiene los valores por omisión que el script xen-create-image usará. La página de manual de xen-create-image contiene información de las opciones disponibles.

apt-get install xen-tools

Para dar la ruta donde se guardarán las imágenes de los domU y habilitar la contraseña de superusuario en la construcción de la imagen editamos el archivo /etc/xen-tools/xen-tools.conf y descomentamos las lineas:

dir = /home/xen/
passwd = 1

Entonces podrás crear una maquina virtual con este comando:

xen-create-image --hostname <hostname> --ip <ip> --vcpus 2 --pygrub --dist <lenny|squeeze|maverick|whatever>

Para iniciar la maquina creada se ejecuta el comando:

xm create /etc/xen/maquina_virtual.cfg

Para borrar una imagen de una máquina virtual se ejecuta el comando:

xen-delete-image nombre_MV

Posibles problemas y errores

Usando el Instalador de Debian

La página wiki Debian Guest Instalation Using DebianInstaller (inglés) contiene las instrucciones de como instalar un domU de Lenny usando ?Debian Installer.

Actualización/Transición

Lee también: Debian Release Notes (Inglés)

Actualizar un servidor a Squeeze que use Lenny en ambos Dom0 y Domu es ir adelante. Ahí hay algunas recomendaciones que necesitas estar consciente de seguir Reference (inglés)

Nota sobre la compatibilidad de version del kernel

La nueva imagen del kernel 2.6.32 tiene paravirt_ops-based (inglés) soporte de dom0 y domU con Xen.

Cuando se crea una imagen para una maquina moderna con Debian o Ubuntu, este incluirá un kernel que tiene soporta "pv_ops", esto por lo tanto no se usará en el kernel Xen, pero en el de "fabrica", es capaz de ejecutar un hipervisor de Xen.

Posible problemas y errores

Viejas versiones

Xen Installation on Debian 5.0 ( Lenny )

Xen Installation on Debian 4.0 ( Etch )

La página DebianInstaller/Xen (Inglés) contiene instrucciones de cómo instalar un dom0 Xen y un domU Etch con el Instalador Debian

Mantenimiento de los paquetes

Los paquetes de Xen en Debian son mantenidos por el proyecto pkg-xen.(developers' mailing list)

La lista Debian Developer's Package Overview de los paquetes fuentes están mantenido por el equipo.

Errores comunes

Reinicios automáticos del dom0

Edita /etc/default/grub y agrega la opción "noreboot" en la linea de GRUB_CMDLINE_XEN, por ejemplo:

GRUB_CMDLINE_XEN="noreboot"

Error "Device ... (vif) could not be connected"

Necesita configurar algunas configuraciones básicas de redes en dom0 y domU.

La manera recomendada es configurando un "puente" (bridging) en /etc/networking/interfaces. Lee BridgeNetworkConnections y/o la página wiki de Xen Host Configuration/Networking (Inglés) para más detalles.

clocksource/0: Time went backwards

Si un domU falla o se congela mientras muestra las famosas últimas palabras 'clocksource/0: Time went backwards' Xen/Clocksource.

Controladores PV en un domU con HVM

Es posible que se construya un controlador de PV para usar domU con HVM. Estos controladores son llamados "unmodified_drivers" y son parte del repositorio xen-unstable.hg. Puede ir a buscar estos repositorios mercurial:

El controlador reside bajo el nombre "xen-unstable.hg/unmodified_drivers/linux-2.6". El README está en el directorio con las instrucciones de compilación.

Alguno que otro fechado, detalla las instrucciones de configuración para construir estos controladores puedes encontrarlos aquí:

http://wp.colliertech.org/cj/?p=653

Fuentes