Gentoo Logo

Renuncia de responsabilidad: Este documento está aún en desarrollo y no debería ser considerado como oficial.


Configurar Gentoo con Xen

Contenido:

1.  Introducción

La tecnología Xen le permite correr múltiples sistemas operativos en un único sistema físico, gobernar el consumo de recursos e incluso migrar dominios (los cuales son entornos virtuales en los cuales corre un sistema operativo) desde un sistema Xen hacia otro. Xen requiere que el sistema operativo anfitrión soporte Xen (el cual, en este caso, será un núcleo Linux) pero los sistemas operativos invitados pueden correr sin modificaciones si su hardware soporta Intel Virtualization Technology (VT-x) o AMD Virtualization Technology (SVM). En otro caso sus sistemas operativos invitados deben también soportar Xen.

Esta guía le indicará los pasos necesarios para tener Xen funcionando correctamente en Gentoo Linux. No discutiremos sobre el propio Xen (el proyecto Xen dispone de una documentación aceptable) tampoco trataremos configuraciones especiales que podrían ser muy interesantes para Xen pero no están relacionadas con Xen (como exportar Portage a través de NFS, arrancar Linux usando PXE, etc).

2.  Preparar el Domain0

Introducción

Domain0 es el dominio principal bajo Xen, aloja el sistema operativo anfitrión que gobernará todos los otros dominios bajo Xen. En este capítulo prepararemos una instalación Gentoo existente para que sea el sistema operativo anfitrión en este dominio y construiremos un núcleo con soporte Xen para que Gentoo este listo para albergar otros dominios Xen.

¿Reconstruir la instalación de Gentoo?

Un cambio dramático que podría ser necesario es la reconstrucción completa de una instalación Gentoo con una configuración de CFLAGS diferente. De otra manera, los sistemas operativos que corran bajo Xen podrían observar una mayor degradación en cuanto al rendimiento. Si está, sin embargo, planeando probar Xen en lugar de instalarlo para un uso de producción y no encuentra tan terrible la reconstrucción de todos los programas, puede omitir este paso. En este caso notará una degradación del rendimiento pero será capaz de utilizar Xen.

Importante: Se advierte que, si cambia sus CFLAGS y construye su sistema con un gcc inferior a la versión 4, no tenga establecido -Os ya que se ha reportado que produce código erróneo.

Listado de Código 2.1: Editar las CFLAGS y reconstruir la instalación de Gentoo

~# nano -w /etc/portage/make.conf
(Añada -mno-tls-direct-seg-refs ÚNICAMENTE is tiene un dom0 de 32 bits)
(No necesita este ajuste si tiene un dom0 de 64 bits)
CFLAGS="-O2 -march=pentium4 -pipe -mno-tls-direct-seg-refs"

~# emerge -e world

Si arranca su sistema usando un ramdisk inicial (initrd) necesita reconstruir el initrd también (lo mejor es hacerlo siguiendo todos los pasos a la hora de reconstruir su núcleo).

Instalar Xen

En la actualidad Xen contiene muchos componentes, así que necesitará instalar algunos paquetes.

Listado de Código 2.2: Instalar Xen

~# emerge xen xen-tools gentoo-sources

Construyendo el Núcleo

Ahora construiremos el núcleo con soporte para Xen. Este núcleo, cuyas fuentes están disponibles en /usr/src/linux, será nuestro núcleo principal (por ejemplo, el que correrá en el dominio 0). En la sección XEN encontrará controladores para todos los tipos de entrada y salida, cada controlador tiene disponible un backend y un frontend implementados. Para el núcleo del dominio 0 necesita seleccionar la implementación backend: ésta será usada por otros dominios (que usan el controlador de frontend) para comunicar directamente con el hardware. Sin embargo, debería poder configurar el núcleo para ofrecer soporte para ambos controladores, el del frontend (invitado) y el del backend (anfitrión).

