Renuncia de responsabilidad:
Este documento está aún en desarrollo y no debería ser considerado
como oficial.
|
Configurar Gentoo con Xen
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
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"
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 |
disk = [ 'phy:lvm/xen-guest-root,sda1,w' ]
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
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|