Si tiene dudas sobre el sistema de red: cada interfaz en un dominio Por supuesto, no olvide seleccionar Xen-compatible en un dominio tiene un enlace punto a punto hacia una interfaz en el dominio 0 (llamado vifX.Y donde X es el número de interfaz e Y la y-ésima interfaz en este dominio), así puede configurar su red en el modo que desee (puente, NAT, etc.)

Listado de Código 2.3: Habilitar Soporte Xen

Processor type and features  --->
    [*] Paravirtualized guest support --->
        [*] Xen guest support

Listado de Código 2.4: Configuración del Núcleo

Bus options (PCI etc.)  --->
    [*] Xen PCI Frontend

[*] Networking support --->
    Networking options  --->
        <*> 802.1d Ethernet Bridging
       [*] Network packet filtering framework (Netfilter) --->
           [*] Advanced netfilter configuration
               [*] Bridged IP/ARP packets filtering

Device Drivers --->
    [*] Block devices (NEW) --->
        <*> Xen block-device backend driver
    [*] Network device support --->
        <*> Xen backend network device
    Xen driver support --->
        [*] Xen memory balloon driver (NEW)
       [*]   Scrub pages before returning them to system (NEW)
       <*> Xen /dev/xen/evtchn device (NEW)
       [*] Backend driver support (NEW)
       <*> Xen filesystem (NEW)
       [*]   Create compatibility mount point /proc/xen (NEW)
       [*] Create xen entries under /sys/hypervisor (NEW)
       <M> userspace grant access device driver (NEW)
       <M> user-space grant reference allocator driver (NEW)
       <M> xen platform pci device driver (NEW)

La configuración del núcleo que se muestra debería permitir que la imagen del núcleo se inicie como anfitrión y como invitado. Sin embargo, si lo desea puede reducir el tamaño de la imagen del núcleo invitado de forma considerable. Consulte la documentación de Xen para más información.

Una vez el núcleo está construido encontrará una imagen del núcleo en el directorio de construcción (no dentro de arch/ o algún otro directorio) llamado vmlinuz. Cópielo en /boot y entonces configure su gestor de arranque para usar el hipervisor de Xen (uno de los componentes instalados anteriormente) que está almacenado en /boot/xen.gz. En la configuración del gestor de arranque, añada su recién construido núcleo como el núcleo que Xen debería arrancar. Por ejemplo, para GRUB:

Listado de Código 2.5: Configuración de GRUB para Xen

title Xen Gentoo Linux 3.5
root (hd0,0)
kernel /boot/xen.gz
module /boot/kernel-3.5.x.y-xen0 root=/dev/sda3

A continuación reinicie su sistema Xen y compruebe que puede realizar las acciones que realiza normalmente. Si es así, puede editar la configuración de su gestor de arranque para que inicie siempre en Xen.

Nota: Si desea que los dominios invitados arranquen automáticamente al arrancar añada xendomains al nivel de ejecución por defecto también y cree un enlace simbólico en /etc/xen/auto/ hacia los archivos de configuración de Xen para los dominios que quiera iniciar.

3.  Crear un Dominio sin Privilegios

Construyendo el Núcleo

Vaya al fuente del núcleo Linux con soporte Xen y, si es necesario, actualice la configuración. Es recomendable conservar el máximo número de secciones parecidas al núcleo principal. A continuación construya el núcleo y coloque el archivo resultante vmlinuz donde quiera (asumimos que lo hace en /mnt/data/xen/kernel):

Listado de Código 3.1: Construcción del núcleo invitado

~# make O=~/build/domU
~# cp ~/build/domU/vmlinuz /mnt/data/xen/kernel/kernel-3.5.x.y-xen

Crear Discos de Dominio

Para un mayor rendimiento, es mejor dedicar una partición (o volumen lógico) a un dominio en lugar de un sistema de archivos basado en archivos. Sin embargo, si principalmente usará Xen para pruebas usar un sistema de archivos basado en archivos tiene sus ventajas (especialmente en lo relacionado al mantenimiento).

Puede crear un sistema de ficheros basado en archivos usando dd y mke2fs (o cualquier otra herramienta de creación de sistemas de archivos). Por ejemplo, para crear un sistema de archivos ext4 de 4 GB:

Listado de Código 3.2: Crear un sistema de archivos

~# dd if=/dev/zero of=/mnt/data/xen/disks/ext4root.img bs=1M count=4096
~# mkfs.ext4 /mnt/data/xen/disks/ext4root.img

Configurar un Dominio

Ahora crearemos un archivo de configuración para un dominio. Puede almacenar estos archivos donde quiera, por ejemplo en /mnt/data/xen/configs. Como un ejemplo, crearemos un archivo de configuración para un pequeño entorno Gentoo que usa la imagen de disco creada anteriormente.

Listado de Código 3.3: Crear un archivo de configuración de dominio

~# nano -w /mnt/data/xen/configs/gentoo

kernel = "/mnt/data/xen/kernel/kernel-3.5.x.y-xen"
memory = 512
name   = "gentoo"
(Mapea la imagen de disco al virtual /dev/sda1)
disk   = ['file:/mnt/data/xen/disks/ext4root.img,sda1,w']
root   = "/dev/sda1 ro"

Si está usando un dispositivo de bloque (como un volumen lvm o partición) para el disco utilice 'phy:' en lugar de 'file:' y elimine /dev. Por ejemplo:

Listado de Código 3.4: Utilizar un dispositivo de bloque

(Volumen LVM)
disk = [ 'phy:lvm/xen-guest-root,sda1,w' ]

(Partición Física)
disk = [ 'phy:sdb6,sda1,w' ]

Puede encontrar ejemplos de archivos de configuración en /etc/xen.

Lanzar el Nuevo Dominio

Ahora tenemos todo configurado y podemos lanzar el nuevo dominio. Si el disco imagen contiene un sistema operativo, podríamos crear y adjuntar el dominio usando la orden xl:

Listado de Código 3.5: Crear y arrancar un nuevo dominio

~# xl create /mnt/data/xen/configs/gentoo -c

El dominio debería ser arrancado dentro de la terminal en la cual ejecutó la orden. Sin embargo, en nuestro caso, la imagen de disco está vacía así el dominio no arrancara en nada útil. Para arreglar esto, puede montar la imagen como dispositivo loop e instalar Gentoo tal y como lo está usando.

Si quiere desconectar del dominio, presione Ctrl+]. Siempre puede reconectar la consola del dominio usando xl console gentoo. Sin embargo, solo hay una consola por dominio, así que solo use esto cuando no pueda acceder al dominio de otra manera (por ejemplo, a través de SSH).

4.  Redes en Dominios sin Privilegios

Introducción

Xen funciona mejor cuanto se utiliza en configuración de red modo puente. Esto implica que su interfaz de red por defecto en el dominio administrativo se convertirá en un puente que aceptará conexiones a los dominios virtuales así como a las direcciones IP que tenga en su dominio administrativo.

Interfaces Puente

Cree una interfaz puente añadiendo un nuevo enlace al guión de inicio de red que ofrece Gentoo:

Listado de Código 4.1: Crear una interfaz puente

# cd /etc/init.d
# ln -s net.lo net.br0

A continuación, edite el fichero /etc/conf.d/net y configure el puente:

Listado de Código 4.2: Habilitar la interfaz puente br0

# nano -w /etc/conf.d/net

bridge_br0="eth0"
config_br0="192.168.1.200 netmask 255.255.255.0 brd 192.168.1.255"
routes_br0="default via 192.168.1.1"

Para terminar, instale el paquete net-misc/bridge-utils y asegúrese de que el guión de inicio net.br0 se carga en el arranque del sistema.

Listado de Código 4.3: Terminar la configuración del puente

# emerge net-misc/bridge-utils
# rc-update add net.br0 default

5.  Más Recursos

Documentación de Xen

Herramientas de Xen



Imprimir

Página actualizada 7 de octubre, 2012

Sumario: Esta guía describe como comenzar a usar Xen en su sistema Gentoo.

Sven Vermeulen
Autor

Joshua Saddler
Editor

Fede Díaz
Traductor

John Christian Stoddart
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.