Anda di halaman 1dari 139

Administracin de servidores

virtuales con Xen y GNU/Linux


Jorge Armando Medina
Computacin Grfica de Mxico.
Documentacin Tcnica
<jmedina@e-compugraf.com>

Alejandro Gabriel Snchez Martnez


Computacin Grfica de Mxico.
Documentacin Tcnica
<asanchezm@e-compugraf.com>

Copyright 2008-2010 Jorge Armando Medina, Alejandro Snchez Martnez


Se otorga permiso para copiar, distribuir y/o modificar ste documento bajo los trminos de
la Licencia de Documentacin Libre GNU GFDL, Versin 1.2 o cualquier otra posterior
publicada por la Fundacin de Software Libre; sin secciones invariantes, sin textos en
portada y contraportada. Una copia de la licencia en ingles la puede encontrar en los
apendices al final del ibro, tambien una traduccin libre no oficial al espaol de la licencia
GFDL y referencias de como utilizarla en sus proyectos, si por alguna razn se tuviera que
utilizar por cuestiones legales la licencia GFDL la unica valida es la versin en inlges de
ella.
2011/08/18
Resumen
Esta es una guia de referencia para la instalacin y administracin de servidores virtuales
GNU/Linux en Xen. Se describen los procedimientos para la instalacin del servidor de
virtualizacin, configuraciones de los ambientes de red y almacenamiento, instalacin del
hypervisor Xen, creacin de maquinas virtuales Linux y la administracin de maquinas y
recursos virtuales en ambientes Xen y GNU/Linux.
Tabla de contenidos
Prefacio
Convenciones del Documento
Convenciones Tipogrficas
Convenciones del documento
Notas y Advertencias
Necesitamos sus comentarios!
1. Introduccin a la Virtualizacin
Historia de la virtualizacin
Ventajas de la virtualizacin

Tecnicas de virtualizacin
2. Introduccin al hypervisor Xen
Historia del proyecto Xen
Caracteristicas Xen
Arquitectura de Xen
Recursos adicionales
Sitios web
Pginas de manual
3. Instalacin y configuracin del servidor Xen en GNU/Linux
Requerimientos de sistema
Requerimientos de hardware
Requerimientos de sofware
Instalando Xen desde el cdigo fuente en Ubuntu Server
Compilando Xen 3.4.x desde las fuentes en Ubuntu Server
Instalando el kernel XenLinux desde el cdigo fuente
Instalando el kernel XenLinux desde apt
Configurando GRUB para arrancar Xen 3.4.x
Activando el demonio xend
Arrancando y verificando el funcionamiento de Xen
Instalando Xen en Ubuntu Server desde apt
Instalando el hypervisor Xen y el kernel XenLinux desde apt
Configurando GRUB para arrancar Xen
Activando el demonio xend
Arrancando y verificando el funcionamiento de Xen
Instalando Xen en CentOS 5
Instalando Xen con yum
Configurando GRUB para arrancar Xen
Activando el demonio xend
Arrancando y verificando el funcionamiento de Xen
Instalando Xen 3.4 desde el repositorio gitco.de en CentOS 5
Configurando el demonio xend y la herramienta xm
Configuracin de los medios de almacenamiento local para las VMs en Xen
Creando discos virtuales basados en archivos
Creando archivos de imagen ISO para medios de instalacin
Creando discos virtuales basados en particiones Linux nativas
Creando discos virtuales basados en volmenes lgicos Linux LVM
Configuracin de los dispositivos de red fsicos y virtuales en Xen
Introduccin a los modos de red en Xen
Configurando Xen en modo bridge
Configurando mltiples switches virtuales con Xen y bridges Linux
Como crear un bridge dummy para una red privada sin conexin fsica
Creando los bridge Linux usando las herramientas del sistema operativo
Como generar direcciones MAC nicas para Xen
Recursos adicionales
Sitios web
Pginas de manual
4. Creacin de maquinas virtuales en Xen
Requisitos para las Maquinas Virtuales Xen

CPU y memoria para las maquinas virtuales Xen


Medios de Almacenamiento para las maquinas virtuales Xen
Dispositivos de red virtuales Xen
Requisitos de software para las maquinas virtuales
Medios de instalacin para las maquinas virtuales
Parmetros de configuracin para maquinas virtuales Xen
Creando maquinas virtuales Xen PV Linux
Creando maquinas virtuales Xen PV Linux con Debian o Ubuntu
Creando maquinas virtuales Xen PV Debian con con debootstrap
Creando maquinas virtuales Xen PV Ubuntu con xen-tools
Instalando xen-tools
Definiendo los parmetros de configuracin globales para xen-tools
Creando maquinas PV Debian o Ubuntu
Definiendo esquemas de particiones de xen-tools
Modificando las plantillas de configuracin para xen-tools
Creando maquinas virtuales PV Linux CentOS
Creando maquinas virtuales PV CentOS usando imagenes de stacklet
Creando maquinas virtuales PV CentOS con xen-tools y rinse
Creando maquinas virtuales Xen HVM Windows
Recursos adicionales
Sitios web
Pginas de manual
5. Administracin de maquinas y recursos virtuales en Xen
Controlando el estado de las maquinas virtuales Xen
Usando la herramienta xm para controlar maquinas virtuales Xen
Arranque y apagado automtico de maquinas virtuales Xen
Administracin de recursos virtuales en Xen
Introduccin a la administracin de recursos de maquinas virtuales Xen
Asignacin de memoria a las maquinas virtuales Xen
Asignacin de CPUs virtuales a las maquinas virtuales Xen
Asignacin de dispositivos de bloque para maquinas virtuales Xen
Listando los dispositivos de bloque asignados a una maquina virtual Xen
Asignando un archivo de imagen como disco duro a una maquina virtual PV Linux
Asignando un disco duro o particin fsica a una maquina virtual
Asignando un volumen lgico LVM a una maquina virtual PV Linux
Asignando un volumen lgico LVM a una maquina virtual HVM Windows
Desconectando un dispositivo de bloque virtual de una maquina virtual
Administracin de interfaces de red para maquinas virtuales Xen
Respaldo y clonacin de maquinas virtuales Xen
Como respaldar maquinas virtuales basada en archivos
Verificaciones previas del hardware de la maquina virtual
Apagar la maquina virtual DomU
Crear respaldo de datos del archivo de imagen
Crear la maquina virtual
Como restaurar maquinas virtuales basada en archivos
Como respaldar maquinas virtuales basada en LVM
Verificaciones previas del hardware de la maquina virtual
Apagar la maquina virtual

Crear snapshot del volmen lgico del disco raz


Crear la maquina virtual
Crear respaldo de datos del snapshot
Eliminar el snapshot
Como restaurar maquinas virtuales basada en LVM
Como clonar una maquina virtual basada en LVM
Como convertir una maquina virtual de archivos a LVM
6. Resolucin de problemas
Resolucin de problemas relacionados al reloj de las maquinas virtuales
Resolucin de problemas relacionados a la red de las maquinas virtuales
Recursos adicionales
Sitios web
Pginas de manual
A. Historial de Revisiones
B. Licencia de Documentacin Libre de GNU
PREMBULO
APLICABILIDAD Y DEFINICIONES
COPIA LITERAL
COPIADO EN CANTIDAD
MODIFICACIONES
COMBINACIN DE DOCUMENTOS
COLECCIONES DE DOCUMENTOS
AGREGACIN CON TRABAJOS INDEPENDIENTES
TRADUCCIN
TERMINACIN
REVISIONES FUTURAS DE ESTA LICENCIA
ADENDA: Cmo usar esta Licencia en sus documentos
C. GNU Free Documentation License
Lista de figuras
3.1. Servidor Linux sin Xen
3.2. Servidor Linux con Xen y un bridge
3.3. Servidor Linux con Xen, un bridge y un DomU
3.4. Servidor Linux con Xen, dos bridges, y dos Domu
3.5. Servidor Linux con Xen, dos bridges, uno dummy, y tres Domu
3.6. Servidor Linux con Xen, un bridge y un DomU va OS
3.7. Servidor Linux con Xen, dos bridges, y dos Domu va OS
3.8. Servidor Linux con Xen, tres bridges, y cuatro Domu va OS
Lista de tablas
4.1. Esquema de particiones

Prefacio
Tabla de contenidos
Convenciones del Documento
Convenciones Tipogrficas
Convenciones del documento
Notas y Advertencias

Necesitamos sus comentarios!

Convenciones del Documento


Este manual utiliza varias convenciones para resaltar algunas palabras y frases y llamar la
atencin sobre ciertas partes especficas de informacin.

Convenciones Tipogrficas
Se utilizan cuatro convenciones tipogrficas para llamar la atencin sobre palabras o frases
especficas. Dichas convenciones y las circunstancias en que se aplican son las siguientes:
Negrita monoespaciado
Utilizada para resaltar la entrada del sistema, incluyendo comandos de shell, nombres de
archivo y rutas. Tambin se utiliza para resaltar teclas claves y combinaciones de teclas.
Para ver el contenido del archivo my_next_bestselling_novel en su directorio actual de
trabajo, escriba el comando cat my_next_bestselling_novel en el intrprete de comandos
de shell y pulse Enter para ejecutar el comando.
Lo anterior incluye un nombre de archivo, un comando de shell y una tecla clave, todo en
negrita-monoespaciado y distinguible gracias al contexto.
Las combinaciones de teclas se pueden distinguir de las teclas claves mediante el guin que
conecta cada parte de una combinacin de tecla. Por ejemplo:
Pulse Enter para ejecutar el comando.
Pulse Control+Alt+F1 para cambiar a la primera terminal virtual. Pulse Control+Alt+F7
para volver a su sesin de Ventanas-X.
La primera oracin resalta la tecla clave determinada que se debe pulsar. La segunda resalta
dos conjuntos de tres teclas claves, cada conjunto presionado simultneamente.
Si el cdigo fuente es discutido, nombres de clase, mtodos, funciones, nombres de
variables, y valores de retorno mencionados dentro de un prrafo sern presentados como lo
anterior, en Negrita-monoespaciado. Por ejemplo:
Las clases de archivo relacionadas incluyen filename para sistema de archivos, file para
archivos y dir para directorios. Cada clase tiene su propio conjunto asociado de permisos.
Proportional Bold
Esta denota palabras o frases encontradas en un sistema, incluyendo nombres de aplicacin;
texto de cuadro de dilogo, botones etiquetados, etiquetas de cajilla de verificacin y botn
de radio; ttulos de men y ttulos del sub-men. Por ejemplo:
Seleccionar Sistema > Preferencias > Ratn desde la barra del men principal para lanzar
Preferencias de Ratn. En la pestaa de Botones, haga clic en la cajilla ratn de mano
izquierda y luego haga clic en Cerrar para cambiar el botn principal del ratn de la
izquierda a la derecha (adecuando el ratn para la mano izquierda).
Para insertar un caracter especial en un archivo gedit, seleccione desde la barra del men
principal Aplicaciones > Accesorios > Mapa de caracteres. Luego, desde la barra del men
elija Bsqueda > Hallar mapa de caracteres, teclee el nombre del caracter en el campo de
Bsqueda y haga clic en Siguiente. El caracter buscado se resaltar en la Tabla de
caracteres. Haga doble clic en este caracter resaltado para colocarlo en el campo de Texto

para copiar y luego haga clic en el botn de Copiar. Ahora regrese a su documento y elija
Editar > Pegar desde la barra de men de gedit.
El texto anterior incluye nombres de aplicacin; nombres de men de todo el sistema y
elementos; nombres de men de aplicaciones especficas y botones y texto hallados dentro
de una interfaz GUI, todos presentados en negrita proporcional y distinguibles por contexto.
Observe la > abreviatura utilizada para indicar recorrido a travs de un men y sus submenes. Esto es para evitar la dificultad de seguir el mtodo 'Seleccionar Ratn desde el
sub-men Preferencias en el men de Sistema de la barra de men principal'.
Itlicas-negrita monoespaciado

o Itlicas-negrita proporcional

Negrita monoespaciado o Negrita proporcional, la adicin de itlicas indica texto


reemplazable o variable. Las itlicas denotan texto que usted no escribe literalmente o texto
mostrado que cambia dependiendo de la circunstancia. Por ejemplo:
Para conectar a una mquina remota utilizando ssh, teclee ssh
nombredeusuario@dominio.nombre en un intrprete de comandos de shell. Si la mquina
remota es example.com y su nombre de usuario en esa mquina es john, teclee ssh
john@example.com.
El comando mount -o remount file-system remonta el sistema de archivo llamado. Por
ejemplo, para volver a montar el sistema de archivo /home, el comando es mount -o
remount /home.
Para ver la versin de un paquete actualmente instalado, utilice el comando rpm -q
paquete. ste entregar el resultado siguiente: paquete-versin-lanzamiento.
Observe las palabras en itlicas- negrita sobre nombre de usuario, domain.name, sistema
de archivo, paquete, versin y lanzamiento. Cada palabra es un marcador de posicin, tanto
para el texto que usted escriba al ejecutar un comando como para el texto mostrado por el
sistema.
Aparte del uso estndar para presentar el ttulo de un trabajo, las itlicas denotan el primer
uso de un trmino nuevo e importante. Por ejemplo:
cuando el servidor Apache HTTP acepta solicitudes, enva procesos hijos o hilos para
manejarlos. Este grupo de procesos hijos o hilos se conoce como un server-pool. Bajo el
servidor HTTP de Apache 2.0, la responsabilidad para crear o mantener estos server-pool
se resume en un grupo de mdulos llamado Mdulos de multi-procesamiento (MPMs). A
diferencia de otros mdulos, slo un mdulo del grupo MPM puede ser cargado por el
servidor HTTP de Apache.

Convenciones del documento


Dos, usualmente de varias lneas, los tipos de datos se distinguen visualmente del texto
circundante.
Salida enviada a una terminal est establecida en tipo romano monoespaciado y
presentada as:
books
books_tests

Desktop
Desktop1

documentation
downloads

drafts
images

mss
notes

photos
scripts

stuff
svgs

svn

Los listados de cdigo fuente tambin se establecen en romano monoespaciado, pero se


presentan y resaltan de la siguiente manera:

package org.jboss.book.jca.ex1;
import javax.naming.InitialContext;
public class ExClient
{
public static void main(String args[])
throws Exception
{
InitialContext iniCtx = new InitialContext();
Object
ref
= iniCtx.lookup("EchoBean");
EchoHome
home
= (EchoHome) ref;
Echo
echo
= home.create();
System.out.println("Created Echo");
}

System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));

Notas y Advertencias
Finalmente, utilizamos tres estilos visuales para llamar la atencin sobre la informacin que
de otro modo se podra pasar por alto.
Nota
Una nota es una sugerencia, atajo o enfoque alternativo que se tiene a mano para la
tarea. Ignorar una nota no debera tener consecuencias negativas, pero podra perderse
de algunos trucos que pueden facilitarle las cosas.
Importante
Los cuadros de importante dan detalles de cosas que se pueden pasar por alto
fcilmente: cambios de configuracin nicamente aplicables a la sesin actual, o
servicios que necesitan reiniciarse antes de que se aplique una actualizacin. Ignorar
estos cuadros de importante no ocasionar prdida de datos, pero puede causar enfado
y frustracin.
Advertencia
Las advertencias no deben ignorarse. Ignorarlas muy probablemente ocasionar prdida
de datos.

Necesitamos sus comentarios!


Si encuentra errores tipogrficos en este manual, o si ha pensando en alguna manera de
mejorarlo, nos gustara escuchar lo. Por favor enve cualquier comentario o correccin a la
direccin de correo: <documentacion@e-compugraf.com>.
Cuando envie reportes de mejoras o errores acerca de este manual, asegurese de mencionar
el nombre del manual: Administracion_de_Servidores_Virtuales_con_Xen_y_GNU_Linux.

Si tiene sugerencias para mejorar la documentacin, trata de ser tan especifico como sea
posible cuando las describa. Si ha encontrado un error, por favor incluya el nmero de
seccin y algn otro texto cercano de tal manera que podamos localizarlo facilmente.

Captulo 1. Introduccin a la Virtualizacin


Tabla de contenidos
Historia de la virtualizacin
Ventajas de la virtualizacin
Tecnicas de virtualizacin
Parrafo 1

Historia de la virtualizacin
Ventajas de la virtualizacin
Tecnicas de virtualizacin
Meter info sobre:
En el campo de la virtualizacin existen diferentes tecnicas, entre las principales se
encuentran:
Para Virtualization
Esta es una tcnica de Virtualizacin en la cual el sistema operativo de la maquina
virtual se comunica con los dispositivos de hardware mediante una interfaz entre el
OS de la maquina virtual y el Virtual Machine Monitor, esta tecnica permite que las
maquinas virtuales ofrezcan un alto rendimiento al realizar operaciones importantes
relacionadas al uso de los recursos de hardware, Esta tecnica require que el sistema
operativo del las maquinas virtuales sea modificado. Sistemas operativos como
Linux, FreeBSD, NetBSD, OpenSolaris con buenos candidatos para ejecutarse en
entornos de Para Virtualizacin.
Virtualizacin asistida por Hardware (Full Virtualization)
La tcnica de Virtualizacin asistida por hardware permite que sistemas operativos
NO modificas puedan ser ejecutados en Maquinas Virtuales, esta tcnica requiere
que el CPU soporte las extensines Intel VT o AMD-V. Esta tcnica permite
ejecutar sistemas operativos propietarios como Windows sin que sea modificado.
Esta tecnica no ofrece por si sola el mejor rendimiento.

Captulo 2. Introduccin al hypervisor Xen


Tabla de contenidos
Historia del proyecto Xen
Caracteristicas Xen
Arquitectura de Xen
Recursos adicionales
Sitios web
Pginas de manual

Historia del proyecto Xen

Xen is a virtual machine monitor (VMM) for x86-compatible computers. Xen can securely
execute multiple virtual machines, each running its own OS, on a single physical system
with close-to-native performance.

Caracteristicas Xen
Arquitectura de Xen
Meter la imagen:

Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se
aconseja que acceda a los siguientes recursos adicionales.

Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas
utilizados en este capitulo.

http://www.xen.org - Sitio oficial Xen

http://wiki.xensource.com/xenwiki/XenArchitecture?
action=AttachFile&do=get&target=Xen+Architecture_Q1+2008.pdf - Xen
Architecture Overview (February 2008)

http://www.xen.org/community/xenhistory.html - Xen.org History

http://wiki.xensource.com/xenwiki/XenKernelFeatures - Xen Kernel Features

http://tx.downloads.xensource.com/downloads/docs/user/ - Xen 3.0 Users' Manual

http://wiki.xensource.com - Xen.org Community Wiki

http://blog.xen.org - Xen Community Blog

Pginas de manual
Para conocer ms sobre el uso y configuracin de los programas utilizados en el capitulo, se
recomienda leer los manuales relacionados.

Captulo 3. Instalacin y configuracin del servidor


Xen en GNU/Linux
Tabla de contenidos
Requerimientos de sistema
Requerimientos de hardware
Requerimientos de sofware
Instalando Xen desde el cdigo fuente en Ubuntu Server
Compilando Xen 3.4.x desde las fuentes en Ubuntu Server
Instalando el kernel XenLinux desde el cdigo fuente
Instalando el kernel XenLinux desde apt
Configurando GRUB para arrancar Xen 3.4.x
Activando el demonio xend
Arrancando y verificando el funcionamiento de Xen
Instalando Xen en Ubuntu Server desde apt

Instalando el hypervisor Xen y el kernel XenLinux desde apt


Configurando GRUB para arrancar Xen
Activando el demonio xend
Arrancando y verificando el funcionamiento de Xen
Instalando Xen en CentOS 5
Instalando Xen con yum
Configurando GRUB para arrancar Xen
Activando el demonio xend
Arrancando y verificando el funcionamiento de Xen
Instalando Xen 3.4 desde el repositorio gitco.de en CentOS 5
Configurando el demonio xend y la herramienta xm
Configuracin de los medios de almacenamiento local para las VMs en Xen
Creando discos virtuales basados en archivos
Creando archivos de imagen ISO para medios de instalacin
Creando discos virtuales basados en particiones Linux nativas
Creando discos virtuales basados en volmenes lgicos Linux LVM
Configuracin de los dispositivos de red fsicos y virtuales en Xen
Introduccin a los modos de red en Xen
Configurando Xen en modo bridge
Configurando mltiples switches virtuales con Xen y bridges Linux
Como crear un bridge dummy para una red privada sin conexin fsica
Creando los bridge Linux usando las herramientas del sistema operativo
Como generar direcciones MAC nicas para Xen
Recursos adicionales
Sitios web
Pginas de manual
En este capitulo veremos diferentes mtodos para implementar un servidor de
virtualizacin con el hypervisor Xen y diferentes distribuciones GNU/Linux como: Debian,
Ubuntu y aquellas basadas en RHEL 5 como CentOS 5. Se hace especial nfasis en la
instalacin del hypervisor y las herramientas de Xen desde el cdigo fuente y usando los
paquetes incluidos de la distribucin Ubuntu Server 8.04 LTS amd64..
A razgos generales, la instalacin de un servidor de virtualizacin con Xen y GNU/Linux
incluye los siguientes procedimientos:

Identificar los requerimientos de hardware y software para el servidor de


virtualizacin Xen.

Instalacin de Ubuntu Server 8.04 LTS amd64 en servidor.

Instalacin del hypervisor Xen junto con sus herramientas, bibliotecas y archivos de
configuracin.

Instalar el kernel XenLinux para el Domain-0 y domUs.

Configuracin del gestor de arranque grub para ejecutar Xen y el Domain-0 con el
kernel XenLinux.

Configurar el demonio xend en el Domain-0.

Configurar un medio de almacenamiento local para las maquinas virtuales.

Configurar el entorno de red local y virtual para el Domain-0 y las maquinas


virtuales.

En las siguientes veremos los procedimientos paso a paso usando diferentes mtodos para
diferentes distribuciones GNU/Linux.

Requerimientos de sistema
Es importante tener en claro cuales son los requerimientos para una correcta
implementacin del servidor de virtualizacin Xen, los ejemplos de las instalaciones y
configuraciones que se refieren al servidor Xen se realizan en las distribuciones Ubuntu
8.04 LTS y CentOS 5.5 en sus versiones 64-bit (amd64/x86_64).
Es importante notar que en las arquitecturas de 64-bit se pueden crear maquinas virtuales
con sistemas operativos guest tanto en 32 y 64 bit, esto le permitir una gran flexibilidad
tanto para realizar pruebas como para entornos de produccin con sistemas operativos y
aplicaciones viejas.

Requerimientos de hardware
La instalacin de un host Xen requiere por lo menos un equipo fsico x86, el servidor Xen
ser dedicado para hospedar y ejecutar las maquinas virtuales o VMs (Virtual Machines), se
recomienda que se dedique el sistema exclusivamente para la ejecucin de Xen ya que
cualquier otra operacin podra afectar el rendimiento del sistema host como de las
mquinas virtuales.
Aunque el hypervisor Xen puede ser ejecutado en sistemas x86 de 32-bit (i386) se limitara
a solo ejecutar VMs de 32-bit. Si tiene que ejecutar maquinas virtuales tanto en 32-bit y 64bit entonces dedique un servidor con soporte 64-bit.
Los requerimientos del hardware para el servidor Xen van a depender del tipo de maquinas
virtuales que vaya a ejecutar. El tema depende de si va a ejecutar maquinas virtuales en
modo Paravirtualized (PVM) o en Full virtulization (HVM).
Para ejecutar maquinas virtuales en modo Full virtualization va a requerir que el BIOS de la
tarjeta madre tenga el soporte de Virtualizacin activado y que el procesador tambin
incluya el soporte de virtualizacin. Tanto AMD como Intel incluyen soporte de
virtualizacin asistida por hardware en sus procesadores actuales, AMD-V es la tenologa
introducida por AMD e Intel VT VT-x es la tenologa introducida por Intel.
En cuanto al uso de memoria RAM, se recomienda que dedique por lo menos 512 de RAM
para el Domain0 ya que requiere recursos para realizar las operaciones de I/O y
comunicacin entre el hypervisor y las maquinas virtuales. Si cree que va a tener maquinas
virtuales que hace uso intensivo de I/O como por ejemplo usando sistemas con RAID por
software, iSCSI o LVM entonces se recomienda agregar otros 512MB extras de RAM para
el Domain0. Para las maquinas virtuales usted haga el calculo, recuerde que en la mayora
de los casos las maquinas virtuales harn mayor uso de memoria que de CPU por lo que no
escatime en recursos.
La asignacin de disco se recomienda que dedique por lo menos 20 GB de espacio para el
sistema operativo del Domain0, ya que va a ejecutar Xen en un Domain0 Linux no va a
usar demasiado espacio, 4GB seran suficientes, sin embargo, se recomienda agregar ms
espacio para los logs de sistema, archivo de imgenes de sistemas operativos, imgenes
ISO, directorio para almacenar el estado (RAM) de las maquinas virtuales, entre otras
cosas.
La configuracin de red para el servidor Xen influenciara en grande el modo de conexin
de las maquinas virtuales, la mayora de modos y dispositivos de red disponibles en un

kernel Linux es soportado por Xen, desde interfaces de red 100M/s, 1GB o 10GB Ethernet,
Bonding (Link Aggregation), VLANs, NFS, iSCSI, y otros esquemas conocidos pueden ser
configurados en el Domain0 para proveer entornos compartidos, seguros y aislados de red
para las maquinas virtuales.
Si desea saber que tipo de CPU tiene un sistema puede iniciar con cualquier disco Live
Linux y ver el contenido del archivo /proc/cpuinfo para ver la informacin de los
procesadores, por ejemplo:
# cat /proc/cpuinfo
processor
: 0
vendor_id
: GenuineIntel
cpu family
: 6
model
: 23
model name
: Intel(R) Xeon(R) CPU
stepping
: 10
cpu MHz
: 1995.043
cache size
: 6144 KB
physical id
: 0
siblings
: 1
core id
: 0
cpu cores
: 1

E5405

@ 2.00GHz

Adems si desea saber si el CPU tiene soporte para virtualizacin asistida por hardware
entonces debera ver la bandera que indique si el soporte esta disponible, Intel incluye la
bandera vmx, por ejemplo:
# grep 'vmx' /proc/cpuinfo
flags
: fpu de tsc msr pae
pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm
arch_perfmon pebs
bts rep_good pni monitor ds_cpl vmx
lahf_lm
flags
: fpu de tsc msr pae
pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm
arch_perfmon pebs
bts rep_good pni monitor ds_cpl vmx
lahf_lm
flags
: fpu de tsc msr pae
pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm
arch_perfmon pebs
bts rep_good pni monitor ds_cpl vmx
lahf_lm
flags
: fpu de tsc msr pae
pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm
arch_perfmon pebs
bts rep_good pni monitor ds_cpl vmx
lahf_lm
flags
: fpu de tsc msr pae
pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm
arch_perfmon pebs

mce cx8 apic sep mtrr mca cmov pat


pbe syscall nx lm constant_tsc
tm2 ssse3 cx16 xtpr dca sse4_1
mce cx8 apic sep mtrr mca cmov pat
pbe syscall nx lm constant_tsc
tm2 ssse3 cx16 xtpr dca sse4_1
mce cx8 apic sep mtrr mca cmov pat
pbe syscall nx lm constant_tsc
tm2 ssse3 cx16 xtpr dca sse4_1
mce cx8 apic sep mtrr mca cmov pat
pbe syscall nx lm constant_tsc
tm2 ssse3 cx16 xtpr dca sse4_1
mce cx8 apic sep mtrr mca cmov pat
pbe syscall nx lm constant_tsc

bts rep_good pni monitor ds_cpl vmx


lahf_lm
flags
: fpu de tsc msr pae
pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm
arch_perfmon pebs
bts rep_good pni monitor ds_cpl vmx
lahf_lm
flags
: fpu de tsc msr pae
pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm
arch_perfmon pebs
bts rep_good pni monitor ds_cpl vmx
lahf_lm
flags
: fpu de tsc msr pae
pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm
arch_perfmon pebs
bts rep_good pni monitor ds_cpl vmx
lahf_lm

tm2 ssse3 cx16 xtpr dca sse4_1


mce cx8 apic sep mtrr mca cmov pat
pbe syscall nx lm constant_tsc
tm2 ssse3 cx16 xtpr dca sse4_1
mce cx8 apic sep mtrr mca cmov pat
pbe syscall nx lm constant_tsc
tm2 ssse3 cx16 xtpr dca sse4_1
mce cx8 apic sep mtrr mca cmov pat
pbe syscall nx lm constant_tsc
tm2 ssse3 cx16 xtpr dca sse4_1

En sistemas con CPU AMD, busque el flag svm (Secure Virtual Machine), por ejemplo:
# grep 'svm' /proc/cpuinfo
flags
: fpu de tsc msr pae mce cx8
pse36 clflush mmx
fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pni cx16
lahf_lm cmp_legacy svm extapic cr8_legacy
flags
: fpu de tsc msr pae mce cx8
pse36 clflush mmx
fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pni cx16
lahf_lm cmp_legacy svm extapic cr8_legacy

apic mtrr mca cmov pat


lm 3dnowext 3dnow rep_good
apic mtrr mca cmov pat
lm 3dnowext 3dnow rep_good

Si las banderas no aparecen entonces asegurese que el soporte de Virtualizacin este


habilitado en el BIOS, si su BIOS no incluye el soporte verifique si hay actualizacin
disponibles con el fabricante del hardware.
Es importante mencionar que en algunas tarjetas madres el soporte de la virtualizacin no
aparece aun despus de activar el soporte y reiniciar el sistema, se recomienda que apague
por completo el servidor, de preferencia desconectndolo de la corriente y volver a
encenderlo, se ha reportado que es un mtodo que ha funcionado en varias tarjetas madre.
Se recomienda que pruebe la compatibilidad de su hardware usando el Xen Live CD, el
cual es un disco Live con Debian Lenny 5.0 con opcin para 32 y 64 bit.

Requerimientos de sofware
Para la ejecucin del hypervisor Xen vamos a requerir de un gestor de arranque con soporte
para arrancar el hypervisor Xen y cargar un kernel Linux con soporte Xen, por ejemplo
GRUB (GRand Unified Bootloader), recuerde que el hypervisor se ejecuta entre el
hardware (BIOS) y el sistema operativo, por lo que vamos a requerir que el gestor de
arranque inicialice el hypervisor como si fuera un kernel de sistema y el kernel vmlinuz lo
ejecute como un mdulo, este kernel ser requerido para inicializar el sistema operativo del
dominio privilegiado Domain0.

El kernel que Xen va a cargar como modulo debe estar modificado para soportar Xen, el
kernel va ser utilizado por el dominio privilegiado o Dom0, el cual tendr privilegios para
iniciar y controlar nuevas maquinas virtuales o DomU, acceder directamente al hardware a
travs de los drivers Backend los cuales multiplexan y re envan las peticiones de hardware
desde los drivers Frontend en los DomU.
Versiones modificadas de Linux, NetBSD y Solaris pueden ser usados como Dom0,
algunas de las distribuciones que proveen kernels Dom0 para Linux son:

Debian

Ubuntu

RHEL

CentOS

SLES

OpenSUSE

Gentoo

Vea la informacin oficial de cada distribucin para ms informacin sobre como instalar
un kernel Dom0. Para ms informacin acerca de kernels Dom0 para diferentes
distribuciones Linux vea la pagina del wiki: Xen dom0 kernels.. El desarrollo actual de Xen
con respecto al kernel se esta por incluir en el kernel linux upstream, todo el trabajo se esta
enfocando en el kernel Xen PVPOS, para ms informacin ver la pagina del wiki: Xen
paravirt_ops for upstream Linux kernel..
Para ejecutar maquinas virtuales PVM Linux, va requerir un kernel linux del guest incluya
soporte Xen, este kernel debe proveer de los drivers Frontend para comunicarse y hacer
peticiones de hardware con los drivers Backend que se ejecutan en el Domain0, algunas
distribuciones incluyen un kernel con los drivers backend y frontend para que pueda ser
usando tanto para dom0 y domU.
Para configurar el entorno de red fsico y virtual en el servidor Xen se va a requerir de las
herramientas de configuracin de red en linux, asegurese de instalar el paquete bridge-utils
en Debian/Ubuntu para la creacin de switches virtuales o bridges.
Para configurar los sistemas de almacenamiento va se recomienda instalar el soporte para la
creacin y administracin de volmenes lgicos LVM, instale el paquete lvm2
Debian/Ubuntu.

Instalando Xen desde el cdigo fuente en Ubuntu


Server
En esta seccin veremos como instalar el hypervisor Xen y sus herramientas desde el
cdigo fuente en la distribucin GNU/Linux Ubuntu Server, en especifico instalaremos la
versin 3.4.x la cual es la versin estable recomendada y la que cuenta con mayores
carcteristicas y soporte por la comunidad.
Al instalar Xen desde el cdigo fuente nos permite instalar el kernel XenLinux que podr
ser usado tanto para el Domain-0 como para las domUs.

Antes de iniciar la instalacin de Xen, se recomienda deshabilitar el soporte de Apparmor


ya que estando activado puede prevenir que algunas maquinas virtuales funcionen, para
detener y desactivar el servicio Apparmor ejecute los siguientes comandos:
# /etc/init.d/apparmor stop
# update-rc.d -f apparmor remove

No se recomienda que active apparmor a menos que sepa administrarlo para que coopere
con Xen.

Compilando Xen 3.4.x desde las fuentes en Ubuntu Server


Para instalar el hypervisor Xen, sus herramientas y el kernel XenLinux se recomienda que
instale todas las dependencias requeridas para la compilacin y de tiempo de ejecucin.
instale las siguientes paquetes:
# apt-get install \
bcc bin86 binutils bridge-utils build-essential bzip2 debhelper gawk gcc
iasl iproute flex make \
module-init-tools git-core gettext mercurial gitk patch udev uuid-dev
libcurl3 libvncserver0 \
libbz2-dev libc6-dev libcurl4-openssl-dev libjpeg62-dev libncurses5-dev
libsdl-dev libssl-dev \
libvncserver-dev libx11-dev zlib1g-dev e2fslibs-dev dpkg-dev xserverxorg-dev \
transfig tgif texinfo texlive-latex-base texlive-latex-recommended
texlive-fonts-extra texlive-fonts-recommended \
python python-dev python-pyopenssl python-pam python-twisted

Nota
Para ms informacin acerca de las dependencias lea el archivo README incluido en la
raz de las fuentes de Xen.
Importante
Para incluir el soporte PCI passthrough debe instalar el paquete pciutils-dev antes de
compilar xen tools.
Importante
Para sistemas de 64-bit debe instalar paquete gcc-multilib.
Descargue las fuentes de Xen 3.4.x desde el sitio oficial de Xen, la versin 3.4.x se
encuentra en la pgina Xen Hypervisor 3.4.3 Download.
Descargue y prepare las fuentes en el directorio /usr/src:
#
#
#
#

cd /usr/src
wget http://bits.xensource.com/oss-xen/release/3.4.3/xen-3.4.3.tar.gz
tar -zxvf xen-3.4.3.tar.gz
cd xen-3.4.3

Compilamos un kernel XenLinux, el Hypervisor, las herramientas y documentacin de


Xen:
# make world

Importante
Cuando se configura el kernel XenLinux se le preguntar acepte la instalacin de
determinadas funcionalidades del kernel, algunas en modo built-in (Y) y otras como
modulo (M/m), se recomiende acepte los parmetros predeterminados presionando
solo Enter.
Importante
El parmetro world crear una imagen de kernel XenLinux (vmlinuz-2.6.x-xen) que
puede ser usado tanto en el dominio privilegiado Domain0 o en dominios no
provilegiados domUs..
Ejecute el comando make install para instalar el hypervisor Xen, el kernel XenLinux, las
herramientas y la documentacin de Xen en el sistema:
# make install

Si no desea instalar el kernel XenLinux 2.6.18, instale los elementos por separado, por
ejemplo, para compilar e instalar el hypervisor Xen y las herramientas ejecute:
# make xen
# make tools
# make install-xen
# make install-tools PYTHON_PREFIX_ARG=

Opcionalmente puede instalar el soporte para Stub domain:


# make stubdom
# make install-stubdom

Espere a que termine la instalacin, al terminar revisamos el contenido del directorio /boot
para verificar la instalacin del hypervisor:
# ls -l /boot/xen*
-rw-r--r-- 1 root root 549722
lrwxrwxrwx 1 root root
12
3.4.3.gz
lrwxrwxrwx 1 root root
12
3.4.3.gz
lrwxrwxrwx 1 root root
12
3.4.3.gz
-rw-r--r-- 1 root root 8950258

2010-07-18 23:36 /boot/xen-3.4.3.gz


2010-07-18 23:36 /boot/xen-3.4.gz -> xen2010-07-18 23:36 /boot/xen-3.gz -> xen2010-07-18 23:36 /boot/xen.gz -> xen2010-07-18 23:36 /boot/xen-syms-3.4.3

Si instalo el kernel XenLinux 2.6.18 incluido en las fuentes de Xen, se instalan los
siguientes archivos y directorios:

Imagen kernel XenLinux: /boot/vmlinuz-2.6.18.8-xen.

Configuracin kernel XenLinux: /boot/config-2.6.18.8-xen.

Mdulos kernel XenLinux: /lib/modules/2.6.18.8-xen.

El demonio de control xend se instala en /usr/sbin/xend junto con la herramienta


/usr/bin/xm y otros programas de control, algunas bibliotecas compartidas son instaladas
en /usr/lib, como /usr/lib/libxenctl.so y /usr/lib/libxenstore.so, el emulador

de dispositivos para maquinas DomU HVM Guests QEMU se instala en


/usr/lib/xen/bin/qemu-dm.
En las siguientes secciones veremos como instalar el kernel Linux con soporte Xen
(XenLinux).

Instalando el kernel XenLinux desde el cdigo fuente


Como se menciono en la seccin anterior, el comando make world compila el kernel
XenLinux 2.6.18.8 con sus respectivos mdulos, y el comando make install los instal en
las rutas::

Imagen kernel XenLinux: /boot/vmlinuz-2.6.18.8-xen.

Configuracin kernel XenLinux: /boot/config-2.6.18.8-xen.

Mdulos kernel XenLinux: /lib/modules/2.6.18.8-xen.

Si su sistema requiere de una imagen initrd para el kernel XenLinux puede crearlo con el
comando mkinitramfs, por ejemplo:
# depmod 2.6.18.8-xen
# cd /boot
# mkinitramfs -o initrd.img-2.6.18.8-xen 2.6.18.8-xen

Importante
Si instala soporte LVM en el Domain-0 se recomienda que actualice la imagen initrd,
por ejemplo: update-initramfs -u -k 2.6.18.8-xen.
En la siguiente seccin veremos como configurar el arrancador GRUB para inicializar el
hypervisor Xen y el domain-0.

Instalando el kernel XenLinux desde apt


En Ubuntu Server 8.04 el deposito universe incluye un kernel XenLinux 2.4.24.x, la cual
puede usar en lugar de la versin XenLinux 2.6.18 incluido en las fuentes de Xen 3.4.x, el
kernel incluido en Ubuntu se puede usar tanto para el dominio privilegiado Domain-0 y las
domUs, este kernel es compatible para arquitecturas de 32 y 64 bits, los paquetes del kernel
y mdulos XenLinux son:

linux-image-2.6.24-28-xen - Imagen del kernel y mdulos con soporte Xen.

linux-ubuntu-modules-2.6.24-28-xen - Mdulos del kernel adicionados por


Ubuntu con soporte Xen.

linux-restricted-modules-2.6.24-28-xen - Mdulos del kernel restrictivos


adicionados por Ubuntu con soporte Xen.

Instale la imagen del kernel XenLinux y sus mdulos desde apt:


# apt-get install linux-image-2.6.24-28-xen
# depmod 2.6.24-28-xen

Importante
Si va a instalar maquinas virtuales Ubuntu Server versiones 8.04 se recomienda instalar
este kernel.
Opcionalmente puede instalar los paquetes linux-ubuntu-modules-2.6.24-28-xen y linuxrestricted-modules-2.6.24-28-xen para instalar los drivers para dispositivos adicionales.

Los paquetes de la imagen y mdulos de kernel XenLinux instalan los siguientes archivos y
directorios:

Imagen kernel XenLinux: /boot/vmlinuz-2.6.24-28-xen.

Imagen Initrd XenLinux: /boot/initrd.img-2.6.24-28-xen.

Configuracin kernel XenLinux: /boot/config-2.6.24-28-xen.

Mdulos kernel XenLinux: /lib/modules/2.6.24-28-xen.

En la siguiente seccin veremos como configurar el arrancador GRUB para inicializar el


hypervisor Xen y el domain-0.

Configurando GRUB para arrancar Xen 3.4.x


Para arrancar un host con Xen es necesario configurar el gestor de arranque GRUB para
iniciar el hypervisor Xen y arrancar el kernel XenLinux para el Domain-0, la
documentacin de xen recomienda crear una entrada en el archivo de configuracin de grub
/boot/grub/menu.lst, por ejemplo:
title
kernel
module
module

Xen 3.0 / XenLinux 2.6


/boot/xen-3.0.gz
/boot/vmlinuz-2.6-xen root=<root-dev> ro console=tty0
/boot/initrd-2.6-xen

Importante
Antes de modificar el archivo de GRUB es recomendable documentar la configuracin
del kernel actual y agregar una entrada adicional con el nuevo kernel, de manera que si
no funciona el arranque de Xen el Domain-0 pueda iniciar con un kernel funcional.
La entrada predeterminada para arrancar un kernel 2.6.24 no modificado de Ubuntu Server
se ve as:
title
Ubuntu 8.04.4 LTS, kernel 2.6.24-28-server
root
(hd0,0)
kernel
/boot/vmlinuz-2.6.24-28-server root=UUID=557cfe8a-e2db4bdd-a965-d5925ebc28a3 ro quiet splash
initrd
/boot/initrd.img-2.6.24-28-server

En este caso se usa la ruta /boot/vmlinuz-2.6.24-28-server ya que el directorio /boot


esta dentro de la particin raz (/) del sistema.
Nota
El nombre tipo /dev/sdX de la particin root con UUID 557cfe8a-e2db-4bdd-a965d5925ebc28a3 puede ser obtenido con el comando blkid.
Cuando instalamos el kernel con el paquete linux-image-2.6.24-28-xen en Ubuntu Server
8.04, automticamente se agrega la siguiente entrada a la configuracin de GRUB:
title
Xen 3.4.3 / Ubuntu 8.04.4 LTS, kernel 2.6.18.8-xen
root
(hd0,0)
kernel
/boot/xen-3.4.3.gz
module
/boot/vmlinuz-2.6.18.8-xen root=UUID=557cfe8a-e2db-4bdda965-d5925ebc28a3 ro console=tty0
module
/boot/initrd.img-2.6.18.8-xen

Es importante que si asigno una particin separada para el directorio /boot, por ejemplo
/dev/sda1 (hd0,0) se asigno para /boot, entonces cambie su configuracin a:
title
Xen 3.4.3 / Ubuntu 8.04.4 LTS, kernel 2.6.18.8-xen
root
(hd0,0)
kernel
/xen-3.4.3.gz
module
/vmlinuz-2.6.18.8-xen root=UUID=557cfe8a-e2db-4bdd-a965d5925ebc28a3 ro console=tty0
module
/initrd.img-2.6.18.8-xen

Note que se especifica la particin de arranque con el parametro root y adems se incluye
una imagen initrd.

Activando el demonio xend


El demonio /usr/sbin/xend debe ser iniciado automticamente al arranque del sistema,
xend es necesario ya que es la interfaz entre las herramientas xm y el hypervisor Xen para
realizar las operaciones requeridas por las maquinas virtuales.
Cuando instalamos xen tools se instalo el script de control de ejecucin
/etc/init.d/xend, con el script podemos controlar la ejecucin del demonio xend, para
que el demonio xend se inicie automticamente al arranque del sistema use:
# update-rc.d xend defaults 20 21

Tambin se recomienda que agregue el servicio xendomains, ms adelante hablaremos de


el, por ahora basta saber que debe ser iniciado automticamente para apagar o iniciar
automticamente las maquinas virtuales.
# update-rc.d xendomains defaults 21 20

El script /etc/init.d/xendomains incluye algunas variables de control desde el archivo


/etc/sysconfig/xendomains, sin embargo esta ruta no se usa en Debian/Ubuntu, es ms
usada para distribuciones basadas en RPM, por lo que moveremos el archivo al directorio
/etc/default que es ms apropiado para distribuciones Debian/Ubuntu:
# mv /etc/sysconfig/xendomains /etc/default/

Ahora debemos editar el script /etc/init.d/xendomains para adaptar las rutas, cambie el
valor de las variables LOCKFILE y XENDOM_CONFIG, por ejemplo:
LOCKFILE=/var/lock/xendomains
XENDOM_CONFIG=/etc/default/xendomains

Nota
Por default LOCKFILE apunta a /var/lock/subsys, el cual no existe en
Ubuntu/Debian, /var/lock est montado sobre un disco ramdisk tipo tmpfs.
El script xendomains por default guarda el estado de las maquinas virtuales (disco y
memoria) al apagar el sistema (Domain-0), por default guarda un archivo de cada VM en el
directorio definido por la variable XENDOMAINS_SAVE dentro del archivo
/etc/default/xendomains, por default esta as:
XENDOMAINS_SAVE=/var/lib/xen/save

Cree el directorio para almacenar el estado de las VMs al apagar o re iniciar el sistema:

# mkdir -p /var/lib/xen/save

Ahora si re inicie el sistema para arrancar el Xen y el domain 0:


# reboot

En la siguiente seccin veremos como validar la ejecucin del servidor Xen, ahora re inicie
el sistema para arrancar con Xen y el Dom0.

Arrancando y verificando el funcionamiento de Xen


Para verificar el correcto funcionamiento de un sistema con Xen, primero verifique que esta
ejecutando el kernel linux modificado, use uname para dicha tarea:
# uname -a
Linux xh01.example.com 2.6.18.8-xen #1 SMP Thu May 27 01:27:21 UTC 2010
x86_64 GNU/Linux

Note que el comando anterior nos devuelve la versin del kernel y efectivamente nos
muestra que es la versin Xen, adems podemos ver que estamos ejecutando un sistema
operativo GNU/Linux x86_64, es decir, 64-bit.
Ahora verifique si el demonio xend se esta ejecutando, verifique que el archivo
/proc/xen/capabilities muestra control_d, lo cual nos indica que se esta ejecutando
en el dominio de control o privilegiado, por ejemplo:
# cat /proc/xen/capabilities
control_d

Ahora verifiquemos si nos podemos comunicar con el demonio xend usando el comando
xm, veamos la informacin del sistema xen:
# xm info
host
: xh01.example.com
release
: 2.6.18.8-xen
version
: #1 SMP Tue Oct 12 20:58:31 CDT 2010
machine
: x86_64
nr_cpus
: 2
nr_nodes
: 1
cores_per_socket
: 2
threads_per_core
: 1
cpu_mhz
: 2700
hw_caps
:
178bf3ff:ebd3fbff:00000000:00000010:00002001:00000000:0000011f:00000000
virt_caps
: hvm
total_memory
: 1919
free_memory
: 119
node_to_cpu
: node0:0-1
node_to_memory
: node0:119
xen_major
: 3
xen_minor
: 4
xen_extra
: .3
xen_caps
: xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32
hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler
: credit
xen_pagesize
: 4096
platform_params
: virt_start=0xffff800000000000
xen_changeset
: unavailable

cc_compiler
cc_compile_by
cc_compile_domain
cc_compile_date
xend_config_format

:
:
:
:
:

gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)


root
example.com
Tue Oct 12 21:09:51 CDT 2010
4

En la salida del comando anterior podemos determinar lo siguiente:


host
El nombre de host es visualizado.
release
Versin del kernel linux sobre el que esta corriendo
machine
Arquitectura del CPU x86_64
nr_cpus
Nmero de CPUs en el sistema
cores_per_socket
Nmero de ncleos por zcalo
cpu_mhz
Frecuencia del CPU
total_memory
Memoria total disponible en el sistema
xen_major, xen_minor, xen_extra
Versiones mayores, menores y extras de xen, por ejemplo 3.4.3
xen_caps
Capacidad de ejecucin de maquinas virtuales, muestra el tipo de VMs capaz de
ejecutar
Algo importante es ver xen_caps para saber que tipo de maquinas virtuales soporta nuestro
entorno.
Ahora podemos consultar la informacin de maquinas virtuales a travs de xend, use la
opcin list del comando xm para ver un listado de maquinas virtuales en ejecucin:
# xm list
Name
Time(s)
Domain-0
15.7

ID
0

Mem VCPUs
512

State
r-----

Nota
Vea que la cantidad de memoria asignada al Domain-0 esta limitada a 512M.
Si la informacin antes mostrada fue similar significa que Xen 3.4.x esta corriendo
exitosamente sobre un Domain-0 Ubuntu 8.04 LTS Server edicin amd64.

Instalando Xen en Ubuntu Server desde apt

Ubuntu 8.04 LTS Server tiene soporte incluido para Xen, el soporte Xen para el kernel
2.6.24 funciona tanto para el Domain-0 y las domUs, tanto para las versiones i386 como
amd64. El hypervisor soportado es Xen 3.2 as como las herramientas de sistema. Adems
incluye el soporte de xen-tools, las cuales es un conjunto de scripts para automatizar la
creacin y administracin de maquinas virtuales.
En las siguientes secciones veremos como instalar un servidor Xen para hospedar maquinas
virtuales tanto de tipo PVM como HVM sobre Ubuntu 8.04 LTS Server en la edicin
amd64 la cual nos permitir ejecutar maquinas virtuales tanto en arquitecturas 32-bit (i386)
como 64-bit (amd64).

Instalando el hypervisor Xen y el kernel XenLinux desde apt


El sistema de paquetes apt incluye el meta paquete ubuntu-xen-server el cual instala los
paquetes requeridos para el servidor Xen, la lista de los paquetes incluidos son:

xen-hypervisor-3.2 - Hypervisor Xen.

xen-docs-3.2 - Documentacin de Xen 3.2.

linux-image-2.6.24-28-xen - Imagen del kernel y mdulos con soporte Xen.

linux-ubuntu-modules-2.6.24-28-xen - Mdulos del kernel adicionados por


Ubuntu con soporte Xen.

linux-restricted-modules-2.6.24-28-xen - Mdulos del kernel restrictivos


adicionados por Ubuntu con soporte Xen.

libxen3 - Bibliotecas requeridas para la ejecucin de Xen en el Domain0.

python-xen-3.2 - Soporte mdulos python para Xen.

xen-utils-3.2 - Incluye el servidor xend y la herramienta de administracin xm.

Adems instala los siguientes paquetes adicionales o dependencias:

binutils 2.18.1 - Utilerias de sistema.

bridge-utils - Herramientas para la creacin y administracin de switches virtuales


(bridges).

libdirectfb-1.0-0 - Soporte FrameBuffer.

libsdl1.2debian - Soporte SDL.

debootstrap - Herramientas para automatizar la creacin de instalaciones


Debian/Ubuntu.

xen-tools - Herramientas para automatizar la creacin y administracin de maquinas


virtuales Debian/Ubuntu.

Y por si fuera poco hace la recomendacin de otros paquetes tiles:

rinse

xfsprogs

libc6-xen

xen-hypervisor-amd64

xen-hypervisor-i386

xen-hypervisor-i386-pae

xen-shell

Instalamos el metapaquete ubuntu-xen-server, el cual instalar todos los paquetes


requeridos para nuestro entorno de virtualizacin.
# apt-get install ubuntu-xen-server

El paquete xen-hypervisor-3.2 instal el hypervisor xen en el directorio /boot:


# ls -l /boot/xen*
-rw-r--r-- 1 root root 401328 2009-02-20 21:04 /boot/xen-3.2.gz

Adems el paquete xen-utils instalan el demonio /usr/bin/xend y el programa


/usr/bin/xm junto con un conjunto de bibliotecas requeridas para el funcionamiento de
Xen.
Los paquetes de la imagen y mdulos de kernel XenLinux instalan los siguientes archivos y
directorios:

Imagen kernel XenLinux: /boot/vmlinuz-2.6.24-28-xen.

Imagen Initrd XenLinux: /boot/initrd.img-2.6.24-28-xen.

Configuracin kernel XenLinux: /boot/config-2.6.24-28-xen.

Mdulos kernel XenLinux: /lib/modules/2.6.24-28-xen.

Al final de la instalacin de los paquetes arriba mencionados el sistema de paquetes


actualizar el archivo de configuracin de GRUB para incluir una entrada para arrancar el
sistema con el hypervisor Xen y un kernel Linux modificado con el soporte Xen, siga con
la siguiente seccin para ver las configuraciones de GRUB.
En la siguiente seccin veremos como configurar el arrancador GRUB para inicializar el
hypervisor Xen y el domain-0.

Configurando GRUB para arrancar Xen


Para arrancar un host con Xen es necesario configurar el gestor de arranque GRUB para
iniciar el hypervisor Xen y arrancar el kernel XenLinux para el Domain-0, la
documentacin de xen recomienda crear una entrada en el archivo de configuracin de grub
/boot/grub/menu.lst, por ejemplo:
title
kernel
module
module

Xen 3.0 / XenLinux 2.6


/boot/xen-3.0.gz
/boot/vmlinuz-2.6-xen root=<root-dev> ro console=tty0
/boot/initrd-2.6-xen

Importante
Antes de modificar el archivo de GRUB es recomendable documentar la configuracin
del kernel actual y agregar una entrada adicional con el nuevo kernel, de manera que si
no funciona el arranque de Xen el Dom0 pueda iniciar con un kernel funcional.
La entrada predeterminada para arrancar un kernel 2.6.24 no modificado de Ubuntu Server
se ve as:
title
Ubuntu 8.04.4 LTS, kernel 2.6.24-28-server
root
(hd0,0)
kernel
/boot/vmlinuz-2.6.24-28-server root=UUID=557cfe8a-e2db4bdd-a965-d5925ebc28a3 ro quiet splash

initrd

/boot/initrd.img-2.6.24-28-server

En este caso se usa la ruta /boot/vmlinuz-2.6.24-28-server ya que el directorio /boot


esta dentro de la particin raz (/) del sistema.
Nota
El nombre tipo /dev/sdX de la particin root con UUID 557cfe8a-e2db-4bdd-a965d5925ebc28a3 puede ser obtenido con el comando blkid.
Cuando se instala el paquete ubuntu-xen-server en Ubuntu Server 8.04, automticamente
se agrega la siguiente entrada a la configuracin de GRUB:
title
Xen 3.2 / Ubuntu 8.04.4 LTS, kernel 2.6.24-28-xen
root
(hd0,0)
kernel
/boot/xen-3.2.gz
module
/boot/vmlinuz-2.6.24-28-xen root=UUID=557cfe8a-e2db4bdd-a965-d5925ebc28a3 ro console=tty0
module
/boot/initrd.img-2.6.24-28-xen

Es importante que si asigno una particin separada para el directorio /boot, por ejemplo
/dev/sda1 (hd0,0) se asigno para /boot, entonces cambie su configuracin a:
title
Xen 3.2 / Ubuntu 8.04.4 LTS, kernel 2.6.24-28-xen
root
(hd0,0)
kernel
/xen-3.2.gz
module
/vmlinuz-2.6.24-28-xen root=UUID=557cfe8a-e2db-4bdda965-d5925ebc28a3 ro console=tty0
module
/initrd.img-2.6.24-28-xen

Note que se especifica la particin de arranque con el parametro root y adems se incluye
una imagen initrd.

Activando el demonio xend


El demonio /usr/sbin/xend debe ser iniciado automticamente al arranque del sistema, xend
es necesario ya que es la interfaz entre las herramientas xm y el hypervisor Xen para
realizar las operaciones requeridas por las maquinas virtuales.
El paquete xen-utils instalo el script de control de ejecucin /etc/init.d/xend, con el
script podemos controlar la ejecucin del demonio xend, para que el demonio xend se inicie
automticamente al arranque del sistema use:
# update-rc.d xend defaults

Tambin se recomienda que agregue el servicio xendomains, ms adelante hablaremos de


el, por ahora basta saber que debe ser iniciado automticamente para apagar o iniciar
automticamente las maquinas virtuales.
# update-rc.d xendomains defaults

El script xendomains por default guarda el estado de las maquinas virtuales (disco y
memoria) al apagar el sistema (Domain-0), por default guarda un archivo de cada VM en el
directorio definido por la variable XENDOMAINS_SAVE dentro del archivo
/etc/default/xendomains, por default esta as:
XENDOMAINS_SAVE=/var/lib/xen/save

Cree el directorio para almacenar el estado de las VMs al apagar o re iniciar el sistema:
# mkdir -p /var/lib/xen/save

Ahora si re inicie el sistema para arrancar el Xen y el domain 0:


# reboot

En la siguiente seccin veremos como validar la ejecucin del servidor Xen, ahora re inicie
el sistema para arrancar con Xen y el Dom0.

Arrancando y verificando el funcionamiento de Xen


Para verificar el correcto funcionamiento de un sistema con Xen, primero verifique que esta
ejecutando el kernel linux modificado, use uname para dicha tarea:
# uname -a
Linux curso00.example.com 2.6.24-28-xen #1 SMP Thu May 27 01:27:21 UTC
2010 x86_64 GNU/Linux

Note que el comando anterior nos devuelve la versin del kernel y efectivamente nos
muestra que es la versin Xen, adems podemos ver que estamos ejecutando un sistema
operativo GNU/Linux x86_64, es decir, 64-bit.
Ahora verifique si el demonio xend se esta ejecutando, verifique que el archivo
/proc/xen/capabilities muestra control_d, lo cual nos indica que se esta ejecutando
en el dominio de control o privilegiado, por ejemplo:
# cat /proc/xen/capabilities
control_d

Ahora verifiquemos si nos podemos comunicar con el demonio xend usando el comando
xm, veamos la informacin del sistema xen:
# xm info
host
: curso00.example.com
release
: 2.6.24-28-xen
version
: #1 SMP Thu May 27 01:27:21 UTC 2010
machine
: x86_64
nr_cpus
: 2
nr_nodes
: 1
cores_per_socket
: 2
threads_per_core
: 1
cpu_mhz
: 2613
hw_caps
:
178bf3ff:ebd3fbff:00000000:00000010:00002001:00000000:0000011f
total_memory
: 2047
free_memory
: 125
max_free_memory
: 1664
max_para_memory
: 1660
max_hvm_memory
: 1648
node_to_cpu
: node0:0-1
xen_major
: 3
xen_minor
: 2
xen_extra
: .1-rc1-pre
xen_caps
: xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32
hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler
: credit

xen_pagesize
platform_params
xen_changeset
cc_compiler
cc_compile_by
cc_compile_domain
cc_compile_date
xend_config_format

:
:
:
:
:
:
:
:

4096
virt_start=0xffff800000000000
unavailable
gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
buildd
buildd
Sat Feb 21 03:01:02 UTC 2009
4

En la salida del comando anterior podemos determinar lo siguiente:


host
El nombre de host es visualizado.
release
Versin del kernel linux sobre el que esta corriendo
machine
Arquitectura del CPU x86_64
nr_cpus
Nmero de CPUs en el sistema
cores_per_socket
Nmero de ncleos por zcalo
cpu_mhz
Frecuencia del CPU
total_memory
Memoria total disponible en el sistema
xen_major, xen_minor, xen_extra
Versiones mayores, menores y extras de xen, por ejemplo 3.2.1_rc1-pre
xen_caps
Capacidad de ejecucin de maquinas virtuales, muestra el tipo de VMs capaz de
ejecutar
Algo importante es ver xen_caps para saber que tipo de maquinas virtuales soporta nuestro
entorno.
Ahora podemos consultar la informacin de maquinas virtuales a travs de xend, use la
opcin list del comando xm para ver un listado de maquinas virtuales en ejecucin:
# xm list
Name
Time(s)
Domain-0
26.0

ID

Nota
Vea la cantidad de memoria asignada al Domain-0.

Mem VCPUs
1879

State
r-----

Si la informacin antes mostrada fue similar significa que Xen esta corriendo exitosamente
sobre un Domain-0 Ubuntu 8.04 LTS Server edicin amd64.

Instalando Xen en CentOS 5


En esta seccin veremos como instalar Xen y sus requerimientos en un sistema CentOS
Server 5. La instalacin se realiza usando CentOS 5.5 en su versin x86_64.

Instalando Xen con yum


CentOS 5.x incluye soporte para Xen, el soporte Xen para el kernel 2.6.18 funciona tanto
para el Dom0 y DomU tanto para las versiones i386 como amd64. El hypervisor soportado
es Xen 3.1 as como las herramientas de sistema. CentOS incluye la herramienta de
administracin de maquinas virtuales Virtual Manager, la cual es una interfaz grfica para
simplificar la administracin de un entorno de virtualizacin.
Para instalar el soporte de Xen instale el paquete kernel-xen y xen usando la herramienta
yum, por ejemplo:
# yum install kernel-xen xen

Al instalar los paquetes kernel-xen y xen automticamente se instalan las siguientes


dependencias:

kernel-xen

xen

bridge-utils

e4fsprogs-libs

iscsi-initiator-utils

libvirt

libvirt-python

python-virtinst

qemu

xen-libs

En las siguientes secciones veremos como verificar el funcionamiento de Xen en CentOS.

Configurando GRUB para arrancar Xen


Para arrancar un host con Xen es necesario configurar el gestor de arranque GRUB para
iniciar el hypervisor Xen y arrancar el kernel del dominio privilegiado, la documentacin
de xen incluye este ejemplo de entrada en el archivo de configuracin de GRUB:
title
kernel
module
module

Xen 3.0 / XenLinux 2.6


/boot/xen-3.0.gz
/boot/vmlinuz-2.6-xen root=<root-dev> ro console=tty0
/boot/initrd-2.6-xen

Importante
Antes de modificar el archivo de GRUB es recomendable documentar la configuracin
del kernel actual y agregar una entrada adicional con el nuevo kernel, de manera que si
no funciona el arranque de Xen el Dom0 pueda iniciar con un kernel funcional.

La entrada predeterminada para arrancar un kernel 2.6.18 no modificado de CentOS se ve


as:
title CentOS (2.6.18-194.3.1.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.3.1.el5 ro root=LABEL=/ rhgb
quiet
initrd /boot/initrd-2.6.18-194.3.1.el5.img

En este caso se usa la ruta /boot/vmlinuz-2.6.18-194.3.1.el5 ya que el directorio


/boot esta dentro de la particin raz (/) del sistema.
Nota
El nombre tipo /dev/sdX de la particin root con LABEL=/ puede ser obtenido con el
comando blkid.
Cuando se instala el paquete kernel-xen en CentOS 5.x, automticamente se agrega la
siguiente entrada a la configuracin de GRUB:
title CentOS (2.6.18-194.3.1.el5xen)
root (hd0,0)
kernel /boot/xen.gz-2.6.18-194.3.1.el5
module /boot/vmlinuz-2.6.18-194.3.1.el5xen ro root=LABEL=/ rhgb
quiet
module /boot/initrd-2.6.18-194.3.1.el5xen.img

Recuerde actualizar la lnea default para definir el kernel predeterminado, por ejemplo, en
CentOS cuando instala kernel-xen agrega la entrada de Xen se agrego hasta arriba (0), y
cambia el default a 1 para arrancar con el kernel default, cambie el default a 0 para arrancar
con el kernel de Xen, por ejemplo:
default=0

Es importante que si asigno una particin separada para el directorio /boot, por ejemplo
/dev/sda1 (hd0,0) se asigno para /boot, entonces cambie su configuracin a:
title CentOS (2.6.18-194.3.1.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-194.3.1.el5
module /vmlinuz-2.6.18-194.3.1.el5xen ro root=LABEL=/ rhgb quiet
module /initrd-2.6.18-194.3.1.el5xen.img

Note que se especifica la particin de arranque con el parametro root y adems se incluye
una imagen initrd.

Activando el demonio xend


El demonio /usr/sbin/xend debe ser iniciado automticamente al arranque del sistema,
xend es necesario ya que es la interfaz entre las herramientas xm y el hypervisor Xen para
realizar las operaciones requeridas por las maquinas virtuales.
El paquete xen instalo el script de control de ejecucin /etc/init.d/xend, con el script
podemos controlar la ejecucin del demonio xend, para que el demonio xend se inicie
automticamente al arranque del sistema use:
# chkconfig xend on

Tambin se recomienda que agregue el servicio xendomains, ms adelante hablaremos de


el, por ahora basta saber que debe ser iniciado automticamente para apagar o iniciar
automticamente las maquinas virtuales.
# chkconfig xendomains on

Ahora si re inicie el sistema para arrancar el Xen y el domain 0:


# reboot

En la siguiente seccin veremos como validar la ejecucin del servidor Xen, ahora re inicie
el sistema para arrancar con Xen y el Dom0.

Arrancando y verificando el funcionamiento de Xen


Para verificar el correcto funcionamiento de un sistema con Xen, primero verifique que esta
ejecutando el kernel linux modificado, use el comando uname para dicha tarea:
# uname -a
Linux curso03.example.com 2.6.18-194.3.1.el5xen #1 SMP Thu May 13
13:49:53 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

Note que el comando anterior nos devuelve la versin del kernel y efectivamente nos
muestra que es la versin Xen, adems podemos ver que estamos ejecutando un sistema
operativo GNU/Linux x86_64, es decir, 64-bit.
Ahora verifique si el demonio xend se esta ejecutando, verifique que el archivo
/proc/xen/capabilities muestra control_d, lo cual nos indica que se esta ejecutando
en el dominio de control o privilegiado, por ejemplo:
# cat /proc/xen/capabilities
control_d

Ahora verifiquemos si nos podemos comunicar con el demonio xend usando el comando
xm, veamos la informacin del sistema xen:
# xm info
host
: curso03.example.com
release
: 2.6.18-194.3.1.el5xen
version
: #1 SMP Thu May 13 13:49:53 EDT 2010
machine
: x86_64
nr_cpus
: 2
nr_nodes
: 1
sockets_per_node
: 1
cores_per_socket
: 2
threads_per_core
: 1
cpu_mhz
: 2411
hw_caps
:
178bfbff:ebd3fbff:00000000:00000010:00002001:00000000:0000001f
total_memory
: 1983
free_memory
: 240
node_to_cpu
: node0:0-1
xen_major
: 3
xen_minor
: 1
xen_extra
: .2-194.3.1.el5
xen_caps
: xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32
hvm-3.0-x86_32p hvm-3.0-x86_64
xen_pagesize
: 4096

platform_params
xen_changeset
cc_compiler
cc_compile_by
cc_compile_domain
cc_compile_date
xend_config_format

:
:
:
:
:
:
:

virt_start=0xffff800000000000
unavailable
gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)
mockbuild
centos.org
Thu May 13 12:59:18 EDT 2010
2

En la salida del comando anterior podemos determinar lo siguiente:


host
El nombre de host es visualizado.
release
Versin del kernel linux sobre el que esta corriendo
machine
Arquitectura del CPU x86_64
nr_cpus
Nmero de CPUs en el sistema
cores_per_socket
Nmero de ncleos por zcalo
cpu_mhz
Frecuencia del CPU
total_memory
Memoria total disponible en el sistema
xen_major, xen_minor, xen_extra
Versiones mayores, menores y extras de xen, por ejemplo 3.1.2-194.3.1.el5
xen_caps
Capacidad de ejecucin de maquinas virtuales, muestra el tipo de VMs capaz de
ejecutar
Algo importante es ver xen_caps para saber que tipo de maquinas virtuales soporta nuestro
entorno.
Ahora podemos consultar la informacin de maquinas virtuales a travs de xend, use la
opcin list del comando xm para ver un listado de maquinas virtuales en ejecucin:
# xm list
Name
Time(s)
Domain-0
22.5

ID Mem(MiB) VCPUs State


0

1689

2 r-----

Nota
Vea la cantidad de memoria asignada al Domain-0.
Si la informacin antes mostrada fue similar significa que Xen esta corriendo exitosamente
sobre un Domain-0 CentOS 5.x edicin amd64.

Instalando Xen 3.4 desde el repositorio gitco.de en


CentOS 5
Sascha Gnther mantiene el repositorio http://www.gitco.de/repo/ en el cual publican
paquetes RPM del hypervisor Xen 3 y 4 listos para instalarse en CentOS-5/RHEL-5
(x86_64), cabe hacer mencin que estos paquetes fueron compilados usando las fuentes de
http://www.xen.org y solo instalan el hypervisor y no el kernel, por lo que tendr que seguir
usando el kernel que provee redhat o compilar un kernel con soporte Xen.
Agregue el repositorio a YUM:
# vim /etc/yum.repos.d/GITCO-XEN3.4.3_x86_64.repo

Con el contenido:
[gitco-xen3.4.3]
name=RHEL/CentOS-$releasever - GITCO XEN3.4.3
baseurl=http://www.gitco.de/repo/xen3.4.3
gpgcheck=0
enabled=1

E instale el hypervisor con:


# yum install xen

Recuerde validar las entradas en la configuracin de GRUB y que el servicio xend y


xendomains estn activos.

Configurando el demonio xend y la herramienta xm


El demonio xend es la interfaz entre el hypervisor y las maquinas virtuales, debe ser
ejecutado en el Dom0 ya que requiere privilegios elevados al hardware, el demonio xend
debe ser ejecutado como root al inicio del sistema.
La ejecucin y comportamiento del demonio xend puede ser controlada a travs del archivo
de configuracin /etc/xen/xend-config.sxp, en dicho archivo se definen directivas para
controlar el comportamiento general del dominio y maquinas virtuales, a continuacin se
describen algunos de los parmetros ms importantes.
La directiva logfile define la ruta del archivo en la que el demonio xend registrar los
eventos.
(logfile /var/log/xen/xend.log)

La directiva network-script define la ruta al script de inicio y control de las interfaces y


parmetros de red virtuales, el modo predeterminado es en modo bridge, por ejemplo:
(network-script network-bridge)

En este caso network-script busca un script de shell localizado en el directorio


/etc/xen/scripts/ con el nombre network-bridge.
La directiva vif-script define la ruta al script que crear las interfaces de red virtuales
para las domUs.
(vif-script vif-bridge)

En este caso vif-script busca un script de shell localizado en el directorio


/etc/xen/scripts/ con el nombre vif-bridge el cual se encargar de crear y destruir las
interfaces virtuales (vif.X.X) para los DomU.
Vea la seccin Configuracin de los dispositivos de red fsicos y virtuales en Xen para ms
informacin del uso de los scripts network-bridge y vif-bridge y la creacin de redes
virtuales publicas y privadas con Xen.
La directiva dom0-min-mem define la cantidad mnima de memoria con la que puede operar
el Domain-0.
(dom0-min-mem 196)

Por default, el Domain-0 usa toda la memoria disponible en el sistema y va liberando


memoria para asignarle a los domU de forma dinmica conforme van iniciando (balloning),
se recomienda que limite la cantidad de memoria mxima como parmetro de ejecucin del
hypervisor en la configuracin de GRUB.
La directiva dom0-cpus define la cantidad de CPUs o ncleos que puede usar el Domain-0,
en sistemas con multi-core se recomienda dedicar un CPU fisico o ncleo al domain-0, esto
es recomendable para evitar compartir el CPU con otras VMS especialmente cuando en el
domain-0 se realizan tareas de I/O adicionales, como por ejemplo uso de RAID por
software, LVM, NFS o iSCSI por mencionar algunas. Por default se usa el varlor 0, el cual
significa que puede usar cualquier CPU disponible, es decir, todos.
(dom0-cpus 0)

Vea la seccin Administracin de recursos virtuales en Xen para obtener ms informacin


para controlar el uso de memoria y CPU para el Dom0.
Para que los cambios tomen efecto re inicie el demonio xend, si los cambios no se aplican
ya que son cambios significativos como cambios de modo bridge a route entonces se
recomienda que re inicie el servidor.
La herramienta de administracin /usr/bin/xm es usada para interactuar con el demonio
xend y ejecutar acciones sobre las maquinas virtuales incluyendo el Dom0, el programa xm
requiere de privilegios de root para ser ejecutado.
Con el subcomando info puede ver informacin relacionada al sistema y el hypervisor:
# xm info
host
: xh01.example.com
release
: 2.6.24-28-xen
version
: #1 SMP Wed Apr 1 23:47:10 UTC 2009
machine
: x86_64
nr_cpus
: 8
nr_nodes
: 1
cores_per_socket
: 4
threads_per_core
: 1
cpu_mhz
: 1995
hw_caps
:
bfebfbff:20100800:00000000:00000140:040ce33d:00000000:00000001
total_memory
: 6137
free_memory
: 6
max_free_memory
: 1419
max_para_memory
: 1415
max_hvm_memory
: 1403

node_to_cpu
: node0:0-7
xen_major
: 3
xen_minor
: 2
xen_extra
: .1-rc1-pre
xen_caps
: xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32
hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler
: credit
xen_pagesize
: 4096
platform_params
: virt_start=0xffff800000000000
xen_changeset
: unavailable
cc_compiler
: gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
cc_compile_by
: buildd
cc_compile_domain
: buildd
cc_compile_date
: Sat Feb 21 03:01:02 UTC 2009
xend_config_format
: 4

Tambin puede ver los mensajes que gener el hypervisor Xen al arrancar usando el
subcomando dmesg, por ejemplo:
# xm dmesg
__ __
_____ ____
_
_
\ \/ /___ _ __
|___ / |___ \ / |
_ __ ___/ |
_ __ _ __ ___
\ // _ \ '_ \
|_ \
__) | | |__| '__/ __| |__| '_ \| '__/ _ \
/ \ __/ | | | ___) | / __/ _| |__| | | (__| |__| |_) | | | __/
/_/\_\___|_| |_| |____(_)_____(_)_| |_| \___|_| | .__/|_| \___|
|_|
(XEN) Xen version 3.2.1-rc1-pre (buildd@buildd) (gcc version 4.2.4
(Ubuntu 4.2.4-1ubuntu4)) Sat Feb 21 03:01:02 UTC 2009
(XEN) Latest ChangeSet: unavailable
(XEN) Command line:
(XEN) Video information:
(XEN) VGA is text mode 80x25, font 8x16
(XEN) VBE/DDC methods: V2; EDID transfer time: 2 seconds
(XEN) Disc information:
(XEN) Found 2 MBR signatures
(XEN) Found 2 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN) 0000000000000000 - 0000000000098c00 (usable)
(XEN) 0000000000098c00 - 0000000000100000 (reserved)
(XEN) 0000000000100000 - 000000009e2b2000 (usable)
(XEN) 000000009e2b2000 - 000000009e369000 (ACPI NVS)
(XEN) 000000009e369000 - 000000009fa32000 (usable)
(XEN) 000000009fa32000 - 000000009fa9a000 (reserved)
(XEN) 000000009fa9a000 - 000000009faa9000 (usable)
(XEN) 000000009faa9000 - 000000009fb1a000 (ACPI NVS)
(XEN) 000000009fb1a000 - 000000009fb28000 (usable)
(XEN) 000000009fb28000 - 000000009fb3a000 (ACPI data)
(XEN) 000000009fb3a000 - 000000009fc00000 (usable)
(XEN) 000000009fc00000 - 00000000b0000000 (reserved)
(XEN) 00000000ffc00000 - 00000000ffc0c000 (reserved)
(XEN) 0000000100000000 - 00000001e0000000 (usable)
(XEN) System RAM: 6137MB (6285272kB)
(XEN) Xen heap: 14MB (14864kB)
(XEN) Domain heap initialised: DMA width 32 bits
(XEN) Processor #0 7:7 APIC version 20
(XEN) Processor #2 7:7 APIC version 20
(XEN) Processor #4 7:7 APIC version 20

(XEN) Processor #6 7:7 APIC version 20


(XEN) Processor #1 7:7 APIC version 20
(XEN) Processor #3 7:7 APIC version 20
(XEN) Processor #5 7:7 APIC version 20
(XEN) Processor #7 7:7 APIC version 20
(XEN) IOAPIC[0]: apic_id 8, version 32, address 0xfec00000, GSI 0-23
(XEN) IOAPIC[1]: apic_id 9, version 32, address 0xfec80000, GSI 24-47
(XEN) Enabling APIC mode: Flat. Using 2 I/O APICs
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Detected 1995.059 MHz processor.
(XEN) HVM: VMX enabled
(XEN) CPU0: Intel(R) Xeon(R) CPU
E5405 @ 2.00GHz stepping 0a
(XEN) Booting processor 1/2 eip 8c000
(XEN) CPU1: Intel(R) Xeon(R) CPU
E5405 @ 2.00GHz stepping 0a
(XEN) Booting processor 2/4 eip 8c000
(XEN) CPU2: Intel(R) Xeon(R) CPU
E5405 @ 2.00GHz stepping 0a
(XEN) Booting processor 3/6 eip 8c000
(XEN) CPU3: Intel(R) Xeon(R) CPU
E5405 @ 2.00GHz stepping 0a
(XEN) Booting processor 4/1 eip 8c000
(XEN) CPU4: Intel(R) Xeon(R) CPU
E5405 @ 2.00GHz stepping 0a
(XEN) Booting processor 5/3 eip 8c000
(XEN) CPU5: Intel(R) Xeon(R) CPU
E5405 @ 2.00GHz stepping 0a
(XEN) Booting processor 6/5 eip 8c000
(XEN) CPU6: Intel(R) Xeon(R) CPU
E5405 @ 2.00GHz stepping 0a
(XEN) Booting processor 7/7 eip 8c000
(XEN) CPU7: Intel(R) Xeon(R) CPU
E5405 @ 2.00GHz stepping 0a
(XEN) Total of 8 processors activated.
(XEN) ENABLING IO-APIC IRQs
(XEN) -> Using new ACK method
(XEN) Platform timer overflows in 14998 jiffies.
(XEN) Platform timer is 14.318MHz HPET
(XEN) Brought up 8 CPUs
(XEN) xenoprof: Initialization failed. Intel processor model 23 for P6
class family is not supported
(XEN) AMD IOMMU: Disabled
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Xen kernel: 64-bit, lsb, compat32
(XEN) Dom0 kernel: 64-bit, lsb, paddr 0xffffffff80200000 ->
0xffffffff806d68c8
(XEN) PHYSICAL MEMORY ARRANGEMENT:
(XEN) Dom0 alloc.:
00000001d4000000->00000001d8000000 (1492553 pages
to be allocated)
(XEN) VIRTUAL MEMORY ARRANGEMENT:
(XEN) Loaded kernel: ffffffff80200000->ffffffff806d68c8
(XEN) Init. ramdisk: ffffffff806d7000->ffffffff81cde800
(XEN) Phys-Mach map: ffffffff81cdf000->ffffffff82862248
(XEN) Start info:
ffffffff82863000->ffffffff828634a4
(XEN) Page tables:
ffffffff82864000->ffffffff8287d000
(XEN) Boot stack:
ffffffff8287d000->ffffffff8287e000
(XEN) TOTAL:
ffffffff80000000->ffffffff82c00000
(XEN) ENTRY ADDRESS: ffffffff80200000
(XEN) Dom0 has maximum 8 VCPUs
(XEN) Initrd len 0x1607800, start at 0xffffffff806d7000
(XEN) Scrubbing Free RAM: .done.
(XEN) Xen trace buffers: disabled
(XEN) Std. Loglevel: Errors and warnings

(XEN)
(XEN)
(XEN)
input
(XEN)

Guest Loglevel: Nothing (Rate-limited: Errors and warnings)


Xen is relinquishing VGA console.
*** Serial input -> DOM0 (type 'CTRL-a' three times to switch
to Xen)
Freed 100kB init memory.

Por ltimo, tambin puede ver los ltimos mensajes de log de Xen con el subcomando log,
por ejemplo:
# xm log

Para ms informacin del uso del comando xm vaya al capitulo Administracin de


maquinas y recursos virtuales en Xen.

Configuracin de los medios de almacenamiento


local para las VMs en Xen
Xen, en conjunto con el kernel XenLinux ofrecen varias alternativas para el medios de
almacenamiento de las mquinas virtuales, tambin conocidos como discos duros virtuales,
el medio de almacenamiento para las maquinas virtuales Xen se le conoce como
Dispositivo de Bloque Virtual (Virtual Block Device), los VBD pueden ser cualquier tipo de
dispositivo de bloque soportado por el kernel Linux, como discos o particiones nativas,
archivos de imagen raw, volmenes lgicos LVM entre otros.
Los tipos de VBD soportados en Xen son:

Archivos de imagen con el driver loopback: El driver loopback propio del kernel
Linux mapea dispositivos de bloque a dispositivos loopback. Soporta archivos
RAW de tipo full y sparce. Xen usa el manejador file para este tipo de archivos.

Archivos de imagen con el driver blktap: El driver propio de Xen ofrece mayor
rendimiento que loopback, es ms escalable y asincrono. Soporta archivos RAW de
tipo full y sparce.Xen usa el manejador tap:aio para este tipo de archivos.

Dispositivos Fsicos - Las dispositivos fsicos de almacenamiento local incluye:

Particiones nativas: /dev/hdxx, /dev/sdxx,

Dispositivos RAID por softaware: /dev/mdX.

Volmenes Lgicos LVM: /dev/VGOSData/domuY-root,


/dev/VGOSData/domuY-swap, /dev/VGAPPData/domuY-home.
Xen usa el manejador phy para este tipo de dispositivos.

En las siguientes secciones veremos como crear diferentes medios de almacenamiento para
las maquinas virtuales usando los tres tipos de almacenamiento local arriba mencionados.

Creando discos virtuales basados en archivos


Los archivos de imagen para discos duros es el medio de almacenamiento ms flexible ya
que permite respaldar de forma fcil las maquinas virtuales, adems que permite mover los
discos de las maquinas virtuales a otros sistemas como si fueran archivos ordinarios.
Se recomienda que dedique una particion para almacenar los archivos de imagen, para este
documento dedicamos una particin con las siguientes caracteristicas:

Particin Linux nativa /dev/sda6 de 60G.

Sistema de archivos ext3 montada con opcin noatime.

El punto de montaje es /xen/storage/0.

Si decide usar el manejador file para imagenes de archivos usando el driver loopback se
encontrar con que, por default, la mayora de distribuciones Linux solo permiten la
creacin de 8 dispositivos loop lo cual lo limitar al nmero de discos virtuales que podr
asignar a las maquinas virtuales.
Si usa un kernel en donde el driver loopback se compilo como mdulo
(CONFIG_BLK_DEV_LOOP=m) y desea permitir la creacin de ms de 8 dispositivos
loop agregue la opcin max_loop al mdulo loop, usando los archivos en el directorio
/etc/modprobe.d/ , por ejemplo:
# echo "options loop max_loop=64" > /etc/modprobe.d/loop

Si el soprte del driver loopback se compilo como built-in (CONFIG_BLK_DEV_LOOP=y)


y desea permitir la creacin de ms de 8 dispositivos loop agregue el parmetro max_loop a
la lnea del que carga el kernel XenLinux en el archivo de configuracin de grub
/boot/grub/menu.lst, por ejemplo:
module
max_loop=64

/vmlinuz-2.6.18.8-xen root=/dev/sda3 ro console=tty0

Para crear un archivo de imagen de tipo full use el comando dd, por ejemplo, para crear
archivo de imagen de 4GB:
# dd if=/dev/zero of=/xen/storage/0/images/domuX-root.img bs=1024k
count=4096

El archivo resultante no tendr ningn contenido pero si est ocupando el espacio fsico,
este es la forma recomendada ya que da mejor rendimiento que el tipo sparse.
Los archivos de imagen loop de tipo sparse inicialmente no ocupan espacio, pero si lo
reflejan a un simple ls, estos archivos se van redimiensionando conforme se escribe en
ellos, si tiene problemas de espacio y quiere aprovechar al mximo el espacio en disco use
el tipo sparse pero recuerde que estar sacrificando rendimiento ya que este tipo causa una
carga extra en el Dom0, para crear un archivo de imagen de tipo sparse con dd use:
# dd if=/dev/zero of=/xen/storage/0/images/domuX-root.img bs=1024k
seek=4096 count=0

Es posible crear un sistema de archivos ext3 sobre un archivo de imagen de bloque, por
ejemplo:
# mkfs.ext3 /xen/storage/0/images/domuX-root.img

Tambin puede crear un sistema de archivo swap en un archivo de imagen, por ejemplo:
# mkswap /xen/storage/0/images/domuX-swap.img

Para mayor informacin de como agregar un disco duro a una maquina virtual vaya a la
seccin Como agregar discos duros virtuales a maquinas virtuales Xen.
Una de las desventajas de usar discos duros virtuales basados en imgenes es que agregan
una carga extra al sistema host, ya que el archivo de imagen esta almacenado en un sistema
de archivos del Domain0 lo cual implica que el OS del Dom0 debe realizar operaciones
para actualizar la meta informacin de los archivos y datos, si desea mejor rendimiento se

recomienda que use particiones nativas o volmenes lgicos LVM con el modo de acceso
raw, as se evita la carga extra.
Para ver como asignar/export un archivo de imagen a una maquina virtual vaya a la seccin
Archivos de configuracin Xen para maquinas virtuales DomU para ver el formato del
parmetro de configuracin de dispositivos de bloque a los DomU.
En las siguientes secciones veremos como crear particiones nativas usando el comando
fdisk, cfdisk o parted.

Creando archivos de imagen ISO para medios de instalacin


Si desea crear un archivo de imagen ISO de un medio de instalacin para facilitar la
creacin de maquinas virtuales puede hacer uso del comando dd, por ejemplo, el
dispositivo para el CD/DVD es: /dev/scd0, crearemos el archivo de imagen
/xen/storage/isos/:
# dd if=/dev/scd0 of=/xen/storage/isos/ubuntu-10.04-server-amd64.iso

Para verificar que efectivamente es un archivo ISO use el comando file, por ejemplo:
# file /xen/storage/isos/ubuntu-10.04-server-amd64.iso
/xen/storage/isos/ubuntu-10.04-server-amd64.iso: # ISO 9660 CD-ROM
filesystem data 'Ubuntu-Server 8.04.4 amd64
' (bootable)

Para montar la imagen ISO y acceder a su contenido, asocie el archivo a un dispositivo


loopback usando el comando losetup, por ejemplo:
# losetup -f /xen/storage/isos/ubuntu-10.04-server-amd64.iso

Nota
La opcin -f busca un dispositivo loop libre y lo asocia al archivo de imagen.
Nota
Si desea mapear el archivo de imagen ISO a un dispositivo loop en especifico use
-r /dev/loopX.
Para ver el nombre del dispositivo loop al que fu mapeado el archivo use:
# losetup -a
/dev/loop0: [0805]:269281 (/xen/storage/isos/ubuntu-10.04-serveramd64.iso)

Nota
Este es el mismo modo en el que Xen monta los discos duros virtuales basados en
archivos de imagen usando el manejador file.
Ahora puede montar el archivo iso como si fuera un dispositivo de bloque normal:
# mount /dev/loop0 /media/cdrom

Para desmontar el dispositivo use:


# umount /dev/loop0

Tambin debe eliminar el mapeo del archivo al dispositivo loop:

# losetup -d /dev/loop0

No olvide desmontar el ISO cuando ya no lo necesite para liberar recursos.


Para ver como asignar/export un archivo de imagen ISO a una maquina virtual vaya a la
seccin Archivos de configuracin Xen para maquinas virtuales DomU para ver el formato
del parmetro de configuracin de dispositivos de bloque a los DomU.

Creando discos virtuales basados en particiones Linux nativas


Para asignar particiones linux nativas a como discos duros a las maquinas virtuales cree las
particiones con la herramienta fdisk, por ejemplo:
# fdisk /dev/sdb

Crear particin linux native de tipo 83, y particin linux swap tipo 82.
Tambin puede usar el comando cfdisk el cual es ms grfico, por ejemplo:
# cfdisk /dev/sdb

Otra alternativa es usar el programa parted, por ejemplo:


# parted /dev/sdb

Nota
Si modifico la tabla de particiones en el mismo disco duro en el que esta la particin
raz tendr que re iniciar el sistema o ejecutar el comando partprobe para que el kernel
re lea la tabla de particiones y as cree los archivos de dispositivo de bloque en el
directorio /dev, por ejemplo:
# partprobe /dev/sda

Verifique que los archivos de dispositivo esten en el directorio /dev.


Para crear un sistema de archivos ext3 en una nueva particin use el comando mkfs.ext3,
por ejemplo:
# mkfs.ext3 /dev/sdb1

Importante
Si va dedicar una particin linux nativa al directorio /boot de un DomU PV Linux se
recomienda que use un sistema de archivos ext2 para evitar problemas con versiones no
soportadas de boot loaders como grub, pygrub y pv-grub.
Para crear un sistema de archivos swap use mkswap:
# mkswap /dev/sdb2

Para ver como asignar/export una particin linux nativa a una maquina virtual vaya a la
seccin Archivos de configuracin Xen para maquinas virtuales DomU para ver el formato
del parmetro de configuracin de dispositivos de bloque a los DomU.

Creando discos virtuales basados en volmenes lgicos Linux LVM


Antes que nada asegurese de tener instaladas las herramientas para manipular los
volmenes lgicos LVM, instale el paquete lvm2:

# apt-get install lvm2

Es importante que actualice la imagen initrd con el soporte LVM, por ejemplo para
actualizar la imagen initrd para el kernel 2.6.18.8-xen ejecute:
# update-initramfs -u -k 2.6.18.8-xen

Primero debe crear una particin en el disco duro para ser incluido en un volume group, use
cfdisk para crear una particin tipo LVM (8e), por ejemplo:
# cfdisk /dev/sdc

Nota
Haga lo mismo en cada disco que desee incluir.
Use el comando pvcreate para inicializar la particin recien creada, es decir, crearemos un
volmen fsico (Physical Volume) LVM:
# pvcreate /dev/sdc1

Importante
Nos se recomienda crear un physical volume en un disco duro completo, ejem: /dev/sda
por los problemas de administracin que conlleva.
Ahora use el comando vgcreate para crear un Volume Group conformado por los dos
Physical Volumes recin inicializados:
# vgcreate VGXen01 /dev/sdc1

Use el comando vgdisplay para mostrar ms detalles sobre el Volume Group VGXen01,
por ejemplo:
# vgdisplay VGXen01

Con el comando lvcreate creamos los volmenes lgicos dentro de un Volume Group, por
ejemplo, para crear un volmen lgico de 4GB para la particin raz del DomU
fs1.example.com use:
# lvcreate --size 4G --name fs1.example.com-root VGXen01
Logical volume "fs1.example.com-root" created

Tambin puede crear volmenes lgicos para la particin swap:


# lvcreate --size 1G --name fs1.example.com-swap VGCen01
Logical volume "fs1.example.com-root" created

Cree volmenes lgicos para las particiones de datos del DomU fs1:
# lvcreate --size 100G --name fs1.example.com-home VGXen01
Logical volume "fs1.example.com-home" created

Para crear un sistema de archivos ext3 en un volmen lgico use:


# mkfs.ext3 /dev/VGXen01/fs1.example.com-root

Parar crear un sistema de archivos swap en un volmen lgico use:


# mkswap /dev/VGXen01/newdomu-swap

Puede clonar un volmen lgivo LV usando el comando dd, por ejemplo:


# dd if=/dev/VGXen01/xenbase-disk of=/dev/VGXen01/newdomu-disk

Es posible extender el tamao de un LV siempre y cuando el Volume Group que lo aloja


tenga espacio disponible, use el comando vgdisplay para verificar que tenga espacio y
despus:
# lvextend --size +10G /dev/VGXen01/fs1.example.com-home

Importante
El sistema de archivos en /dev/VGXen01/fs1.example.com-home debe estasr
desmontado para poder realizar la operacin de forma segura, en especial cuando
pertenece a una maquina virtual encendida.
Despus de extender el volmen lgico con lvextend use resize2fs para extender un sistema
de archivos ext3, por ejemplo:
# e2fsck -f /dev/VGXen01/fs1.example.com-home
# resize2fs /dev/VGXen01/fs1.example.com-home

Importante
Recuerde siempre revisar la consistencia del sistema de archivos con e2fsck antes de
redimiensionar el sistema de archivos.
Para eliminar un volmen lgico use el comando lvremove, por ejemplo:
# lvremove /dev/VGXen01/fs1.example.com-home

Para ms informacin para la administracin de volmenes lgicos LVM se recomienda


que lea el LVM HOWTO official.
Para ver como asignar/export una volmen lgico LVM a una maquina virtual vaya a la
seccin Archivos de configuracin Xen para maquinas virtuales DomU para ver el formato
del parmetro de configuracin de dispositivos de bloque a los DomU.

Configuracin de los dispositivos de red fsicos y


virtuales en Xen
En esta seccin veremos como configurar diferentes redes publicar y privadas para las
maquinas virtuales, las configuraciones son basadas en switches virtuales o bridges, se
usarn tanto herramientas de sistema como propias de xen para configurar el entorno de red
virtual.

Introduccin a los modos de red en Xen


Xen puede ser configurado para permitir que las maquinas virtuales puedan usar la
infraestructura de red existente y los segmentos de red. Xen permite configurar la red tanto
del Domain-0 como de las domUs, desde configuraciones bsicas hasta otras ms
avanzadas usando bridges, STP, NAT, VLANs. En general, se puede configurar casi
cualquier escenario que se pueda configurar en una red con Hosts no virtualizados.
La primer vez que se arranca el sistema con el kernel de Xen y sin tener definido un modo
de configuracin de red en Xen, se tiene un esquema similar al que se muestra en la
siguiente figura:

Figura 3.1. Servidor Linux sin Xen

Bsicamente existen dos tipos de configuracin de red en xen, configuracin basada en


bridge (bridged) y configuracin enrutada (routed).
En este documento se describir la configuracin de red en Xen en modo bridge.
La configuracin de red en modo bridge es la ms simple y fcil de configurar dentro de
Xen. Este tipo de red permite de forma simple y transparente a los DomU usar una interfaz
de red virtual conectada a un switch virtual (bridge) creado y configurado en Dom0, la
interfaz de red fsica eth0 en Dom0 esta conectada fsicamente al switch de la empresa y
esta misma a su vez esta conectada al switch virtual, por lo que toda la comunicacin es
transparente para todos los hosts ya que todos estn conectados virtualmente a un mismo
switch. Con una configuracin en modo bridge nos permitir:

Las maquinas virtuales podrn utilizar direcciones IP estticas tal y como lo hacen
las dems maquinas conectadas a tu red fsica, o incluso utilizar un servicio DHCP.

Quieres que las maquinas virtuales sean vistas de forma transparente desde las
maquinas en la red fsica, es decir, que haya flujo entre las dos redes de forma
transparente.

Incluso puede utilizar tecnologas como VLAN para crear redes locales virtuales y
completamente aisladas unas de otras.

Su equipo Host puede tener varias interfaces de red fsicas y quiere asignar o
delegar una interfaz o ms interfaces exclusivamente para un host, de esta forma
puede tener DomU conectados a diferentes redes fsicas, o incluso puede

beneficiarse de las funcionalidades de VLAN y Bonding o Link Aggregation (Ether


Channel).
En las siguientes secciones veremos como crear el o los bridges usando los scripts de xen y
usando las herramientas de su distribucin.

Configurando Xen en modo bridge


En esta seccin veremos como configurar el servidor Xen para un entorno de red basado en
bridges, estos bridges realizarn la funcion de switches virtuales para las maquinas virtuales
e interfaces fisicas.
La configuracin de los bridges la realiza xend a travs del archivo de configuracin
/etc/xen/xend-config.sxp, en este archivo deben de haber dos lineas donde se define el
script para la creacin de bridges (network-script) y otra para la creacin de las
interfaces virtuales para los domUs (vif-script).
Importante
Asegurese que solo haya una linea descomentada de network-bridge y una de vifscript.
Para configurar en entorno de red en el servidor Xen en modo bridge edite el archivo
/etc/xen/xend-config.sxp y agregue las siguientes dos lneas:
(network-script network-bridge)
(vif-script vif-bridge)

Reinicie el sistema para que arranque con la configuracin de red en bridge, esto es
necesario para que se reconfigure la red del servidor Xen.
# shutdown -r now

Las configuraciones en modo bridge depender del numero de redes fsicas a conectar y de
el nmero de interfaces fsicas en el Dom0, La configuracin de Xen 3.2 en Ubuntu Hardy
esta preconfigurada para sistemas con una sola interfaz fsica, y todas las los DomU
utilizarn esta interfaz para el flujo de datos entre las diferentes redes, tanto de entrada
como de salida,
Cuando Ubuntu inicia con xen en modo bridge se ejecuta el script
/etc/xen/scripts/network-bridge realiza las siguientes tareas:

Crea un nuevo bridge llamado xenbr0 (xen 3.0) eth0 (xen 3.2)

La interfaz Ethernet real eth0 es desactivada

La direccin IP y MAC de eth0 es copiada a la interfaz de red virtual veth0

La interfaz real eth0 es renombrada a peth0

La interfaz virtual veth0 es renombrada a eth0

peth0 y vif0.0 son agregadas al bridge xenbr0/eth0

El bridge, peth0, eth0 y vif0.0 son activados

Despus del procedimiento arriba descrito y una vez que el brid y las interfaces de red
fueron configuradas, la red del servidor Xen se en modo bridge se debera de ver con en el
siguiente figura:

Figura 3.2. Servidor Linux con Xen y un bridge

Como vemos, la interfaz fsica peth0 esta conectada al switch de la red LAN y a su vez al
bridge eth0, imagine peth0 como el puerto uplink entre switches L2, la interfaz eth0 del
servidor Xen Dom0 es una interfaz virtual que tambin esta conectada al bridge de nombre
eth0.
Nota
La interfaz fsica que origialmente era eth0, que posteriormene se convirtio a peth0
tambin podra ser una interfaz fsica Ethernet con soporte VLAN trunk 802.1q, o un
Ethernet Channel Bonding.
Importante
En el ejemplo de arriba estamos hablando de dos switches conectados por un cable,
tenga mucho cuidado de no conectar una segunda interfaz de red fisica, digamos eth1 y
crear otro bridge sobre ella, esto y otros casos podran causar lo que se llama un bridge
loop, para ms informacin al respecto leer la pgina del wiki
http://wiki.xensource.com/xenwiki/XenBridgeLoop.
La interfaz de red eth0 del servidor Xen Dom0 se configura dentro del mismo Dom0 en el
archivo de configuracin /etc/network/interfaces, por ejemplo:
# Interfaz Local para red LAN
auto eth0
iface eth0 inet static
address 192.168.221.10
netmask 255.255.255.0
gateway 192.168.221.254

Podemos ver informacin de la red as:

# ifconfig
eth0
Link encap:Ethernet HWaddr 00:1d:7d:d4:09:74
inet addr:192.168.221.10 Bcast:192.168.1.255
Mask:255.255.255.0
inet6 addr: fe80::21d:7dff:fed4:974/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1435 errors:0 dropped:0 overruns:0 frame:0
TX packets:940 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1695569 (1.6 MB) TX bytes:87112 (85.0 KB)
lo

Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

peth0

Link encap:Ethernet HWaddr 00:1d:7d:d4:09:74


inet6 addr: fe80::21d:7dff:fed4:974/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1443 errors:0 dropped:0 overruns:0 frame:0
TX packets:978 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1716695 (1.6 MB) TX bytes:95921 (93.6 KB)
Interrupt:22 Base address:0x8000

Podemos ver el bridge y sus puertos con el siguiente comando:


# brctl show
bridge name
eth0

bridge id
8000.001d7dd40974

STP enabled
no

interfaces
peth0

Cuando creamos maquinas virtuales con xen-create-image solo le asignamos la


configuracin para la interfaz de red eth0 (predeterminada) en DomU, esto crear un nuevo
puerto en el bridge, una interfaz vif1.0 la cual estar conectada a la interfaz virtual eth0 en
el DomU, como se muestra en la siguiente imagen.
Figura 3.3. Servidor Linux con Xen, un bridge y un DomU

Si crea ms DomU se crearn ms interfaces vifX, por ejemplo el DomU 2 tendr asignada
una interfaz virtual eth0 la cual estar conectada al bridge mediante el puerto vif2.0, todas
las maquinas DomU por default saldrn por la interfaz fsica peth0 para comunicarse con la
dems red.

Configurando mltiples switches virtuales con Xen y bridges Linux


Habr ocaciones en donde usted no quiere que todas sus maquinas salgan por una misma
interfaz de red, ya se por cuestiones de rendimiento o de seguridad, en todo caso, usted
puede agregar una interfaz de red fsica a su sistema y puede crear otro bridge a la que se
conectar la maquina virtual, por ejemplo quiere tener una mquina virtual como
firewall/router y quiere tener una interfaz conectada directamente el mdem de internet o
router y que adems este conectado al primer bridge para que todas las dems maquinas en
la red puedan usar este equipo como gateway para salir a Internet, en la seccin se ver.
Figura 3.4. Servidor Linux con Xen, dos bridges, y dos Domu

La configuracin actual no nos sirve del todo ya que solo se crea un bridge al que se le
conecta una sola interfaz fsica, en nuestro caso vamos a agregar una interfaz fsica al
sistema, la cual queremos que sea usada exclusivamente por el firewall/gateway, para esta
nueva configuracin tendremos que crear un script wrapper para
/etc/xen/scripts/network-bridge el cual lo ejecutar dos veces para crear dos bridges.
En Xen 3.2 cree el script /etc/xen/scripts/multi-network-bridge con el siguiente
contenido:
#!/bin/sh
/etc/xen/scripts/network-bridge $1 netdev=eth0
/etc/xen/scripts/network-bridge $1 netdev=eth1

En Xen 3.4 cree el script /etc/xen/scripts/multi-network-bridge con el siguiente


contenido:
#!/bin/sh
/etc/xen/scripts/network-bridge "$@" netdev=eth0 bridge=eth0
/etc/xen/scripts/network-bridge "$@" netdev=eth1 bridge=eth1

Guarde el archivo y asigne permisos de ejecucin.


# chmod +x /etc/xen/scripts/multi-network-bridge

Configure la interfaz de red eth1 en modo manual en el archivo interfaces(5), por ejemplo:
# Interfaz fisica para bridge eth1
auto eth1
iface eth1 inet manual

Ahora tiene que cambiar la ruta del script para crear bridges en el archivo de configuracin
/etc/xen/xend-config.sxp, cambiar de:
(network-script network-bridge)

Por:
(network-script multi-network-bridge)

Como ltimo paso reiniciamos el sistema para que los cambios tomen efecto.
Al iniciar Xend se ejecutar el script /etc/xen/scripts/multi-network-script y crear
dos bridges, uno para eth0 y otro para eth1, como se muestra a continuacin:
# ifconfig peth1
peth1 Link encap:Ethernet HWaddr 00:15:17:38:3e:28
UP BROADCAST PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Base address:0xece0 Memory:fe9e0000-fea00000

Tambin podemos ver la informacin de los bridges:


# brctl show
bridge name bridge id STP enabled interfaces
eth0 8000.00188bfd7b7c no peth0
eth1 8000.001517383e28 no peth1

En la salida del comando anterior se nota lo siguiente:

eth0 de DomU2 estar conectada al bridge eth0

eth1 de Domu2 estar conectada al bridge eth1 que estar conectada directamente al
mdem de internet

Modificaremos el archivo de configuracin /etc/xen/firewall.cfg y cambiaremos la


linea vif para indicarle los bridges Por default est as:
vif = [ 'mac=00:16:3E:EF:91:2F' ]

Ese MAC address se genero automticamente y por default quedamos que utiliza el primer
bridge eth0, para agregarle otra interfaz a este DomU debemos de cambiar la linea a
vif = [
'mac=00:16:3E:EF:91:2F, bridge=eth0',
'mac=00:16:3e:07:31:85, bridge=eth1'
]

Se recomienda utilizar el rango de direcciones MAC reservadas para Xen, el rango es


00:16:3e:xx:xx:xx, puede utilizar un script para generar MAC de forma aleatoria:
/usr/local/bin/macgen.py.

Como crear un bridge dummy para una red privada sin conexin
fsica
Los dispositivos de red virtual dummy tienen todas las funcionalidades que una interfaz de
red fsica, son usados para crear redes privadas que no tengan acceso a una red fsica.

Para crear una interfaz de red dummy, debe definir el nombre de la interfaz asociada al
mdulo y el nmero mximo de interfaces dummy que el kernel soporta. Edite las opciones
para el mdulo dummy, por ejemplo:
# vim /etc/modprobe.d/dummy

Con el siguiente contenido:


alias dummy0 dummy
options dummy numdummies=1

Nota
Si va a crear ms de un dispositivo dummy recuerde incrementar el nmero en la
opcin numdummies.
Tambin debe habilitar la interfaz en interfaces(5), por ejemplo:
# Interfaz fisica para bridge dummy0
auto dummy0
iface dummy0 inet manual

Si quiere agregar un bridge a esta interfaz agregue:


/etc/xen/scripts/network-bridge $1 netdev=dummy0

Al archivo /etc/xen/scripts/multi-network-bridge y reincie el sistema.


Veamos como se vera un bridge privado y un switch fsico:
Figura 3.5. Servidor Linux con Xen, dos bridges, uno dummy, y tres Domu

En las siguientes secciones veremos como crear los bridges usando las herramientas del
sistema operativo.

Creando los bridge Linux usando las herramientas del sistema


operativo
Es posible prescindir del script /etc/xen/scripts/network-bridge para la creacin del
o los bridge y utilizar las herramientas de configuracin de red propias de la distribucin,
por ejemplo, en Debian/Ubuntu es posible crear un bridge usando el archivo de
configuracin /etc/network/interfaces, por ejemplo, para crear un bridge para la
interfaz fsica eth0 use:
# vim /etc/network/interfaces

Cambie la configuracin para la interfaz eth0 as:


# The loopback network interface
auto lo
iface lo inet loopback
# WAN Bridge
auto xenbr0
iface xenbr0 inet static
address 192.168.1.20
network 192.168.1.0

broadcast 192.168.1.255
netmask 255.255.255.0
gateway 192.168.1.1
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_maxwait 0
bridge_ports eth0
bridge_stp off

Importante
Cuando cree bridges desde el archivo interfaces(5) asegurese de que no haya
ninguna interfaz (iface) configurada para las interfaces conectadas al bridge
(bridge_ports), por ejemplo, eth0 en el bridge de arriba.
Ya que ahora la configuracin de el bridge fue delegada a las herramientas del OS,
debemos comentar la lnea del parmetro network-script en el archivo de configuracin
/etc/xen/xend-config.sxp para evitar que cuando el demonio xend sea iniciado cree el
bridge y cause problemas.
# La configuracion del bridge se delego al OS
#(network-script network-bridge)

La creacin de las interfaces virtuales vifX.X (o puertos virtuales) para las VMs seguir
siendo controlada por el script /etc/xen/scripts/vif-bridge, por lo que el parmetro
vif-script del archivo xend-config.sxp debe seguir activa.
Adems, si cambio el nombre del bridge debe asegurarse de cambiar el nombre del bridge
en los archivos de configuracin de sus maquinas virtuales, por ejemplo:
vif = [ 'mac=00:16:3E:EF:91:2F, bridge=xenbr0']

Despus de reiniciar el sistema, y sin ninguna maquina virtual, el bridge quedara as:
Figura 3.6. Servidor Linux con Xen, un bridge y un DomU va OS

Veamos un ejemplo de la configuracin con dos bridges fsicos:


# The loopback network interface
auto lo
iface lo inet loopback
# WAN Bridge
auto xenbr0
iface xenbr0 inet static
address 192.168.1.20
network 192.168.1.0
broadcast 192.168.1.255
netmask 255.255.255.0
gateway 192.168.1.1
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_maxwait 0
bridge_ports eth0
bridge_stp off
# LAN Bridge
auto xenbr1
iface xenbr1 inet manual
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_maxwait 0
bridge_ports eth1
bridge_stp off

Despus de crear los switches y las VM el esquema se vera as:


Figura 3.7. Servidor Linux con Xen, dos bridges, y dos Domu va OS

Veamos un ejemplo para una mezcla entre bridges con interfaces fsicas y bridges con
interfaces dummy:
# The loopback network interface
auto lo
iface lo inet loopback
# WAN Bridge
auto xenbr0
iface xenbr0 inet static
address 192.168.1.20
network 192.168.1.0
broadcast 192.168.1.255
netmask 255.255.255.0
gateway 192.168.1.1
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_maxwait 0
bridge_ports eth0
bridge_stp off
# LAN Bridge
auto xenbr1
iface xenbr1 inet manual
bridge_fd 9
bridge_hello 2
bridge_maxage 12

bridge_maxwait 0
bridge_ports eth1
bridge_stp off
# DMZ Bridge
auto xenbr2
iface xenbr2 inet manual
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_maxwait 0
bridge_ports dummy0
bridge_stp off

Nota
Puede configurar una interfaz bridge en diferentes modos, por ejemplo: con direccin
IP esttica (static), DHCP (dhcp) o sin direccin IP (manual).
Nota
Si desea crear un bridge sin ninguna interfaz conectada, use la opcin none, por
ejemplo: bridge ports none.
El diagrama de la red descrita arriba se vera as:
Figura 3.8. Servidor Linux con Xen, tres bridges, y cuatro Domu va OS

Una ventaja de realizar la configuracin del bridge de esta forma es que puede usar los
procedimientos probados y soportados por su distribucin.

Como generar direcciones MAC nicas para Xen

Se recomienda que asigne direcciones MAC nicas a las maquinas virtuales, para
asegurarse de que las direcciones MAC elegidas no causen conflictos con las tarjetas de red
de algn fabricante o algn host interno, puede usar direcciones basadas en el espacio de
direcciones asignadas por la IANA: 00:16:3e:xx:xx:xx, crearemos un script en python para
semi automatizar la creacin de nuevas direcciones MAC para asignar a las maquinas.
Cree el script /usr/local/sbin/macgen.py:
# vim /usr/local/sbin/macgen.py

Con el contenido:
#! /usr/bin/python
#
# macgen.py script to generate a MAC address for Red Hat Virtualization
guests
#
import random
mac = [ 0x00, 0x16, 0x3e,
random.randint(0x00, 0x7f),
random.randint(0x00, 0xff),
random.randint(0x00, 0xff) ]
print ':'.join(map(lambda x: "%02x" % x, mac))

Nota
Aparentemente este script fue obtenido de algn documento de redhat,
Asigne privilegios de ejecucin:
# chmod +x /usr/local/sbin/macgen.py

Pruebe generando una direccin:


# macgen.py
00:16:3e:44:fb:ad

Recuerde que puede ejecutar el comando macgen.py desde el editor vim, recuerdelo
cuando este editando archivos de configuracin de las mquinas virtuales y defina un MAC
Address nico para la mquina en cuestion.

Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se
aconseja que acceda a los siguientes recursos adicionales.

Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas
utilizados en este capitulo.

http://www.xen.org - Sitio oficial Xen

http://wiki.xensource.com/xenwiki/XenArchitecture?
action=AttachFile&do=get&target=Xen+Architecture_Q1+2008.pdf - Xen
Architecture Overview (February 2008)

http://wiki.xensource.com/xenwiki/LiveCD - Xen Live CD v2.0

http://wiki.xensource.com/xenwiki/XenKernelFeatures - Xen Kernel Features

http://wiki.xensource.com/xenwiki/XenPCIpassthrough - Xen PCI pasthrough

http://tx.downloads.xensource.com/downloads/docs/user/ - Xen 3.0 Users' Manual

http://wiki.xensource.com - Xen.org Community Wiki

http://wiki.xensource.com/xenwiki/XenNetworking - Xen Wiki - Xen Networking

http://wiki.xensource.com/xenwiki/XenBridgeLoop - Zen Wiki - Xen Bridge Loop

http://wiki.xensource.com/xenwiki/XenCommonProblems - Xen Wiki - Xen


Common Problems

http://wiki.xensource.com/xenwiki/XenUsersQuestions - Xen Users Mailing List


Commonly Asked Questions

http://wiki.xensource.com/xenwiki/XenDom0Kernels - Xen dom0 kernels

http://bderzhavets.wordpress.com - Xen Virtualization on Linux and Solaris

http://virtualusr.wordpress.com - Virtualusr's Blog

http://www.gitco.de/repo/ - Repositorio gitco: XEN-RPMS para CentOS-5/RHEL-5


(x86_64)

http://wiki.xensource.com/xenwiki/XenParavirtOps - Xen paravirt_ops for upstream


Linux kernel

http://fedoraproject.org/wiki/Features/XenPvopsDom0 - Features/XenPvopsDom0

http://blog.xen.org/index.php/2008/08/28/xen-33-feature-stub-domains - Xen 3.3


Feature: Stub Domains

http://www.xen.org/files/xensummitboston08/SamThibault_XenSummit.pdf Improving HVM Domain Isolation and Performance

http://wiki.xensource.com/xenwiki/StubDom - Xen Stub Domains

http://lxr.xensource.com/lxr/source/stubdom/README - Stub domains README

http://blog.xen.org - Xen Community Blog

Pginas de manual
Para conocer ms sobre el uso y configuracin de los programas utilizados en el capitulo, se
recomienda leer los manuales relacionados y el contenido de los archivos de configuracin.

uname (1) - print system information.

apt-get (8) - APT package handling utility - command-line interface.

depmod - program to generate modules.dep and map files.

yum (8) - .

update-rc.d (8) - install and remove System-V style init script links.

chkconfig (8) - .

mkinitramfs - generate an initramfs image.

update-initramfs (8) - generate an initramfs image

update-initramfs.conf (5) - configuration file for update-initramfs

xm (1) - Xen management user interface.

blkid (8) - command-line utility to locate/print block device attributes.

dd (1) - convert and copy a file.

losetup (8) - set up and control loop devices

fdisk (8) - Partition table manipulator for Linux.

cfdisk (8) - Curses/slang based disk partition table manipulator for Linux.

sfdisk (8) - Partition table manipulator for Linux.

parted (8) - (unknown subject).

partprobe (8) - inform the OS of partition table changes.

pvcreate (8) - initialize a disk or partition for use by LVM.

pvdisplay (8) - display attributes of a physical volume.

pvscan (8) - scan all disks for physical volumes.

vgcreate (8) - create a volume group.

vgdisplay (8) - display attributes of volume groups.

vgscan (8) - scan all disks for volume groups and rebuild caches.

lvcreate (8) - create a logical volume in an existing volume group.

lvdisplay (8) - display attributes of a logical volume.

lvscan (8) - scan (all disks) for logical volumes.

lvextend (8) - extend the size of a logical volume.

mke2fs (8) - create an ext2/ext3 filesystem.

mkfs.ext3 (8) - create an ext2/ext3 filesystem.

e2fsck (8) - check a Linux ext2/ext3 file system

e2fsck.conf (5) - Configuration file for e2fsck

resize2fs (8) - ext2/ext3 file system resizer.

mkswap (8) - set up a Linux swap area.

ifconfig (8) - configure a network interface.

interfaces (5) - network interface configuration for ifup and ifdown.

ifup (8) - bring a network interface up.

ifdown (8) - take a network interface down.

brctl (8) - ethernet bridge administration.

/proc/cpuinfo.

/boot/grub/menu.lst.

/etc/modprobe.d/loop.

/etc/xen/xend-config.sxp.

/etc/init.d/xend.

/etc/init.d/xendomains.

/etc/xen/scripts/network-bridge.

/etc/xen/scripts/vif-bridge.

/etc/network/interfaces.

/etc/syscofig/network.

/etc/sysconfig/network-scripts/ifcfg-XXX.

Captulo 4. Creacin de maquinas virtuales en Xen


Tabla de contenidos
Requisitos para las Maquinas Virtuales Xen
CPU y memoria para las maquinas virtuales Xen
Medios de Almacenamiento para las maquinas virtuales Xen
Dispositivos de red virtuales Xen
Requisitos de software para las maquinas virtuales
Medios de instalacin para las maquinas virtuales
Parmetros de configuracin para maquinas virtuales Xen
Creando maquinas virtuales Xen PV Linux
Creando maquinas virtuales Xen PV Linux con Debian o Ubuntu
Creando maquinas virtuales Xen PV Debian con con debootstrap
Creando maquinas virtuales Xen PV Ubuntu con xen-tools
Instalando xen-tools
Definiendo los parmetros de configuracin globales para xen-tools
Creando maquinas PV Debian o Ubuntu
Definiendo esquemas de particiones de xen-tools
Modificando las plantillas de configuracin para xen-tools
Creando maquinas virtuales PV Linux CentOS
Creando maquinas virtuales PV CentOS usando imagenes de stacklet
Creando maquinas virtuales PV CentOS con xen-tools y rinse
Creando maquinas virtuales Xen HVM Windows
Recursos adicionales
Sitios web
Pginas de manual
En este capitulo veremos las diferentes tareas necesarias para la creacin de maquinas
virtuales en Xen, veremos los requerimientos bases de las maquinas virtuales, el formato de
los archivos de configuracin y la creacin de maquinas virtuales PV y HVM Linux, as
como maquinas virtuales HVM Windows.

Requisitos para las Maquinas Virtuales Xen


Antes de iniciar con la creacin de las maquinas virtuales es necesario conocer cuales son
los requisitos de sistema para llevar a cabo dicha tarea, es esencial saber como asignar los
recursos de hardware (virtual) a las maquinas virtuales para as planear la instalacin en
produccin. Adems, veremos que requisitos de software se requiere en el sistema
operativo guest para poder ejecutar de forma eficiente el sistema operativo, veremos como
crear maquinas virtuales manualmente, y automatizadas usando diferentes herramientas del
sistema y adicionales.

CPU y memoria para las maquinas virtuales Xen

Las maquinas virtuales as como cualquier maquina fsica requieren de ciertos componentes
de hardware base como CPU, memoria, disco duro, tarjetas de red, cada maquina virtual
PV o HVM require de estos mismos componentes de hardware en forma virtual.
En sistemas con un solo CPU o ncleo solo ser posible asignar un CPU virtual (VCPU) a
cada maquina virtual, en sistemas con soporte SMP (Symmetric Multi-Processing), es decir,
sistemas con ms de un CPU fsico o mltiples ncleos es posible asignar ms de un CPU a
las maquinas virtuales, claro, siempre y cuando el sistema operativo guest soporte SMP.
En CPUs tipo x86 AMD o Intel solo ser posible crear maquinas virtuales con sistemas
operativos guest de 32-bit, en CPUs AMD64 o x86_64 ser posible crear maquinas
virtuales con sistemas operativos guest de 32-bit y 64-bit (requiere hypervisor de 64-bit).
Para definir los CPU virtuales que sern asignados a las maquinas virtuales use los
parmetros cpu, cpus y vcpu.
En cuanto a la memoria RAM, es importante notar que la memoria total del sistema por
default ser asgnada al Domain-0, y cada vez que se cree una nueva maquina virtual
domU, el Domain-0 reduce su memoria para que sea asignada a la domU. Recuerde asignar
la memoria reservada para el Domain-0 y aquella para las domU.

Medios de Almacenamiento para las maquinas virtuales Xen


Las maquinas soportan diferentes medios de almacenamiento o discos duros virtuales, entre
los principales encontramos:
Archivos de imagen loop
Es posible almacenar tanto el sistema operativo de una DomU en archivos de
imagen loopback creado con la herramienta dd, este tipo de imagenes pueden ser de
tipo full y sparse.
Particiones Nativas
Usando el tipo disco phy es posible exportar una particin Linux nativa a una
maquina virtual, el principal beneficio sobre el tipo archivos de imagen es que no se
tiene la carga extra (overhead) al estar la imagen arriba de un sistema de archivos
montado con cache, journaling y otras funcionalidades que pudieran degradar el
rendimiento de la VM, el sistema de archivos de la DomU deber de proveer el
journaling.
Volmenes Lgicos LVM (recomendado)
Usando el tipo de disco phy es posible exportar un volumen lgico LVM a una
maquina virtual, LVM ofrece grandes beneficios sobre los otros medios de
almacenamiento, ya que LVM permite agrupar mltiples discos duros para crear
grandes volmenes de datos, particiones y sistemas de archivos de una forma ms
dinmica, entre sus principales beneficios contra almacenamiento en imagen y
particiones es que LVM permite el redimencionamiento al vuelo (on line) del
tamao del volumen lgico, adems es posible crear snapshots de las maquinas
virtuales para una fcil restauracin y respaldo de sistemas operativos.
NFS
TODO

Para ms informacin de como crear archivos de imagen, particiones nativas y volmenes


lgicos LVM vaya a la seccin Configuracin de medios de almacenamiento local para las
VMs en Xen.

Dispositivos de red virtuales Xen


Para ms informacin acerca de la creacin de dispositivos de red virtuales en Xen ver la
seccin.

Requisitos de software para las maquinas virtuales


Para las maquinas virtuales PV, el requerimiento principal de software para las maquinas
virtuales DomU es el kernel, tambin el sistema operativo guest de la maquina virtual
requiere de un kernel modificado con soporte de Xen, en especial debe incluir los drivers
Frontend de Xen.
Bsicamente existen dos formas de cargar una maquina virtual PV Linux
La primer opcin y ms usada en la mayora de los casos es iniciar la VM usando una
imagen del kernel local en el domain0, para este caso se usa la opcin kernel en el archivo
de configuracin del DomU con la ruta absoluta de la imagen del kernel XenLinux,
adems, los mdulos correspondientes a la versin del kernel deben estar almacenados en el
directorio /lib/modules/<kernel version> en el sistema de archivos local de la domU.
La segunda opcin es usar el Bootloader pygrub, este es un boot loader escrito en python
para permitir iniciar DomU Linux con un kernel que se localiza en el sistema de archivos
local del DomU en lugar de un kernel que se localiza en Dom0, los mdulos
correspondientes tambin deben estar en el sistemas de archivos local de la domU.
Para ms informacin sobre la opcin kernel y pygrub vea la seccin Archivos de
configuracin Xen para maquinas virtuales DomU.
Para las maquinas virtuals HVM no hay ningun requisito para su ejecucin ya que los
dispositivos son creados por QEMU-DM y son usados a travs del soporte de virtualizacin
por hardware. Para acelerar el acceso a dispositivos I/O es posible instalar drivers PV a
Windows.

Medios de instalacin para las maquinas virtuales


El medio de instalacin variar dependiendo de la distribucin que se vaya a instalar, entre
los medios ms comunes son:
CD de instalacin (HVM)
Es posible instalar una maquina virtual en modo HVM tanto Linux como Windows
desde un CD o DVD fsico, en la mayora de casos se deber especificar la ruta al
dispositivo, por ejemplo: /dev/scd0.
Imagen ISO
Tambin es posible definir la ruta a un archivo ISO de instalacin, puede definir la
ruta al archivo ISO con el manejador file:// o phy://, en cualquiera de los casos se
usa losetup para asociar el archivo ISO a un dispositivo loop, por ejemplo:
/xen/storage/isos/ubuntu-8.03-amd64.iso -> /dev/loop6.
HTTP

Herramientas como el instalador de RHEL/CentOS permiten la instalacin va


HTTP, por lo que resulta conveniente tener un servidor HTTP local para publicar
los paquetes de instalacin disponibles de forma local.
Depende de la herramienta usada para la instalacin de las maquinas virtuales el medio de
instalacin requerido, en las siguientes secciones veremos algunos ejemplos.

Parmetros de configuracin para maquinas


virtuales Xen
En esta seccin describiremos los parmetros de configuracin para las maquinas virtuales,
y mostrar algunos ejemplos para maquinas PV y HVM, en las siguientes secciones se
describen los procedimientos para la creacin de maquinas virtuales.
Xen utiliza archivos de configuracin para identificar los elementos y configuraciones con
las que se crearn las maquinas virtuales domU, en esta seccin se describirn los
parmetros generales para maquinas virtuales PV y HVM.
Los parmetros de configuracin con los que se crean las maquinas virtuales se definen en
archivos de configuracin en el directorio /etc/xen, existen parmetro generales que
aplican a las maquinas virtuales PV y HVM, cuando algunos otros solo aplican a un tipo en
especifico.
A continuacin se listan los parmetros de configuracin generales para las maquinas
virtuales Xen:
name (requerido)
Nombre nico para la domU, si intenta crear dos VMs con el mismo nombre
causar un error.
name = 'nombredomu'

uuid (opcional)
UUID para identificar la maquina virtual. Si no se define este parmetro Xen
generar un UUID aleatorio.
Importante
Se recomienda definir un UUID esttico para cada maquina virtual para as
mantener un control de las maquinas virtuales en su entorno, esto es
especialmente recomendado cuando se tiene ms de un servidor Xen, el uuid lo
puede generar con el comando uuidgen(1).
builder
Cual builder usar para construir la domU. El tipo linux es usado para maquinas PV,
y hvm para maquinas HVM, el builder linux es el predeterminado. Ejemplos:
PV Linux:
builder = 'linux'

HVM:
builder = 'hvm'

cpu

Especifica en cuales CPUs (fsicos o ncleos) ser iniciado el DomU, en donde 0


especifica el primer CPU, 1 el segundo, etc. El default es -1, lo cual significa que
Xen elijara los CPUs que estn libres.
cpus
Especifica la lista de CPUs en los cuales los VCPUs del DomU tiene permitido
ejecutarse. La sintaxis usa rangos (0-3), y la negacin , ^1. Por ejemplo:
cpus = "0-3,5,^1"

Resultara en que los CPUs 0, 2, 3, 5 sern disponibles para el DomU.


vcpus (opcional, default 1)
Para sistemas SMP, use cpus para asignar los cpus fsicos que podr usar una
DomU, si no se especifica la maquina virtual podr utilizar todos los cpus fsicos y
virtuales del sistema Host, usndolos de forma balanceada.
vcpus=1

pae
PAE (Physical Address Extension) es un mecanismo para acceder a ms de 4GB de
memoria en sistemas 32-bit, aplica tanto para el Domain-0 y DomUs.
pae = '1'

memory
La cantidad de RAM, en megabytes, para asignar al DomU cuando inicia. Si asigna
memoria insuficiente para un dominio puede producir comportamientos bizarros. Si
no hay memoria libre suficiente en el host para atender la peticin el domain fallara
para iniciar.
memory = '1024'

Importante
Recuerde reservar la cantidad de memoria reservada para el Dom0 y recuerde
que Xen usa otros 64Mb adicionales.
disk
Arreglo de dispositivos de bloque asignados a la DomU, usa un formato de:
disk = [ "stanza1", "stanza2", ... ]

Cada stanza contiene 3 elementos en el formato: "backend-dev,frontenddev,mode" en donde:


backend-dev
El dispositivo en el dominio backend (Dom0) que ser exportado al dominio
frontend (DomU). Los formatos soportados incluyen:
phy:device - exporta el dispositivo fsico listado, puede ser una particin linux
nativa, un vlumen lgico LVM o un dispositivo RAID por software.
file:/path/to/file - exporta el archivo listado como un dispositivo de loopback, se
puede utilizar para archivos de imagen de tipo full o sparse o para archivos de
imagen ISO.

Importante
Para tener un buen rendimiento con archivos de imagen se recomienda use el
driver blktap.
tap:aio:/path/to/file - Exporta el archivo usando el driver blktap, este modo el
acceso al dispositivo es directo y funciona de forma asincrona lo cual da mejor
rendimiento especialmente en escrituras y menor consumo de CPU, se pueden
utilizar para archivos de imagen de tipo full o sparse.
frontend-dev
Como aparecer el dispositivo en el dominio guest. Se recomienda que para
maquinas PV use el formato xvdxx (Xen Virtual Disk XX).
mode
El modo de acceso al dispositivo, Hay dos opciones validas, r (read-only), w
(read/write).
Ejemplo de discos duros virtuales basados en archivo de imagen usando el
manejador file y el driver loopback:
disk =
['file:/xen/storage/0/images/fs1.example.com/disk.img,xvda1,w',
'file:/xen/storage/0/images/fs1.example.com/swap.img,xvda2
,w']

Ejemplo de discos duros basados en archivo de imagen:


disk = [

'tap:aio:/xen/storage/0/images/app.example.com/disk.img,xv

da1,w',
da2,w'

'tap:aio:/xen/storage/0/images/app.example.com/swap.img,xv
]

Ejemplo de discos duros virtuales basados en particiones Linux nativas:


disk = [

'phy:/dev/sdb1,xvda1,w',
'phy:/dev/sdc1,xvda2,w'

Ejemplo de discos duros virtuales basados en volmenes lgicos LVM:


disk = [

'phy:/dev/VGXenOS/fs2.example.com-root,xvda1,w',
'phy:/dev/VGXenOS/fs2.example.com-swap,xvda2,w',
'phy:/dev/VGXenData/fs2.example.com-data,xvda3,w'

Ejemplo de discos duros virtuales basados en archivos de imagen usando el driver


blktap y un archivo de imagen ISO para cdrom virtual.
disk = [
'tap:aio:/xen/storage/1/images/dc1.example.com/diskc,hda,w',
'tap:aio:/xen/storage/isos/win2k3.iso,ioemu:hdc:cdrom,r'

Nota
Este es un ejemplo para una DomU HVM para un sistema Windows Server
2003, se le asigna un archivo de imagen como un disco completo que ser
particionado por el instalador, y adems un CD-ROM virtual basado en un
archivo ISO.
Para ms informacin sobre la administracin de dispositivos de almacenamiento
fisicos ver la seccin Configuracin de los medios de almacenamiento local para las
VMs en Xen.
vif (Virtual Interface)
Un arreglo de interfaces de red virtuales asignadas a la DomU, El parmetro vif
define las interfaces de red virtuales a las que se conectar la DomU
vif = [ "stanza1", "stanza2", ... ]

Cada stanza especifica un conjunto de opciones de tipo nombre = valor separada por
comas, en la forma de:
"name1=value1, name2=value2, ..."

Las opciones validas son:

type - Tipo de interfaz, para maquinas PV no se requiere para maquinas


HVM use el tipo ioemu.

bridge

mac

- El bridge de red para ser usado por el dispositivo. Este es


especialmente necesario si en el Dom0 existen mltiples bridges.
- La direccin MAC asignada al dispositivo

Si no define un bridge al que se asociar la interfaz virtual entonces se usar el


predefinido, ejem: xenbr0, si no define una direccin MAC entonces Xen asignar
una aleatoria, por ejemplo:
vif = ['']

Ejemplo de interfaz virtual con bridge especifico y sin MAC definido:


vif = ['bridge=xenbr0']

Ejemplo de PV DomU con dos interfaces de red.


vif = [
'bridge=xenbr0, mac=00:16:3e:4f:60:ec',
'bridge=xenbr1, mac=00:16:3e:3e:ea:62'
]

Para agregar una interfaz de red a una domU HVM use el modo ioemu:
vif = [
'type=ioemu, bridge=xenbr0, mac=00:16:3e:5e:76:50'

Para ms informacin sobre la configuracin de las interfaces de red virtuales vea la


seccin Configuracin de los dispositivos de red fsicos y virtuales en Xen.

kernel
La imagen del kernel para el DomU. El formato de este parmetro es la ruta
absoluta para el archivo de la imagen del kernel en el Domain-0.
Ejemplo de parmetros kernel para PV DomU Debian/Ubuntu:
kernel = '/boot/vmlinuz-2.6.24-28-xen'

Ejemplo de parmetros kernel para PV DomU CentOS 5.x:


kernel = '/boot/vmlinuz-2.6.18-194.3.1.el5xen'

Nota
Ya que el kernel se localiza en el Domain-0 puede usar cualquier ruta, no tiene
que ser /boot, por ejemplo puede usar /xen/kernels.
ramdisk
El disco RAM inicial para el DomU. El formato de este parmetro es la ruta
absoluta al archivo del initrd, por ejemplo /boot/initrd.gz. En la mayora de las
distribuciones GNU/Linux va a requerir de un disco RAM inicial para cargar los
drivers del sistema de archivos de la particin raz, por ejemplo:
Ejemplo de parmetros ramdisk para PV DomU Debian/Ubuntu
ramdisk = '/boot/initrd.img-2.6.24-28-xen'

Ejemplo de parmetros initrd para PV DomU CentOS 5.x con imagen del kernel en
Dom0:
ramdisk = '/boot/initrd-2.6.18-194.3.1.el5xen.img'

Nota
Ya que la imagen initrd se localiza en el Domain-0 puede usar cualquier ruta,
no tiene que ser /boot, por ejemplo puede usar /xen/kernels.
root
Define el dispositivo raz para el DomU. Esto es requerido para dominios Linux y
posiblemente otros OSes.
root = '/dev/xvda1 ro'

Esta lnea es pasada como parmetro al kernel, por ejemplo al final la cmdline del
DomU sera algo as:
/boot/vmlinuz-2.6.24-28-xen /dev/xvda1 ro

Por lo que es muy importante que se asegure que el dispositivo definido con root
coincida con el nombre frontend asignado al dispositivo fsico definido en disk.
Este dispositivo tambin tendr que coincidir con el dispositivo raz en el archivo
/etc/fstab del DomU.
extra
Informacin extra que es anexada al final de la lnea del parmetro kernel. El
formato es una cadena, el contenido puede ser cualquiera que soporte el kernel. Por
ejemplo:

extra = "4"

Esto le dir al kernel que cargue en runlevel 4.


Ejemplo de parmetros extra para PV DomU Debian/Ubuntu
extra = '2 console=xvc0 clocksource=jiffies'

Ejemplo de parmetros extra para PV DomU CentOS 5.x con imagen del kernel en
Dom0:
extra = 'fastboot'

bootloader
Ruta al programa arrancador (Bootloader) que usara el PV DomU, Xen incluye
pygrub, una versin de GRUB escrita en python para cargar maquinas virtuales PV,
por ejemplo:
bootloader

= '/usr/bin/pygrub'

disk = [
'tap:aio:/xen/storage/0/images/app.example.com/root.img,xv

da1,w',

'tap:aio:/xen/storage/0/images/app.example.com/swap.img,xv

da2,w'
]

Importante
La particin de arranque debe ser la primer listada en el parmetro disk, en este
caso xvda1, este mismo dispositivo debe ser el que se usa como parmetro root
del kernel en el grub del domU, y en el fstab para la particin raz.
device_model
Ruta del programa que emular los dispositivos para HVM DomU, por ejemplo:
device_model = '/usr/lib/xen/bin/qemu-dm'

Verifique que en su sistema existe el programa en la ruta especificada.


boot
Orden de arranque en HVM Windows, donde floppy (a), hard disk (c), Network (n)
or CD-ROM (d), el orden predeterminado es: hard disk, cd-rom, floppy.
boot = 'dc'

Esta opcin es usada para arrancar una maquina virtual HVM Windows desde el cdrom o imagen ISO.
sdl
Habilitar el soporte de arranque grfico en del HVM DomU.
sdl = '1'

Esta opcin no puede ser activada junto con VNC, o se habilita una u otra.
vnc

Habilita el soporte de consola VNC para conectarse de forma grfica a HVM


DomU, por ejemplo:
vnc = '1'

Si no se define su valor predeterminado es 0, es decir, desactivado.


vnclisten
Direccin IP de el Dom0 en el que qemu-dm lanzar el socket VNC para la
administracin remota.
vnclisten = '127.0.0.1'

Si no se define una direccin se usar por default 0.0.0.0, es decir, abrir el puerto
VNC en todas las interfaces de red activas del sistema.
Se recomienda definir 127.0.0.1 y utilice un tnel SSH para conectarse de forma
segura.
vncunused
Permite la creacin del servicio VNC en un puerto no utilizado, por ejemplo:
vncunused = '1'

vncpasswd (opcional)
Contrasea (en texto plano) para conectarse a la consola VNC.
vncpasswd = '123456'

Si no se define una contrasea el acceso es sin restriccin.


vfb
Virtual Frame Buffer es un mtodo en el cual el sistema operativo guest usa un
dispositivo Frame Buffer para exportar el sistema de grficos, puede usar el tipo
VNC con sus diferentes opciones.
Dentro del parmetro vfb podemos pasar las siguientes opciones: type,
vncdisplay/vncunused, vncpassword, keymap, por ejemplo:
vfb = [ 'type=vnc,vncdisplay=10,vncpasswd=s3cr3t' ]

Si cuando se conecta el mapa del teclado no es el especificado en la instalacin del


OS puede mapearlo usando la directiva keymap, por ejemplo:
vfb = [ "type=vnc,vndisplay=10,vncpasswd=s3cr3t,keymap=es" ]

Los mapas de teclado pueden encontrarse en el directorio de QEMU:


/usr/share/xen/qemu/keymaps.
Si desea lanzar el servicio VNC en un puerto sin usar use la opcin vncunused, por
ejemplo:
vfb = [ "type=vnc,vncunused=1,vncpasswd=s3cr3t,keymap=es" ]

usb
Habilita el soporte de USB para DomU.
usb = '1'

Para tener un cursor en maquinas HVM se requiere el soporte usb.


usbdevice
Tipo de dispositivo USB para maquinas HVM, use el tipo mouse para usar un
cursos en consolas VNC, tambin puede usar el tipo tablet para dispositivos de
cursor, este tipo es ms preciso que mouse, por ejemplo:
usb
= '1'
usbdevice = 'tablet'

soundhw
Habilita el soporte de audio en la maquina HVM, defina un tipo de tarjeta
(sb16,es1370), por ejemplo:
soundhw='sb16'

localtime
Configura el reloj del sistema guest a el tiempo local (default=0, es decir, UTC),
esta opcin solo se usa para maquinas HVM.
localtime = '1'

on_poweroff
Que accin tomar cuando se ejecute el comando xm destroy en el Dom0.
on_poweroff = 'destroy'

Es como jalarle el cable de corriente a un servidor fsico, as que uselo solo en


ltima instancia.
on_reboot
Que accin tomar en caso de que se ejecute el comando xm reboot o un reinicio
limpio dentro del DomU.
on_reboot = 'restart'

Normalmente quiere que se haga un reinicio desde Xen.


on_crash
Que accin tomar en caso cuando un DomU se va a un estado crashed por cualquier
razn.
on_crash = 'restart'

Normalmente quiere que se haga un reinicio desde Xen.


Un ejemplo de archivo de configuracin para una maquina virtual Ubuntu 8.04 LTS 64-bit
PVM con el kernel e initrd almacenados en un directorio dentro del Domain-0:
#
# Xen PV Linux DomU config file:
#
name
uuid

= 'domu01.example.com'
= 'daa7e649-91ce-43b8-8a9f-abfc47fe3dd4'

builder

= 'linux'

kernel
ramdisk

= '/boot/vmlinuz-2.6.18.8-xen'
= '/boot/initrd.img-2.6.18.8-xen'

vcpus
memory

= '1'
= '128'

root

= '/dev/xvda1 ro'

extra

= '2 console=xvc0'

disk

= [
'tap:aio:/xen/storage/1/images/domu01/root.img,xvda1,w',
'tap:aio:/xen/storage/1/images/domu01/swap.img,xvda2,w',
]

vif

= [
'bridge=xenbr1, mac=00:16:3e:29:08:a5'
]

on_poweroff = 'destroy'
on_reboot
= 'restart'
on_crash
= 'restart'

Otro ejemplo para una maquina virtual CentOS 5.4 PVM 32-bit con PyGRUB, por lo que la
configuracin del kernel, initrd y grub se realiza en el DomU:
#
# Xen PV Linux DomU config file:
#
name
uuid

= 'fs1.example.com'
= '8cdaddba-bd18-421f-a85f-f54ca55189d2'

builder

= 'linux'

bootloader

= '/usr/bin/pygrub'

vcpus
memory

= '2'
= '512'

disk

= [
'tap:aio:/xen/storage/1/images/fs1.example.com/root.img,xv

da1,w',
da2,w',
da3,w'

'tap:aio:/xen/storage/1/images/fs1.example.com/swap.img,xv
'tap:aio:/xen/storage/1/images/fs1.example.com/home.img,xv
]

vif

= [
'bridge=xenbr1, mac=00:16:3E:A9:01:42'
]

on_poweroff = 'destroy'
on_reboot
= 'restart'

on_crash

= 'restart'

Un ejemplo de una maquina virtual HVM para WIndows 2003 en 32-bit con soporte PAE,
ACPI, APIC y USB:
#
# Xen HVM Windows DomU config file:
#
name
uuid

= 'dc1.example.com'
= '55173448-4f58-45ee-92d5-eeedb21febee'

builder
vcpus
memory
pae

=
=
=
=

device_model
kernel
boot

= '/usr/lib/xen/bin/qemu-dm'
= '/usr/lib/xen/boot/hvmloader'
= 'dc'

acpi
apic

= '1'
= '1'

usb
usbdevice
keymap

= '1'
= 'tablet'
= 'es'

disk

= [
'tap:aio:/xen/storage/2/images/dc1.example.com/disk-

'hvm'
'1'
'1024'
'1'

c.img,hda,w',

'file:/xen/storage/isos/win2k3-ED-32bit-esdisc1.iso,ioemu:hdc:cdrom,r'
'file:/xen/storage/isos/win2k3-ED-32bit-esdisc2.iso,ioemu:hdd:cdrom,r'
]
vif

= [
'type=ioemu, bridge=xenbr1, mac=00:16:3e:40:f4:3a'
]

sdl
vnc
vnclisten
vncpasswd

=
=
=
=

on_poweroff
on_reboot
on_crash

= 'destroy'
= 'restart'
= 'restart'

'0'
'1'
'0.0.0.0'
'secreto'

Para ms informacin sobre los parmetros de configuracin para los DomU vea la pgina
del manual xmdomain.cfg(5).
En las siguientes secciones veremos diferentes mtodos para la creacin de maquinas
virtuales PV Linux en distribuciones Debian/Ubuntu y CentOS.

Creando maquinas virtuales Xen PV Linux

En esta seccin veremos como crear maquinas virtuales Xen domU del tipo PV Linux,
veremos los mtodos para la creacin de maquinas con sistemas operativos guest
Debian/Ubuntu en arquitecturas de 32-bit y 64-bit, los mtodos descritos son manual y
automtico.

Creando maquinas virtuales Xen PV Linux con Debian o Ubuntu


Las distribuciones Debian y Ubuntu incluyen el soporte para ejecutarse de forma PV en
Xen, de entre los diferentes mtodos que existen para instalar Debian/Ubuntu aqui
mencionaremos el uso de debootstrap y xen-tools, las cuales nos permitirn instalar
diferentes versiones de forma manual y automtica.
Creando maquinas virtuales Xen PV Debian con con debootstrap
Debootstrap es un herramienta que nos permite instalar un sistema guest Debian sobre un
un sistema de archivos local, usaremos debootstrap para crear la base del sistema guest
Debian/Ubuntu y despus realizaremos la configuracin inicial del sistema de forma
manual editando archivos de configuracin de sistema.
Los pasos que realizaremos para crear una maquina virtual Xen PV Debian o Ubuntu
usando debootstrap son:

Crear discos virtuales basados en archivos de imagen.

Crear sistemas de archivos sobre discos virtuales.

Montar el sistema de archivos del disco virtual en un directorio temporal.

Instalar sistema Debian sobre el directorio temporal.

Instalar mdulos del kernel XenLinux en el directorio temporal.

Configurar el montaje de los sistemas de archivos en /etc/fstab de la maquina


virtual.

Configurar la Consola Virtual Xen xvc0..

Defina el nombre del sistema.

Crear contrasea para el usaurio root del nuevo sistema.

Configuracin de los parmetros de red para el sistema guest.

Configuracin de repositorios de paquetes APT.

Instalacin de paquetes base adicionales.

Desmontaje de directorio temporal.

Creacin de archivo de configuracin de maquina virtual PV Linux.

Antes de iniciar asegurese de tener instalado el paquete debootstrap, si no lo tiene instalelo


con apt-get:
# apt-get install debootstrap

La versin de debootstrap incluida en Ubuntu Hardy 8.04 no tiene los scripts para crear
instalaciones de Ubuntu Lucid 10.04 ni de Debian Squeeze 6, para soportar la creacin de
instalaciones de estas distribuciones para las maquinas virtuales cree los scripts en el
directorio /usr/share/debootstrap/scripts, por ejemplo:
# cd /usr/share/debootstrap/scripts

# ln -s gutsy lucid
# ln -s sid squeeze

Nota
Solo se crean enlaces simblicos a los directorios de las distribuciones base, para
Ubuntu se usa gutsy y para Debian sid.
Primero vamos a crear los archivos de imagen que seran usados como discos duros por la
maquina virtual, para la maquina virtual de nombre dom01 con una instalacin simple
crearemos un archivo de imagen de 4GB para la particin raz y otro archivo de 512MB
para la particin swap.
Creamos un archivo de imagen de 4GB de tipo sparse para la particin raz:
# dd if=/dev/zero of=/xen/storage/0/images/domu01-root.img bs=1024k
seek=4096 count=0

Y tambin creamos un archivo de imagen de 512MB de tipo sparse para la particin swap:
# dd if=/dev/zero of=/xen/storage/0/images/domu01-swap.img bs=1024k
seek=512 count=0

Con el comando mkfs.ext3 creamos un sistema de archivos ext3 sobre el archivo de


imagen domu01-root.img:
# mkfs.ext3 /xen/storage/0/images/domu01-root.img

Y creamos el swap sobre el archivo domu01-swap.img con el comando mkswap:


# mkswap /xen/storage/0/images/domu01-swap.img

Creamos un directorio que usaremos como punto de montaje temporal en el cual


montaremos el archivo de imagen domu01-root.img para instalar el sistema guest:
# mkdir /mnt/tmp/vms/domu01
# mount -t ext3 -o loop /xen/storage/0/images/domu01-root.img
/mnt/tmp/vms/domu01

Use el comando mount para verificar que el archivo fu montado:


# mount
...
/xen/storage/0/images/domu01-swap.img on /mnt/tmp/vms/domu01 type ext3
(rw,loop=/dev/loop0)

Nota
Con la opcin -o loop del comando moount se mapeo el archivo de imagen al
dispositivo loopback /dev/loop0.
Ahora usaremos debootstrap para crear una instalacin de Debian Lenny i386 en el
directorio /mnt/tmp/vms/domu01 usando el mirror http://ftp.us.debian.org/debian:
# debootstrap --arch i386 lenny /mnt/tmp/vms/domu01
http://ftp.us.debian.org/debian

Nota
Para una maquina virtual Ubuntu hardy i386 use:

# debootstrap --arch i386 hardy /mnt/tmp/vms/domu01


http://archive.ubuntu.com/ubuntu

Despus de que debootrap termina de instalar los paquetes en el directorio veamos que se
creo una estructura de archivos:
# ls -1 /mnt/tmp/vms/domu01
bin
boot
dev
etc
home
lib
lost+found
media
mnt
opt
proc
root
sbin
selinux
srv
sys
tmp
usr
var

Es importante instalar unos modulos de kernel apropiados para el kernel y distribucin, por
ejemplo, si el OS de la VMs es el mismo que el del Dom0 puede hacer:
# cp -a /lib/modules/2.6.18.8-xen /mnt/tmp/vms/domu01/lib/modules/

Nota
Recuerde que el kernel 2.6.18 que instalamos con Xen 3.4.3 incluye los drivers
Frontend por lo que es posible usarlos tambin en un PV DomU Linux.
Ahora debemos definir el nombre como se montarn los sistemas de archivos en la maquina
virtual, creamos el archivo /etc/fstab en el directorio temporal:
# vim /mnt/tmp/vms/domu01/etc/fstab

Con el siguiente contenido:


# /etc/fstab: static file system information.
#
# <file system> <mount point>
<type> <options>
<dump> <pass>
proc
/proc
proc
defaults
0
0
/dev/xvda1
/
ext3
errors=remount-ro
0
1
/dev/xvda2
none
swap
sw
0
0

Nota
Recuerde que xvda1 ser el disco raz y xvda2 el swap, necesitar esta informacin

cuando cree el archivo de configuracin para la maquina virtual.


Ahora debemos definir el nombre de la terminal TTY (Xen Virtual Console) que usara
el sistema, Xen usa el nombre de dispositivo xvc, para nuestro caso usaremos xvc0. Edite el
archivo /etc/inittab en el directorio temporal:
# vim /mnt/tmp/vms/domu01/etc/inittab

Cambie la linea de la terminal tty:


1:2345:respawn:/sbin/getty 38400 tty1

Por una terminal tipo xvc0 (Xen Virtual Console 0):


1:2345:respawn:/sbin/getty 38400 xvc0

Nota
Si es Ubuntu 8.04 LTS entonces edite el archivo
/mnt/tmp/vms/domu01/etc/event.d/tty1 y cambie tty1 por xvc0.
Asegurese de que la TTY xvc0 aparezca listada en el archivo /etc/securetty, de lo
contrario no podr obtener una terminal getty cuando se conecte usando xm console, por
ejemplo:
...
...
...
# Consolas Xen:
xvc0
hvc0

Defina el nombre del sistema en el archivo /etc/hostname del directorio temporal:


# echo "domu01.example.com" > /mnt/tmp/vms/domu01/etc/hostname

Cree una contrasea para la cuenta root:


# chroot /mnt/tmp/vms/domu01 /usr/bin/passwd

Tambin revise el archivo de resolucin de nombres local


/mnt/tmp/vms/domu01/etc/hosts, por ejemplo:
# vim /mnt/tmp/vms/domu01/etc/hosts

Con el siguiente contenido:


127.0.0.1
localhost.localdomain
192.168.221.134 domu01.example.com

localhost
domu01

Configure los parmetros de la interfaz de red en el archivo /etc/network/interfaces


dentro del directorio temporal:
# vim /mnt/tmp/vms/domu01/etc/network/interfaces

Con el siguiente contenido:


# The loopback network interface
auto lo

iface lo inet loopback


# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.221.134
netmask 255.255.255.0
gateway 192.168.221.254

Tambin cambie la configuracin de los servidores DNS en el archivo /etc/resolv.conf


del directorio temporal, por ejemplo:
# vim /mnt/tmp/vms/domu01/etc/resolv.conf

Con el siguiente contenido:


search example.com
nameserver 192.168.221.254

Tambin debe actualizar la lista de repositorios para apt en el archivo


/mnt/tmp/vms/domu01/etc/apt/sources.list, por ejemplo:
# vim /mnt/tmp/vms/domu01/etc/apt/sources.list

Con el siguiente contenido:


deb
deb-src
deb
deb-src

http://ftp.us.debian.org/debian/
lenny
http://ftp.us.debian.org/debian/
lenny
http://security.debian.org/ lenny/updates
http://security.debian.org/ lenny/updates

main
main
main
main

contrib
contrib
contrib
contrib

non-free
non-free
non-free
non-free

Instale el paquete de udev y las locales:


# chroot /mnt/tmp/vms/domu01 apt-get install udev locales

Configure la zona horaria:


# chroot /mnt/tmp/vms/domu01 dpkg-reconfigure tzdata

Instale el cliente NTP para sincronizar el reloj del sistema:


# chroot /mnt/tmp/vms/domu01 apt-get install ntpdate

Hemos terminado con la instalacin del sistema operativo para la maquina virtual, antes de
continuar se recomienda que desmonte el archivo de imagen:
# umount /mnt/tmp/vms/domu01

Ahora debemos crear el archivo de configuracin en el cual definimos los parmetros con
los que crearemos la maquina virtual as como los parmetros para arrancar el sistema
operativo que recien instalamos.
Cree el archivo de configuracin para una VM PV Linux en el directorio /etc/xen, por
ejemplo:
# vim /etc/xen/domu01.cfg

Con el siguiente contenido:


#

# Xen PV DomU Linux config file:


#
name
uuid

= 'domu01'
= 'daa7e649-91ce-43b8-8a9f-abfc47fe3dd4'

builder

= 'linux'

kernel
ramdisk

= '/boot/vmlinuz-2.6.18.8-xen'
= '/boot/initrd.img-2.6.18.8-xen'

vcpus
cpus
memory

= '1'
= '1'
= '512'

root

= '/dev/xvda1 ro'

extra

= 'console=xvc0'

disk

= [
'tap:aio:/xen/storage/0/images/domu01-root.img,xvda1,w',
'tap:aio:/xen/storage/0/images/domu01-swap.img,xvda2,w'
]

vif

= [

'bridge=xenbr1, mac=00:16:3e:29:08:a5'

]
on_poweroff = 'destroy'
on_reboot
= 'restart'
on_crash
= 'restart'

Importante
En este caso la maquina virtual arrancara usando el kernel /boot/vmlinuz2.6.18.8-xen almacenado en Domain-0. verifique que las rutas son correctas.
Tambin debe asegurarse que esten correctas las rutas a los archivos de imagen de los
discos virtuales y que los nombres asignados corresponden a aquellos definidos en el
archivo /etc/fstab dentro del sistema de la maquina virtual.
Nota
Se pasan unos parmetros extra al kernel, 2 para indicar el nivel de ejecucin (runlevel)
y console=xvc0 para indicarle al kernel que use esa consola para enviar la salida
estandar.
Nota
La direccin MAC address para la interfaz de red virtual fue generada con el comando
/usr/local/sbin/macgen.py.
Antes de querer iniciar la maquina virtual con el sistema operativo que acabamos de crear
se recomiende que revise todos los pasos anteriores, cuando este seguro use el comando xm
create para crear la maquina virtual:, por ejemplo:

# xm create /etc/xen/domu01.cfg -c

El parmetro -c conecta xm a la consola serial de la maquina virtual xvc0, la cual es el


nombre que Xen asigna a las terminales TTY locales de las maquinas virtuales, para
desconectarse de la consola serial use la combinacin de teclas Ctrl+].
Creando maquinas virtuales Xen PV Ubuntu con xen-tools
En esta seccin veremos como crear de forma automtica maquinas virtuales PV Linux en
las distribuciones Debian y Ubuntu para arquitecturas 32-bit y 64-bit usando las
herramientas xen-tools, las cuales son un conjunto de scripts en perl y bash para
automatizar el proceso de creacin de maquinas virtuales usando debootstrap, es decir, con
xen-tools podremos ahorrarnos el tiempo que nos toma personalizar la instalacin.
Con xen-tools podremos crear una maquina virtual de un solo comando, xen-tools es
bastante flexible al definir los parmetros de configuracin de las maquinas virtuales,
permite la configuracin de cpus virtuales, memoria, discos duros basados en imagenes
loopback, particiones linux nativas o LVM, consola serial, configuracin de red.
En las siguientes secciones veremos como instalar, configurar y usar xen-tools.
Instalando xen-tools

En esta seccin veremos los pasos para isntalar xen-tools desde las fuentes, primero
instalaremos las dependencias:
# apt-get install git-core make libtest-pod-perl libtext-template-perl
debootstrap \
perl-modules libexpect-perl libtext-template-perl libconfig-inifilesperl libfile-slurp-perl \
e2fsprogs reiserfsprogs xfsprogs

Descargamos e instalamos el archivo tar de las fuentes de xen-tools desde su sitio oficial,
para este documento usaremos la versin 4.2.
#
#
#
#
#

cd /usr/src/
wget http://www.xen-tools.org/software/xen-tools/xen-tools-4.2.tar.gz
tar zxvf xen-tools-4.2.tar.gz
cd xen-tools-4.2
make install

El directorio principal de configuracin de xen-tools es /etc/xen-tools, en dicho


directorio encontramos los scripts hooks en el subdirectorio hooks.d, los esquemas de
particionamiento en el directorio partitions.d, los roles en el directorio roles.d.
En el directorio /usr/lib/xen-tools se crearon las plantillas para la creacin de VMs,
encontramos plantillas para centos4, centos5, fedora4-13, Debian sarge, etch, lenny,
squeeze, sid y testing, gentoo, Ubuntu dapper, edty, feisty, gutsy, hardy, intrepid, jaunty,
karmic y lucid.
Las pginas del manual se instalaron en el directorio /usr/share/man/man8.
En las siguientes secciones veremos como definir los parmetros globales y especificos
para la creacin de las maquinas virtuales.
Definiendo los parmetros de configuracin globales para xen-tools

El programa para crear maquinas virtuales xen-create-image usa parmetros de


configuracion globales desde el archivo de configuracin /etc/xen-tools/xen-tools.conf los

cuales son usados para todos los tipos de maquinas virtuales. A continuacin se listan los
parmetros generales.
Antes de modificar los parmetros generales se recomienda realizar una copia de seguridad
del archivo:
# cp /etc/xen-tools/xen-tools.conf{,.orig}

Edite el archivo de configuracin para definir los parmetros generales para nuestro
entorno:
# vim /etc/xen-tools/xen-tools.conf

Para definir la arquitectura de hardware predeterminada para las maquinas virtuales use el
parmetro arch:
arch = amd64

Nota
Las arquitecturas disponibles son i386 para x_86 y amd64 para x_86_64.
Para definir la distribucin predeterminada para las maquinas virtuales use el parmetro
dist:
dist = hardy

Nota
Por default se usa el comando xt-guess-suite-and-mirror para definir la distribucin
en base al Domain-0.
El mtodo de instalacin se define usando el parmetro install-method, el default es
debootstrap.
install-method = debootstrap

Ya que la instalacin de las VMs las hace a travs de debootstrap defina el URL para los
servidores mirror para cada distribucin usando los parmetros mirror_dist, por ejemplo:
mirror_lenny = http://cdn.debian.net/debian
mirror_hardy = http://archive.ubuntu.com/ubuntu

Para mquinas PV Linux que mantienen la imagen del kernel e initrd en en un directorio
local del Domain-0 use los parmetros kernel e initrd, por ejemplo:
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`

Nota
Por default se usa la misma versin del kernel que esta ejecutando el Domain-0, cuando
usa pygrub, ests opciones no tienen efecto.
Definiendo el tipo de imagen loop predeterminado para los discos virtuales de la DomU:
image = sparse

Nota
Los tipos soportados son sparse y full, el predeterminado es sparse.

Con el parmetro fs defina el sistema de archivos predeterminados para la particin raz de


las maquinas virtuales.
fs = ext3

Nota
Los tipos soportados son ext2, ext3.
Para definir el nombre de la terminal serial de la maquina virtual usando el parmetro
serial_device, por ejemplo:
serial_device=xvc0

Nota
El kernel predeterminado de hardy usa xvc0, pero en Lenny se usa hvc0, por lo que
defina la predeterminada de acuerdo al tipo de VM que ms vaya a instalar.
Para definir parmetros de configuracin diferentes a los predeterminados al momento de
crear maquinas virtuales defina las opciones especificas, por ejemplo, para definir una
consola hvc0 para una maquina Debian Lenny use --serial_device.
En las siguientes secciones veremos ejemplos para crear maquinas virtuales usando el
programa xen-create-image(8).
Creando maquinas PV Debian o Ubuntu

Para crear una maquina virtual PVM Linux con Ubuntu Hardy en arquitectura i386 usando
el mtodo de instalacin debootstrap y el dispositivo serial xvc0 use el siguiente comando:
# xen-create-image --hostname=www.example.com \
--dist=hardy --arch=i386 \
--vcpus=2 --memory=256Mb \
--dir=/xen-images \
--bridge=xenbr2 --dhcp \
--passwd

El comando anterior crear una maquina virtual PV Linux usando archivos de imagen loop
como medio de almacenamiento, crear los archivos:
/xen-images/domains/www.example.com/swap.img
Archivo de imagen loop (raw) para almacenar la particin raz del sistema
operativo.
/xen-images/domains/www.example.com/root.img
Archivo de imagen loop (raw) para almacenar la particin swap del sistema
operativo.
Adems crear el archivo de configuracin /etc/xen/www.example.com.cfg con el
siguiente contenido:
name

= 'www.example.com'

kernel
ramdisk

= '/boot/vmlinuz-2.6.24-28-xen'
= '/boot/initrd.img-2.6.24-28-xen'

vcpus

= '2'

memory

= '256'

root
= '/dev/xvda2 ro'
disk
= ['tap:aio:/xenimages/domains/www.example.com/swap.img,xvda1,w',
'tap:aio:/xenimages/domains/www.example.com/disk.img,xvda2,w']
vif

= ['bridge=xenbr2']

on_poweroff = 'destroy'
on_reboot
= 'restart'
on_crash
= 'restart'

Para crear una maquina virtual Debian Lenny en arquitectura amd64 usamos el siguiente
comando:
# xen-create-image --hostname=proxy.example.com \
--dist=lenny --arch=amd64 \
--vcpus=2 --memory=1Gb \
--dir=/xen-images --fs=ext3 --size=8Gb --swap=2Gb \
--bridge=xenbr3 --dhcp \
--passwd

Algunas otras opciones tiles:


--kernel
Set the path to the kernel to use for domU. If a kernel is specified it must exist.
--initrd
Specify the initial ramdisk. If an image is specified it must exist.
--modules
Set the path to the kernel modules to use for domU. If modules are specified they
must exist.
--partitions
Use a specific partition layout configuration file. See /etc/xentools/partitions.d/sample-server for an example partitioning configuration. Not
supported with the image-dev and swap-dev options. Parameters fs, size, swap and
noswap are ignored when using this option.
--role
Run the specified role script(s) post-install. Role scripts are discussed later in this
manpage. Can be an absolute path. Otherwise it's relative to the value of --roledir.
--pygrub
DomU should be booted using pygrub.
--disk_device
Use specified device name for virtual devices instead of the default value "xvda".
--serial_device
Install a getty on the specified serial device instead of the default device.

--vcpus
Set the number of vcpus that the new instance will have instead of the default value
of "1".
--bridge
Optionally, set a specific bridge for the new instance. This can be especially useful
when running multiple bridges on a machine.
-mac
Specify the MAC address to use for a given interface. This is only valid for the first
IP address specified, or for DHCP usage. (ie. you can add multiple --ip flags, but the
specific MAC address will only be used for the first interface.)
--ip
Setup the IP address of the machine, multiple IPs are allowed. When specifying
more than one IP the first one is setup as the "system" IP, and the additional ones
are added as aliases.
--netmask
Setup the netmask for the new instance.
--broadcast
Setup the broadcast address for the new instance.
--gateway
Setup the network gateway for the new instance.
--lvm
Specify the volume group to save images within. If you do not wish to use LVM
specify --dir or --evms. (These three options are mutually exclusive.)
La mayora de los parmetros de arriba pueden ser predefinidos en el archivo de
configuracin /etc/xen-tools/xen-tools.conf y simplificar los parmetros usados.
Definiendo esquemas de particiones de xen-tools

Si queremos crear DomU con ms de un volumen, por ejemplo, queremos instalar un


servidor que va a tener una particin independiente para /home y otra para /var, para lograr
esta configuracin debemos de crear ms volumens logicos y asignarlos al sistema,
afortunadamente xen-tools nos provee de las funcionalidades para lograr esta tarea de
forma sencilla creando plantillas de particiones.
Crearemos una plantilla para el siguiente esquema de particiones:
Tabla 4.1. Esquema de particiones
Volmen
Sistema de archivos Punto de montaje Tamao
/dev/VGsystem01/fileserver-disk ext3
/
4G
/dev/VGsystem01/fileserver-swap swap
swap
1G
/dev/VGsystem01/fileserver-home ext3
/home
10G
/dev/VGsystem01/fileserver-var ext3
/var
10G

Cremos el arcihvo del perfil de particiones:


# vim /etc/xen-tools/partitions.d/root-swap-home-var

Con el siguiente contenido:


[root]
size=4G
type=ext3
mountpoint=/
options=relatime,errors=remount-ro
[swap]
size=1G
type=swap
[home]
size=10G
type=ext3
mountpoint=/home
options=defaults,noatime
[var]
size=10G
type=ext3
mountpoint=/var
options=defaults,noatime

Para crear un nuevo DomU con que use este esquema utilizamos el siguiente comando:
# xen-create-image --hostname=fileserver --lvm=VGSystem01
--partitions=root-swap-home-var --dhcp --passwd

Nos mostrar una salida como la siguiente, donde nos muestra los volumenes logicos que
se crearon:
General Information
-------------------Hostname
: fileserver
Distribution
: hardy
Partitions
: swap
1G
(swap)
/
4G
(ext3)
/home
10G
(ext3)
/var
10G
(ext3)
Image type
: full
Memory size
: 128Mb
Kernel path
: /boot/vmlinuz-2.6.24-23-xen
Initrd path
: /boot/initrd.img-2.6.24-23-xen
Networking Information
---------------------IP Address
: DHCP [MAC: 00:16:3E:44:7F:74]
Creating swap on /dev/VGData01/fileserver-swap
Done
Creating ext3 filesystem on /dev/VGsystem01/fileserver-disk

Done
Creating ext3 filesystem on /dev/VGsystem01/fileserver-home
Done
Creating ext3 filesystem on /dev/VGsystem01/fileserver-var
Done
Installation method: debootstrap

Tambin crear un archivo de configuracin donde asigna los volmenes lgicos de la


siguiente forma:
disk

= [

'phy:/dev/VGsystem01/fileserver-swap,xvda1,w',
'phy:/dev/VGsystem01/fileserver-disk,xvda2,w',
'phy:/dev/VGsystem01/fileserver-home,xvda3,w',
'phy:/dev/VGsystem01/fileserver-var,xvda4,w',

Verifique que los volmenes fueron creados correctamente.


Modificando las plantillas de configuracin para xen-tools

Es posible modificar la plantilla que genera los archivos de configuracin de las maquinas
virtuales, es decir, los archivos .cfg que se generan en el directorio /etc/xen, por ejemplo, si
desea agregar el parmetro clocksource=jiffies al kernel de la maquina virtual edite el
archivo de la plantilla principal /etc/xen-tools/xm.tmpl.
# vim /etc/xen-tools/xm.tmpl

Y agregue las siguientes lneas al final del archivo:


...
...
...
#
# Kernel extra options
#
extra = 'clocksource=jiffies'

Creando maquinas virtuales PV Linux CentOS


En esta seccin veremos como crear maquinas virtuales PV para CentOS, las haremos
descargando una imagen del sistema operativo del sitio stacklet y usando xen-tools a travs
de rinse.
Creando maquinas virtuales PV CentOS usando imagenes de stacklet
Instalaremos la distribucin CentOS 5.3 i386 basado en una imagen provista por el sitio
stacklet, el procedimiento de configuracin ser similar a la que hicimos con debootstrap, a
excepcin que no usaremos debootstrap para crear el sistema raz.
Descargue la imagen de la VM PV Centos 5.3:
# cd /xen-images

Descargue la imagen:
# wget http://sitio/centos.5-3.x86.20090423.img.tar.bz2

Descomprima la imagen:
# tar -jxvf centos.5-3.x86.20090423.img.tar.bz2

Copie el archivo de imagen:


# cp centos.5-3.x86.img samba-root.img

Ya que la imagen descargada de stacklet no incluye una imagen para el swap, crearemos un
archivo vacio para el swap de 512M:
# dd if=/dev/zero of=/mnt/xen-images/samba-swap.img bs=1024k seek=512
count=0

Cree el swap:
# mkswap /mnt/xen-images/samba-swap.img

Cree directorio temporal para montar la imagen:


# mkdir /mnt/tmp/samba
# mount -t ext3 -o loop /mnt/xen-images/samba-root.img /mnt/tmp/samba

Cambie la contrasea del usuario root de la imagen:


# chroot /mnt/tmp/samba /usr/bin/passwd

Ahora revise el archivo /etc/fstab de la raz de la maquina virtual samba:


# vim /mnt/tmp/samba/etc/fstab

Con el siguiente contenido:


# /etc/fstab: static file system information.
#
# <file system> <mount point>
<type> <options>
<dump> <pass>
proc
/proc
proc
defaults
0
0
/dev/xvda1
/
ext3
defaults,errors=remount-ro
0
1
/dev/xvda2
none
swap
sw
0
0
devpts
/dev/pts
devpts gid=5,mode=620
0
0

Asigne un nombre de host apropiado en el archivo /mnt/tmp/samba/etc/syconfig/network,


por ejemplo:
# vim /mnt/tmp/samba/etc/sysconfig/network

Con el siguiente contenido:


NETWORKING=yes
HOSTNAME=samba.example.com

Tambin revise el archivo de resolucin de nombres local /mnt/tmp/fwproxy/etc/hosts, por


ejemplo:
# vim /mnt/tmp/samba/etc/hosts

Con el siguiente contenido:


127.0.0.1
192.168.1.6

localhost.localdomain
samba.example.com

localhost
samba

Configure los parmetros de red en el archivo /mnt/tmp/samba/etc/sysconfig/networkscripts/ifcfg-eth0, por ejemplo:


# vim /mnt/tmp/samba/etc/sysconfig/network-scripts/ifcfg-eth0

Con el siguiente contenido:


DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.6
NETMASK=255.255.255.0
BROADCAST=192.168.1.255

Configure el gateway en el archivo /mnt/tmp/samba/etc/syconfig/network, por ejemplo:


# vim

/mnt/tmp/samba/etc/syconfig/network

Con:
NETWORKING=yes
HOSTNAME=samba.example.com
GATEWAY=192.168.1.1

Tambin cambie la configuracin de los servidores DNS en el archivo


/mnt/tmp/samba/etc/resolv.conf, por ejemplo:
# vim /mnt/tmp/samba/etc/resolv.conf

Con el siguiente contenido:


search example.com
nameserver 192.168.1.1

Cambie el archivo de inicializacin para usar la terminal virtual hvc0 para la tty1, edite el
archivo /mnt/tmp/fwproxy/etc/inittab, por ejemplo:
# vim /mnt/tmp/samba/etc/inittab

Agregue la lnea para la terminal xvc0 (Xen Virtual Console 0):


xvc0:2345:respawn:/sbin/mingetty xvc0

Asegurese de que la TTY xvc0 aparezca listada en el archivo /etc/securetty, de lo


contrario no podr obtener una terminal getty cuando se conecte usando xm console, por
ejemplo:
...
...
...
# Consolas Xen:
xvc0
hvc0

Configure la zona horaria:


# cp /mnt/tmp/samba/usr/share/zoneinfo/America/Mexico_City
/mnt/tmp/samba/etc/localtime

Instale el cliente NTP:


# chroot /mnt/tmp/samba yum install ntp

Edite el archivo de configuracin de grub que ser usado por el arrancador pygrub:
# vim /mnt/tmp/samba/boot/grub/grub.conf

Con un contenido similar al siguiente:


default=0
timeout=10
title CentOS (2.6.18-194.3.1.el5xen)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.3.1.el5xen console=xvc0 root=/dev/xvda1
ro
initrd /boot/initrd-2.6.18-194.3.1.el5xen.img
title vmlinuz-2.6.18-128.1.6.el5xen
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-128.1.6.el5xen console=xvc0 root=/dev/xvda1
ro
initrd /boot/initrd-2.6.18-128.1.6.el5xen.img

Verifique que los archivos de la imagen del kernel y del initrd existan en el sistema de
archivos del Domu:
# ls -1 /mnt/tmp/samba/boot/*xen*
/mnt/tmp/samba/boot/System.map-2.6.18-128.1.6.el5xen
/mnt/tmp/samba/boot/System.map-2.6.18-194.3.1.el5xen
/mnt/tmp/samba/boot/config-2.6.18-128.1.6.el5xen
/mnt/tmp/samba/boot/config-2.6.18-194.3.1.el5xen
/mnt/tmp/samba/boot/initrd-2.6.18-128.1.6.el5xen.img
/mnt/tmp/samba/boot/initrd-2.6.18-194.3.1.el5xen.img
/mnt/tmp/samba/boot/vmlinuz-2.6.18-128.1.6.el5xen
/mnt/tmp/samba/boot/vmlinuz-2.6.18-194.3.1.el5xen

Asigne una direccin MAC a la interfaz de red predeterminada (eth0) usando el comando
macgen.py, por ejemplo:
# /usr/local/bin/macgen.py
00:16:3e:17:e8:49

Registre esa MAC address para usarla en el archivo de configuracin de la VM.


Cree el archivo de configuracin para una VM PV Linux, por ejemplo:
# vim /etc/xen/samba.cfg

Con el siguiente contenido:


name

= 'samba'

bootloader

= '/usr/bin/pygrub'

vcpus
memory

= '1'
= '256'

root

= '/dev/xvda1 ro'

disk

= ['tap:aio:/mnt/xen-images/samba-root.img,xvda1,w',
'tap:aio:/mnt/xen-images/samba-swap.img,xvda2,w']

vif

= ['mac=00:16:3e:17:e8:49']

on_poweroff = 'destroy'
on_reboot
= 'restart'
on_crash
= 'restart'
extra

= ''

Importante
Asegurese que los nombres de los arcihvos de imagenes existan y de que los nombres
de los dispositivos de bloque asignados a la VM coincidan con la configuracin de los
archivos fstab y grub dentro de la VM.
Note que cuando se usa pygrub para arrancar el kernel del DomU PV no es necesaria la
opcin extra ya que los parmetros extras al kernel deben ser agregados a la lnea kernel de
la configuracin de grub de la VM.
Desmonte la particin:
# umount /mnt/tmp/samba

Inicie la maquina virtual:


# xm create /etc/xen/samba.cfg -c

Instalacion con CD de instalacin QEMU/Pygrub


Creando maquinas virtuales PV CentOS con xen-tools y rinse
xen-tools permite la creacin de maquinas virtuales basadas en RPM como CentOS y
Fedora, la instalacin la realiza a travs de rinse un programa similar a debootstrap pero
para paquetes RPM.
Antes de instalar el programa rinse instale las dependencias para poder descargar y
manipular paquetes en formato RPM.
# apt-get install wget rpm

Primero instalaremos la ultima versin de rinse:


# cd /usr/src
# wget http://xen-tools.org/software/rinse/rinse-1.7.tar.gz

Descomprima e instale los archivos:


# tar -zxvf rinse-1.7.tar.gz
# cd rinse-1.7
# make install

El programa binario se instalo en /usr/sbin/rinse y usa como archivo de configuracin


principal /etc/rinse/rinse.conf, en el cual se definen los depositos para instalacin de
paquetes va YUM. Adems en el directorio /etc/rinse encontrar una lista con los
paquetes que cada perfil de distribucin deber instalar.
Las distribuciones actualmente soportadas por rinse son:

CentOS 4 y 5 tanto en 32 y 64 bit

Fedora Core 4, 5, 6, 7, 8, 9, y 10 tanto en 32 y 64 bit.

La configuracin actual entre xen-tools y rinse al parecer no esta del todo completa y
confunde a YUM cuando se instala una VM CentOS 5 i386 sobre un Dom0 con kernel
amd64 (x86_64), para corregir el problema, cree un script post instalacin para rinse para
deinir la plataforma predefinida para RPM.
# vim /usr/lib/rinse/centos-5/00local-post-install.sh

Nota
El script 00local-post-install.sh
Cree el script con el siguiente contenido:
#!/bin/sh
#
# 00local-post-install.sh
#
prefix=$1
if [ ! -d "${prefix}" ]; then
echo "Serious error - the named directory doesn't exist."
exit
fi
#
#
#

Set rpm platform file

echo "

Setting rpm platform file"

if [ "${ARCH}" = "i386" ]; then


echo "i686-redhat-linux" > $prefix/etc/rpm/platform
elif [ "${ARCH}" = "amd64" ]; then
echo "x86_64-redhat-linux" > $prefix/etc/rpm/platform
# If not --arch argument then use host plattform using uname -m
elif [ -z "${ARCH}" ]; then
UNAME_ARCH=`uname -m`
if [ "${UNAME_ARCH}" = "i686" ]; then
echo "i686-redhat-linux" > $prefix/etc/rpm/platform
elif [ "${UNAME_ARCH}" = "x86_64" ]; then
echo "x86_64-redhat-linux" > $prefix/etc/rpm/platform
else
echo "Unknown kernel architecture ${UNAME_ARCH}."
echo "Please report this as bug to xen-tools-dev@xen-tools.org."
fi
fi

Se desea agregar paquetes adicionales a la instalacin base de Centos 5.X agrege el nombre
del paquete al archivo /etc/rinse/centos-5.packages, en dicho archivo se almacena
una lista de paquetes a instalar, por ejemplo:
#
#
#
#

echo
echo
echo
echo

"net-snmp-libs" >> /etc/rinse/centos-5.packages


"net-snmp-perl" >> /etc/rinse/centos-5.packages
"net-snmp-utils" >> /etc/rinse/centos-5.packages
"net-snmp" >> /etc/rinse/centos-5.packages

Ya que la arquitectura ahora ser definia a travs del script 00local-post-install.sh ya no


ser necesario ejecuta el script hook por lo que puede eliminarlo para que no interfiera con
el archivo de plataforma para rpm.
# rm -rf /usr/lib/xen-tools/centos-5.d/15-setup-arch

Si usa rinse para crear maquina virtuales sobre Ubuntu Server y Xen 3.2 entonces tendr
que modificar el hook que configura la terminal serial para el DomU ya que por default es
hvc0 y en xen 3.2 se debe usar xvc0, por lo que modifique el script hook 30-disablegettys, por ejemplo para CentOS 5:
# vim /usr/lib/xen-tools/centos-5.d/30-disable-gettys

Y cambie la lnea:
#
# Do the transformation.
#
sed -i -e 's/^\([2-6].*:respawn*\)/#\1/' -e 's/^T/#\t/' -e
's/tty1$/hvc0/' ${prefix}/etc/inittab

Por:
#
# Do the transformation.
#
sed -i -e 's/^\([2-6].*:respawn*\)/#\1/' -e 's/^T/#\t/' -e
's/tty1$/xvc0/' ${prefix}/etc/inittab

Si va a instalar distribuciones Fedora entonces edite el script /usr/lib/xentools/fedora-core-6.d/30-disable-gettys para que aplique para cualquier versin.
Opcionalmente tambin puede usar el parmetro --serial_device de xen-create-image
para definir el nombre de la termina serial para el DomU.
Hay que modificar el script /usr/bin/xen-create-image para permitir usar xvcX como
valor para el parmetro --serial_device.
Modifique el bloque que valida la entrada:
serialDev => {
check
=> qr/^(?:\/dev\/)?(?:tty|hvc)[0-9]+$/,
message => "must be a serial device (tty*, hvc*).\n",
},

Cambielo por:
serialDev => {
check
=> qr/^(?:\/dev\/)?(?:tty|[xh]vc)[0-9]+$/,

xvc*).\n",
},

message => "must be a serial device (tty*, hvc* or

Para crear una maquina virtual para CentOS 5 i386 con xen-create-image use el metodo de
instalacin rinse, por ejemplo
# xen-create-image --dist=centos-5 --arch=i386
--hostname=fs1.example.com \
--install-method=rinse --dir=/xen-images --size=4Gb --swap=512Mb
--memory=256Mb --dhcp --passwd

El comando anterior crear una maquina virtual PV Linux usando archivos de imagen
como medio de almacenamiento, crear los archivos:

/xen-images/domains/fs1.example.com/swap.img

/xen-images/domains/fs1.example.com/root.img

Y adems crear el archivo de configuracin /etc/xen/fwproxy.cfg con el siguiente


contenido:
name

= 'fs1.example.com'

kernel
ramdisk

= '/boot/vmlinuz-2.6.24-28-xen'
= '/boot/initrd.img-2.6.24-28-xen'

vcpus
memory

= '1'
= '256'

root
= '/dev/xvda2 ro'
disk
= ['file:/xenimages/domains/fs1.example.com/swap.img,xvda1,w',
'file:/xenimages/domains/fs1.example.com/disk.img,xvda2,w']
dhcp
vif

= 'dhcp'
= [ 'mac=00:16:3E:42:92:E6' ]

on_poweroff = 'destroy'
on_reboot
= 'restart'
on_crash
= 'restart'

Rinse por default utiliza los servidores espejo definidos en el archivo vim
/etc/rinse/rinse.conf, por ejemplo, el mirror para CentOS 5 es:
[centos-5]
mirror
= http://mirror.bytemark.co.uk/centos/5/os/i386/CentOS/
mirror.amd64 = http://mirror.bytemark.co.uk/centos/5/os/x86_64/CentOS/

Consulte la lista de mirrors en el sitio de centos para localizar uno ms cercano.

Creando maquinas virtuales Xen HVM Windows


En esta seccin veremos como instalar una maquina virtual con Windows Server 2003
32bits, este sistema operativo solo puede ser instalado con sistemas con soporte HVM.
Instalaremos la maquina virtual usando un archvo de imagen ISO.

Crearemos una maquina virtual HVM para el OS Windows 2003 Enterprise Edition
32bits

Se le asignarn 512MB de memoria

Tendr un disco duro de 10GB

Y se le asignar una intefaz de red virtual.

Adems, para mejorar el rendimiento para acceso a dispositivos de bloque e interfaces de


red instalaremos unos drivers PV para Windows, estos drivers son creados por miembros de
desarrolladores de Xen y son liberados bajo la licencia GPL.
Antes que nada crearemos el disco duro virtual para la instalacin de Windows, se
recomienda que se instale sobre particiones nativas o volumenes logicos LVM, en este caso
usaremos un volumen lgico LVM.
Creamos el volumen lgico para el disco C de Windows:
# lvcreate --name win2k3ED001-discoc --size 10G VGXen02

El nombre del dispositivo para el LVM ser: /dev/VGXen02/win2k3ED001-discoc.


Para el medio de instalacin use una imagen iso:
# losetup -r /dev/loop7 /xen-images/isos/win2k3-stdr-es-32bit.iso

Cuando asigne el disco para el cdrom use el dispositivo /dev/loop7.


A continuacin se muestra un archivo de configuracin til para instalar maquinas virtuales
HVM para Windows:
Cree el archivo de configuracin para la maquina virtual:
# vim /etc/xen/win.example.cfg

Con el siguiente contenido:


name

= 'win.example.com'

kernel
builder

= '/usr/lib/xen/boot/hvmloader'
= 'hvm'

device_model

vcpus
memory

= '2'
= '1024'

acpi
apic

= '0'
= '0'

disk

= [

'/usr/lib/xen/bin/qemu-dm'

'phy:/dev/VGXen02/win2k3ED001-discoc,hda,w'
'phy:/dev/loop7,ioemu:hdc:cdrom,r',

]
vif

= [

'type=ioemu'

boot

= 'dc'

sdl

= '0'

vnc
vncviewer
vnclisten
vncpasswd
vncconsole

=
=
=
=
=

usb
usbdevice

= '1'
= 'tablet'

on_poweroff
on_reboot
on_crash

= 'destroy'
= 'restart'
= 'restart'

'1'
'0'
'0.0.0.0'
'123456'
'0'

En esta configuracin se define un dispositovo USB tipo tablet para asignar un


puntero/mouse a la maquina HVM, se usa el tipo tablet ya que bajo algunas circunstancias
el cursor se de sincroniza dentro de la HVM cuando se conecta por VNC.
Se recomienda que una vez que haya instalado el sistema operativo en la HVM DomU
desactive el uso de VNC y en su lugar active el servicio de escritorio remoto (RDP) en el
sistema operativo guest.
Inicie la maquina virtual con xm create, por ejemplo:
# xm create win.example.com.cfg
Using config file "/etc/xen/win.example.con.cfg".
VNC=1
Started domain win.example.com

Si activo el soporte VNC para la HVM DomU entonces Xen, a travs de qemu-dm crear
una instanca de VNC para conectarse a la maquina virtual.
A menos haya definido un puerto en especifico entonces la pridf -mer instanca HVM
abrir el puerto 5900, puede verlo con el comando netstat, por ejemplo:
# netstat -plutn | grep qemu-dm
tcp
0
0 0.0.0.0:5900
LISTEN
6320/qemu-dm

0.0.0.0:*

Use un cliente VNC para conectarse a la consola VNC de la HVM DomU para realizar el
proceso de instalacin, por ejemplo:
$ vncviewer localhost:5900

Si crea ms maquinas virtuales HVM use la opcin vncunused=1 para que use el siguiente
puerto disponible a partir del 5901, no te que cuando inicie la VM con xm create podr ver
el puerto al que se asocio la consola VNC.
Los drivers GPLPV permiten que Windows use los dispositivos de red y bloque en el
Dom0, en lugar de los dispositivos PCI virtuales provistos por QEMU. Esto da a Windows
un aumento de rendimiento substancial.
Los drivers GPLPV requiere de por lo menos una versin de Xen 3.2 o superior, estos
drivers han sido probados en Windows XP, 2003x32, 2003x64, y 2008x32. Al parecer

tambin funcionan en Windows 2008x64 y Vista. Algunos han reportado de que tambin
funcioan en Windows 2000 con algunos trucos, sin embargo no se proveen los binarios
para windows 2000.
Para ms informacin para instalar los drivers ParaVirtualized para Windows vaya a la
pgina del wiki de Xen XenWindowsGplPv.
El sitio para descargar los drivers GPLPV para Windows es:
http://www.meadowcourt.org/downloads/.
Hay un instalador por plataforma/arquitectura, nombrados como siguen:
gplpv_<chk/fre>_<platform>_<arch>_<version>.msi, cada opcin significa:

chk is a 'checked' build which contains debug info (please use these if you want any
assistance in fixing bugs)

fre is a 'free' build which contains no debug info

platform is 'wxp' for XP, 'wnet' for 2003, and 'wlh' for Vista/2008

arch is 'x86' for 32 bit and 'AMD64' for 64 bits

Por ejemplo, para Windows Server 2003 32-bit descargue el driver:


gplpv_2003x32_0.11.0.213.msi.
Se recomienda que vaya a la pgina del wiki XenWindowsGplPv/Installing para ver las
instrucciones de instalacin.
Basicamente descargue el instalador .msi en el Windows y ejecute el instalador, acepte la
instalacin de los drivers y reinicie el sistema para que detecte los nuevos dispositivos.
Una vez que ha instalado los drivers en Windows asegurese de quitar la opcin ioemu de la
definicin de interfaces de red, por ejemplo, si antes tena:
vif = [ 'type=ioemu, bridge=xenbr0, mac=00:16:3e:5e:76:50' ]

Ahora cambielo a:
vif = [ 'bridge=xenbr0, mac=00:16:3e:5e:76:50' ]

Verifique en el administrador de dispositivos que los drivers ya no aparecen como QEMU


para validar la instalacin de los drivers, adems la interfaz de red se convierte a 1Gbps.

Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se
aconseja que acceda a los siguientes recursos adicionales.

Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas
utilizados en este capitulo.

http://www.xen.org - Sitio oficial Xen

http://wiki.xensource.com/xenwiki/XenArchitecture?
action=AttachFile&do=get&target=Xen+Architecture_Q1+2008.pdf - Xen
Architecture Overview (February 2008)

http://wiki.xensource.com/xenwiki/XenKernelFeatures - Xen Kernel Features

http://tx.downloads.xensource.com/downloads/docs/user/ - Xen 3.0 Users' Manual

http://wiki.xensource.com - Xen.org Community Wiki

http://wiki.xensource.com/xenwiki/XenCommonProblems - Xen Wiki - Common


Problems

http://wiki.xensource.com/xenwiki/XenUsersQuestions - Xen Users Mailing List


Commonly Asked Questions

http://wiki.xensource.com/xenwiki/PyGrub- PyGrub

http://wiki.debian.org/PyGrub - Using pygrub to boot a domU kernel

http://wiki.xensource.com/xenwiki/VirtualFramebuffer - Xen Virtual Framebuffer

http://wiki.xensource.com/xenwiki/Books - Xen Books

http://www.xen.org/community/xenpapers.html - Xen.org Research Papers

http://wiki.debian.org/Debootstrap - Debootstrap

http://www.debian-administration.org/articles/426 - Installing new Debian systems


with debootstrap

http://xen-tools.noone.org/software/xen-tools - Xen Tools

http://xen-tools.noone.org/software/rinse - Rinse

http://blog.xen.org - Xen Community Blog

Pginas de manual
Para conocer ms sobre el uso y configuracin de los programas utilizados en el capitulo, se
recomienda leer los manuales relacionados.

uuidgen (1) - command-line utility to create a new UUID value

xmdomain.cfg (5) - xm domain config file format

lspci (8) - list all PCI devices

lsusb (8) - list USB devices

debootstrap (8) - Bootstrap a basic Debian system

xen-create-image (8) - Easily create new Xen instances with networking and
OpenSSH.

rinse (8) - RPM Installation Entity.

xm (1) - Xen management user interface

dd (1) - convert and copy a file

mkfs.ext3 (8) - create an ext2/ext3/ext4 filesystem

mke2fs (8) - create an ext2/ext3/ext4 filesystem

mkswap (8) - set up a Linux swap area

mount (8) - mount a filesystem

umount (8) - unmount file systems

losetup (8) - set up and control loop devices

chroot (8) - run command or interactive shell with special root directory

fstab (5) - static information about the filesystems

interfaces (5) - network interface configuration for ifup and ifdown

resolver (5) - resolver configuration file

Captulo 5. Administracin de maquinas y recursos


virtuales en Xen
Tabla de contenidos
Controlando el estado de las maquinas virtuales Xen
Usando la herramienta xm para controlar maquinas virtuales Xen
Arranque y apagado automtico de maquinas virtuales Xen
Administracin de recursos virtuales en Xen
Introduccin a la administracin de recursos de maquinas virtuales Xen
Asignacin de memoria a las maquinas virtuales Xen
Asignacin de CPUs virtuales a las maquinas virtuales Xen
Asignacin de dispositivos de bloque para maquinas virtuales Xen
Listando los dispositivos de bloque asignados a una maquina virtual Xen
Asignando un archivo de imagen como disco duro a una maquina virtual PV Linux
Asignando un disco duro o particin fsica a una maquina virtual
Asignando un volumen lgico LVM a una maquina virtual PV Linux
Asignando un volumen lgico LVM a una maquina virtual HVM Windows
Desconectando un dispositivo de bloque virtual de una maquina virtual
Administracin de interfaces de red para maquinas virtuales Xen
Respaldo y clonacin de maquinas virtuales Xen
Como respaldar maquinas virtuales basada en archivos
Verificaciones previas del hardware de la maquina virtual
Apagar la maquina virtual DomU
Crear respaldo de datos del archivo de imagen
Crear la maquina virtual
Como restaurar maquinas virtuales basada en archivos
Como respaldar maquinas virtuales basada en LVM
Verificaciones previas del hardware de la maquina virtual
Apagar la maquina virtual
Crear snapshot del volmen lgico del disco raz
Crear la maquina virtual
Crear respaldo de datos del snapshot
Eliminar el snapshot
Como restaurar maquinas virtuales basada en LVM
Como clonar una maquina virtual basada en LVM
Como convertir una maquina virtual de archivos a LVM
En esta seccin veremos la administracin de maquinas virtuales, tareas tales como:

Iniciar, apagar y reiniciar maquinas virtuales

Pausar y des pausar maquinas virtuales

Guardar y restaurar el estado de una maquina virtual

Controlar de forma esttica y dinmica la asignacin de recursos de las maquinas


virtuales

Respaldar, restaurar y clonar maquinas virtuales.

Todas las funciones se realizarn editando archivos de configuracin de domU y usando la


linea de comandos.

Controlando el estado de las maquinas virtuales


Xen
Xen incorpora la herramienta xm para la administracin de maquinas virtuales (domU), xm
se comunica con el demonio xend para el control de maquinas virtuales.

Usando la herramienta xm para controlar maquinas


virtuales Xen
El comando /usr/sbin/xm es instalado por el paquete xen-utils y esta configurado para que
solo root pueda ejecutarlo y realizar las tareas de administracin, a continuacin se listan
las tareas de administracin principales:
Usaremos la opcin list para ver el estado de las maquinas virtuales en ejecucin:
# xm list
Name
Time(s)
Domain-0
26793.9
domu-firewall
3219.9
domu-mail
3576.8
domu-web
4268.1
domu-hvmwin2k3
13352.7

ID

Mem VCPUs

State

1896

r-----

512

-b----

512

-b----

1024

-b----

2048

-b----

Las tareas que realizaremos de aqu en adelante sern en especifico para una VM, puede
hacer referencia a una VM a travs del nombre (columna Name) o por el identificador
(columna ID).
Use la opcin uptime para ver el tiempo de ejecucin (uptime) de una VM:
# xm uptime domu-firewall
Name
ubuntu-firewall

ID Uptime
1 136 days, 22:46:12

Use el comando shutdown para apagar una maquina virtual, por ejemplo:
# xm shutdown domu-hvmwin2k3

Nota
La opcin shutdown causa un apagado en limpio de la VM, ejem en Linux usa un
shutdown -h now.
Use la opcin pause para detener el la ejecucin de una VM, cuando pausa una VM los
recursos asignados siguen en uso, simplemente no se estn usando.
# xm pause domu-web

Use la opcin list para ver el estado de la VM:

# xm list domu-web
Name
Time(s)
domu-web
4268.3

ID
3

Mem VCPUs
1024

State
--p---

Para re anudar la ejecucin de una VM en estado pausado use la opcin unpause, por
ejemplo:
# xm unpause domu-web

Tambin puede guardar el estado de una maquina virtual, es decir, el estado de la memoria,
el estado de la maquina virtual se guardar en un archivo, por ejemplo:
# xm save ubuntu001 /var/lib/xen/save/ubuntu001.save

Nota
El tamao del archivo de estado ser igual al tamao de memoria asignada a la
maquina virtual por lo que considere el espacio necesario.
Cuando el estado de la maquina virtual sea guardado la maquina dejar de estar en
ejecucin y la memoria ser liberada para otras maquinas virtuales. Guardar el estado de
una maquina virtual sera el equivalente a hibernar una computadora en ejecucin.
Para restaurar el estado de la maquina virtual use xm restore, por ejemplo:
#xm restore /var/lib/xen/save/ubuntu001.save

Las conexiones de red pueden ser restauradas cuando la maquina virtual sea restablecida
siempre y cuando las sesiones TCP no hayan expirado.
Para ms informacin vea la pagina del manual xm(1).

Arranque y apagado automtico de maquinas


virtuales Xen
Si desea que una maquina virtual en especifico sea iniciada automticamente al inicio del
sistema cree un enlace simblico del archivo de configuracin de la DomU en el
directorio /etc/xen/auto, por ejemplo, si desea iniciar automticamente la maquina de
nombre ubuntu001 use:
# ln -s /etc/xen/ubuntu001.cfg /etc/xen/auto/

Nota
Si desea arrancar las maquinas virtuales en un orden en especifico, se recomienda que
agregue un sufijo nmerico al nombre del enlace simblico en /etc/xen/auto, por
ejemplo: 00fwproxy, 01ns1, 02ldap1, etc.
El script de control de ejecucin /etc/init.d/xendomains iniciar toda maquina virtual
que tenga un archivo de configuracin en /etc/xen/auto, si desea desactivar la ejecucin
automtica solo borre el enlace simblico.
El script de /etc/init.d/xendomains guardar el estado de las maquinas virtuales cuando
el host Xen sea apagado o re iniciado.

Si en lugar de guardar el estado (xm save) de las maquinas virtuales al apagar el servidor
Xen desea apagarlas va xm shutdown, edite el archivo de configuracin
/etc/default/xendomains para controlar la ejecucin del script
/etc/init.d/xendomains:
# vim /etc/default/xendomains

Deje vacio el valor de la variable XENDOMAINS_SAVE, por ejemplo:


## Type: string
## Default: /var/lib/xen/save
#
# Directory to save running domains to when the system (dom0) is
# shut down. Will also be used to restore domains from if #
XENDOMAINS_RESTORE
# is set (see below). Leave empty to disable domain saving on shutdown
# (e.g. because you rather shut domains down).
# If domain saving does succeed, SHUTDOWN will not be executed.
#
XENDOMAINS_SAVE=

Y cambie el valor de XENDOMAINS_RESTORE a falso, por ejemplo:


## Type: boolean
## Default: true
#
# This variable determines whether saved domains from XENDOMAINS_SAVE
# will be restored on system startup.
#
XENDOMAINS_RESTORE=false

Con este ltimo parmetro, al encender el servidor Xen, las maquinas sern iniciadas de
forma normal siempre y cuando haya un enlace simblico en /etc/xen/auto hacia el
archivo de configuracin original

Administracin de recursos virtuales en Xen


En este seccin veremos diferentes formas de administrar los recursos de maquinas
virtuales, por ejemplo:

Administracin de CPUs fsicos y virtuales para las maquinas virtuales Xen

Administracin de memoria para maquinas virtuales

Administracin de dispositivos de almacenamiento de diferentes tipos

Administracin de dispositivos de red

Los recursos los administraremos de forma esttica mediante los archivos de configuracin
y algunos otros de forma dinmica con el comando xm.

Introduccin a la administracin de recursos de maquinas virtuales


Xen
Xen provee las capacidades para el control dinmico de los recursos de las maquinas
virtuales, entre los recursos que podremos controlar son:
Memoria
Esttica en archivo de configuracin o dinmica con xm

CPU
Esttica en archivo de config o dinmica con xm
Discos duros
Esttica en archivo de config o dinmica con xm
Red
Esttica en archivo de config o dinmica con xm

Asignacin de memoria a las maquinas virtuales Xen


La asignacin de la memoria para las VMs se puede hacer por medio de dos directivas: mem
y max-mem, a continuacin se explican dichas opciones:
mem
Cantidad de memoria inicial en MB asignada a la VM cuando inicia
max-mem
Cantidad mxima de memoria que la VM esta permitida a usar
Por ejemplo, podramos configurar la maquina virtual con las siguientes opciones en el
archivo de configuracin:
memory = 512

Puede cambiar la memoria de una maquina con el comando xm mem-set, por ejemplo:
Vemos la memoria actual de la DomU:
# xm list ubuntu003
Name
Time(s)
ubuntu003
130.2

ID
2

Mem VCPUs
128

State

-b----

Mem VCPUs

State

Para asignar la memoria mxima de un Domu usamos:


# xm mem-max ubuntu003 256

Ahora puede configurar la memoria reservada para la DomU:


# xm mem-set ubuntu003 256

Ahora verificamos que la memoria se asigno:


# xm list ubuntu003
Name
Time(s)
ubuntu003
4.6

ID
7

256

-b----

Note que la memoria no ser automticamente asignada a las maquinas virtuales que estn
en ejecucin.
El uso de memoria del Domain-0 se puede controlar a travs del parmetro dom0_mem al
cargar el hypervisor Xen con grub, el valor se define en MegaBytes. Si desea controlar el
uso de memoria para el Domain0 agregue el parmetro dom0_mem a la lneaque carga el
hypervisor xen en grub, por ejemplo:

# vim /boot/grub/menu.lst

Para limitar el uso de memoria para el Domain0 a 1024MB cambie la lnea kernel de:
kernel

/xen-3.4.3.gz

Por:
kernel

/xen-3.4.3.gz dom0_mem=1024M

Es necesario reiniciar el servidor para que el cambio tome efecto, al reiniciar use xm list
# xm list 0
Name
Time(s)
Domain-0
477.9

ID
0

Mem VCPUs
1024

State

r-----

Ahora si puede usar xm info para ver el uso de memoria RAM disponible en el sistema, por
ejemplo:
# xm info | grep -E 'total_memory|free_memory'
total_memory
: 4095
free_memory
: 295

La memoria asignada tambin se reflejar en la salida del comando free en el Domain-0.

Asignacin de CPUs virtuales a las maquinas virtuales Xen


Las maquinas virtuales Xen son iniciadas con un CPU virtual (vcpu) por default, puede ver
los vcpu de un DomU, usando:
# xm vcpu-list ubuntu001
Name
Affinity
ubuntu001
cpu

ID

VCPU

CPU State
1

-b-

Time(s) CPU
158.2 any

En este caso nos muestra que el VCPU 0 corre en el CPU fsico 0, por default Xen
balancear los vcpus en todos los cpus fsicos.
Para asignar 2 vcpus a un DomU use:
# xm vcpu-set ubuntu001 2

Puede verificarlo con:


Tenemos una maquina virtual que se inicio con la siguientes opciones:
vcpus = '2'

Al iniciarla ver esta informacin:


# xm vcpu-list ubuntu003
Name
Affinity
ubuntu003
cpu
ubuntu003
cpu

ID

VCPU

CPU State

Time(s) CPU

16

-b-

0.6 any

16

-b-

1.0 any

Recuerde que los vcpus son balanceados en los dos cpus fsico, vuelva a ejecutar xm vcpulist y lo ver:
# xm vcpu-list ubuntu003
Name
Affinity
ubuntu003
cpu
ubuntu003
cpu

ID

VCPU

CPU State

Time(s) CPU

16

-b-

2.4 any

16

-b-

2.2 any

Si desea amarrar un CPU virtual en un CPU fsico use xm vcpu-pin, por ejemplo
amarraremos el vcpu 1 al CPU fsico 1:
# xm vcpu-pin ubuntu003 1 1

Y lo verificamos con:
# xm vcpu-list ubuntu003
Name
Affinity
ubuntu003
cpu
ubuntu003

ID

VCPU

CPU State

Time(s) CPU

16

-b-

3.3 any

16

---

3.1 1

Si desea asignar un solo vcpu a un DomU, por ejemplo queremos quitar un vcpu de un
DomU que arranco con dos, usamos:
# xm vcpu-set ubuntu003 1

Lo confirmamos con:
# xm vcpu-list ubuntu003
Name
Affinity
ubuntu003
ubuntu003

ID

VCPU

16
16

0
1

CPU State
0
-

-b--p

Time(s) CPU
4.3 0
4.0 1

El uso de CPUs fisicos y virtuales del Domain-0 se puede controlar a travs de la


configuracin del demonio xend y de los parmetros dom0_max_vcpus y dom0_vcpus_pin
cargar el hypervisor Xen con grub.
Para controlar el uso de CPUs fisicos para el Domain-0 cambie el parmetro (dom0-cpus)
en el archivo de configuracin /etc/xen/xend-config.sxp, por ejemplo:
# vim /etc/xen/xend-config.sxp

Si desea lmitar el uso de CPUs fsicos a 1 cambie dom0-cpus a 1, por ejemplo:


# In SMP system, dom0 will use dom0-cpus # of CPUS
# If dom0-cpus = 0, dom0 will take all cpus available
(dom0-cpus 1)

Nota
El valor predeterminado es 0, el cual indifca que no hay lmite de CPUs fsicos para el
Domain-0.

Si desea controlar el uso mximo de vCPUs para el Domain-0 agregue el parmetro


dom0_max_vcpus a la lneaque carga el hypervisor xen en grub, por ejemplo:
# vim /boot/grub/menu.lst

Para limitar el uso de vCPUs para el Domain-0 a 1 cambie la lnea kernel de:
kernel

/xen-3.4.3.gz

Por:
kernel

/xen-3.4.3.gz dom0_max_vcpus=1

Es necesario reiniciar el servidor para que el cambio tome efecto, al reiniciar use xm vcpulist para validar el uso de CPUs del Domain-0, por ejemplo:
# xm vcpu-list 0
Name
Affinity
Domain-0

ID

VCPU

CPU State
0

r--

Time(s) CPU
480.7 0

Adicionalmente puede usar el parmetro dom0_vcpus_pin para amarrar el VCPU al primer


CPU fisico.

Asignacin de dispositivos de bloque para maquinas virtuales Xen


Para asignar discos duros podremos hacerlo de forma esttica y dinmica, solo las
maquinas PV podrn hacer uso de la conexin dinmica de discos duros virtuales.
Los comandos que usaremos para administrar los dispositivos de almacenamiento son:
xm block-list
Lista los dispositivos de bloque virtuales para un dominio, el formato es:
# xm block-list [-l|--long] domain-id

xm block-attach
Crea un nuevo dispositivo de bloque virtual, este comando generar un evento
hotplug en el dominio, el formato es:
# xm block-attach domain-id be-dev fe-dev mode [bedomain-id]

xm block-detach
Desconecta un dispositivo de bloque virtual del domU, si el disco duro esta ocupado
o el domU se quedo colgado la desconexin del disco fallar, puede forzar la
desconexin con .--force, lo cual podr causar errores de I/O en el dominio, el
formato de uso es:
# xm block-detach domain-id devid

Ahora si listamos los dispositivos de bloque que el DomU tiene en uso:


En el DomU verifique con fdisk -l que ya no aparece el disco.
Listando los dispositivos de bloque asignados a una maquina virtual Xen
Para listar los dispositivos de bloque asignados a un DomU use el comando xm block-list,
por ejemplo:
# xm block-list ubuntu003

Vdev BE handle state evt-ch ring-ref BE-path


51713
0
0
4
6
8
/local/domain/0/backend/vbd/2/51713
51714
0
0
4
7
9
/local/domain/0/backend/vbd/2/51714

Asignando un archivo de imagen como disco duro a una maquina virtual PV


Linux
Para asignar un disco duro basado en imgenes de forma esttica use:
disk

= [
]

'tap:aio:/xen/ubuntu003-xvdd.img,xvdd,w',

Cuando el DomU sea iniciado reconocer el disco duro /dev/xvdd y tendr acceso de
escritura.
Para agregar el disco de forma dinmica mientras el DomU esta corriendo use:
# xm block-attach ubuntu003 tap:aio:/xen/ubuntu003-xvdd.img /dev/xvdd w

Este disco duro podr ser usado como cualquier disco duro, es decir, podr crear
particiones, crear sistemas de archivos, etc.
Asignando un disco duro o particin fsica a una maquina virtual
Para asignar un disco duro o particin fsica de forma esttica a un DomU PV/HVM use:
disk

= [
]

'phy:/dev/sda9,xvda9,w',

Cuando el DomU sea iniciado reconocer este disco como /dev/xvda9 y tendr acceso de
escritura.
SI desea asignar el volumen lgico de forma dinmica, es decir, mientras el DomU esta en
ejecucin use:
# xm block-attach ubuntu003 phy:/dev/sda9 /dev/xvda9 w

El comando anterior generar una llamada de hotplug en el DomU para agregar el disco
duro en caliente.
Asignando un volumen lgico LVM a una maquina virtual PV Linux
Para asignar un volumen lgico LVM de forma esttica a un DomU use:
disk

= [
]

'phy:/dev/VGXen01/ubuntu001-var,xvdc,w',

Cuando el DomU sea iniciado reconocer este disco como /dev/xvdc y tendr acceso de
escritura.
SI desea asignar el volumen lgico de forma dinmica, es decir, mientras el DomU esta en
ejecucin use:
# xm block-attach ubuntu003 phy:/dev/VGXen01/ubuntu001-var /dev/xvdc w

El comando anterior generar una llamada de hotplug en el DomU para agregar el disco
duro en caliente.
Asignando un volumen lgico LVM a una maquina virtual HVM Windows
Creamos el Volumen:
root@xhic:~# lvcreate -L 20000 -n domu-hvmwin2k3-discod VGXen01
Logical volume "domu-hvmwin2k3-discod" created

Ahora lo agregamos a la configuracin de la maquina virtual, por ejemplo la maquina


/etc/xen/zion.cfg tiene esta configuracin:
disk = [

'phy:/dev/VGXen01/domu-hvmwin2k3-discoc,hda,w',
'phy:/dev/VGXen01/domu-hvmwin2k3-discod,hdb,w'

Ahora, deber de apagar la maquina a la cual le agregaremos el disco para que inicie con el
nuevo disco duro y el sistema lo detecte y lo configure.
Importante
Si esta usando los driver Paravirtualizados se recomienda que arranque Windows con
el Kernel Normal.
Cuando inicie la maquina, vaya al Administrador de Dispositivos y ver un nuevo disco
QEMU como se muestra en la imagen de abajo.

El disco fue detectado correctamente y esta listo para ser inicializado.


Vaya al administrador de discos en Control Panel=> Administrative Tools=> Computer
Management, despus se va a la rama de Storage=>Disk Management, el sistema
automticamente detectar un nuevo disco y lanzar el asistente de inicializacin de discos,
por ahora cancele lo y veamos como se ve el disco:

Ahora inicializaremos el disco, de clic derecho sobre Disc 1 y seleccionamos la opcin ,


como se muestra en la siguiente imagen:

Le solicitar seleccionar el disco a inicializar como se muestra en la siguiente imagen:

El disco aparecer como inicializado pero sin ser asignado a alguna particin, de hecho el
disco no esta formateado, por lo que formatear la particin ser el siguiente paso.
De clic sobre el espacio no asignado y de clic en New Partition como se ve en la siguiente
imagen:

Ahora se lanzar el asistente para crear la nueva particin, seguiremos el asistente de


acuerdo a como se muestra en la siguiente imagen, dar click en Next > para iniciar.

Ahora nos pregunta el tipo de particin que se crear en el nuevo disco, seleccionamos el
tipo Primary partition.

En este paso nos pregunta el tamao que se asignar a la nueva particin, en este caso
dejaremos el tamao predeterminado para que cree una particin de todo el tamao.

Ahora debemos de asignar una letra de unidad a la nueva particin, usaremos la letra de
unidad D.

El siguiente paso es seleccionar las opciones de formato y etiqueta que se usaran para crear
la nueva particin, dejemos el sistema de archivos: NTFS, el Allocation unit size: Default,
y en la etiqueta asignemos un nombre descriptivo para este disco, en nuestro caso usaremos
la etiqueta datos.

Ahora de clic en Next > para ver el resumen de las opciones que se usarn para crear la
nueva particin, si desea cambiar algo vaya para atrs de lo contrario haga clic en Finish.

Despus de dar clic en el botn Finish el sistema iniciar a formatear la particin, podemos
verlo en la siguiente imagen:

Al terminar de formatear el disco se ver as:

Y listo, ahora podr ir a My Computer y ver el nuevo disco D con la etiqueta datos, vea
tambin el tamao.

Si en este sistema esta usando driver Paravirtualizados y reiniciar el sistema con la


opcin /GPLPV su sistema no reconocer el nuevo disco, es necesario que re instale los

driver para virtualizados y re inicie el sistema con la opcin /GPLPV, despus ver el
nuevo disco, por ejemplo:

Desconectando un dispositivo de bloque virtual de una maquina virtual


Para desconectar un dispositivo de bloque de una maquina DomU en ejecucin primero
identifique el ID del dispositivo de bloque usando xm block-list, por ejemplo:
# xm block-list ubuntu003
Vdev BE handle state evt-ch ring-ref BE-path
(...)
51760
0
0
4
10
830
/local/domain/0/backend/tap/2/51760

Desconectaremos el disco con ID 51760 que es un disco tipo tap:aio.


# xm block-detach ubuntu003 51760

Puede verificar que el disco fue desconectado vuelva a usar xm block-list.

Administracin de interfaces de red para maquinas virtuales Xen


Para asignar una interfaz de red virtual a un Domu de forma esttica puede usar la
configuracin:
vif

= [ 'mac=00:16:3E:5A:0C:56' ]

La configuracin anterior por default asignar una interfaz de red amarrada a el bridge eth0,
y en la maquina virtual tendr eth0, puede especificar el bridge al que esta amarrada la
maquina virtual, por ejemplo:
vif =

[ 'mac=00:16:3e:12:62:89, bridge=bridge1' ]

Tambin puede asignar mltiples interfaces de red a un domU, usando:


vif

= [

'mac=00:16:3E:A0:71:FE, bridge=eth0',
'mac=00:16:3e:0f:72:d9, bridge=eth1'
]

En la configuracin anterior, el DomU tendr asignadas dos interfaces de red, eth0


amarrada al bridge eth1 y eth1 amarrada al bridge eth1.
Para administrar las interfaces de red use los comandos:
xm network-list
Lista las interfaces virtuales de red para una maquina virtual, la sintaxis del
comando sera:
# xm network-list [-l|--long]> domain-id

xm network-attach
Agrega una interfaz de red virtual a un domU, la sintaxis es:
# xm network-attach domain-id [script=scriptname] [ip=ipaddr]
[mac=macaddr] [bridge=bridge-name] [backend=bedomain-id]

xm network-detach
Remueve una interfaz de red virtual de un DomU, la sintaxis es:
# xm network-detach domain-id devid

Para listar las interfaces de red virtuales de un DomU use:


# xm network-list ubuntu003
Idx BE
MAC Addr.
handle state evt-ch tx-/rx-ring-ref BE-path
0
0 00:16:3e:22:53:b7
0
4
8
769 /768
/local/domain/0/backend/vif/2/0

La ruta /local/domain/0/backend/vif/2/0 indica el Device ID, para prximas referencias


usaremos: solo el ltimo nmero.
Como vemos solo tiene una interfaz de red.
Para agregar una nueva interfaz de red use xm network-attach:
# xm network
attach [Dom ID] [script=nombre_del_script] [ip=dir_ip] [mac=dir_mac]
[bridge=nombre_del_bridge] [backend=bedomainid]

Por ejemplo, agregamos una nueva interfaz de red virtual en el mismo bridge/switch.
# xm network-attach ubuntu003 bridge=eth1 mac=00:16:3e:0b:0d:83

Nota
Use el script macgen.py para asignar un MAC Address fijo
Haga un listade de las interfaces de la VM para verificar que la interfaz fue agregada.
# xm network-list ubuntu003
Idx BE
MAC Addr.
handle state evt-ch tx-/rx-ring-ref BE-path
0
0 00:16:3E:5A:0C:56
0
4
7
768 /769
/local/domain/0/backend/vif/1/0
1
0 00:16:3e:0b:0d:83
1
4
8
1280 /1281
/local/domain/0/backend/vif/1/1

Vea que ya tiene dos interfaces de red.


En la maquina DomU vea que hay una interfaz adicional (desactivada):
[root@ubuntu003 ~]# ifconfig -a
eth0
Link encap:Ethernet HWaddr 00:16:3E:06:03:40
inet addr:192.168.1.139 Bcast:192.168.1.255
Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe06:340/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:241 errors:0 dropped:0 overruns:0 frame:0
TX packets:164 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:51393 (50.1 KiB) TX bytes:19745 (19.2 KiB)
eth1

Link encap:Ethernet HWaddr 00:16:3e:0b:0d:83


BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Use las herramientas de configuracin de sus sistema para configurar la nueva interfaz de
red.
$ man ifconfig
$ man ip
$ man route

Debian: /etc/network/interfaces RHEL/CentOS: /etc/sysconfig/network-scripts/ifcfg-ethX


Removiendo una interfaz de red virtual:
Para nuestro ejemplo el DomU tiene dos VIF:
# xm network-list ubuntu003
Idx BE
MAC Addr.
handle state evt-ch tx-/rx-ring-ref BE-path
0
0 00:16:3E:5A:0C:56
0
4
7
768 /769
/local/domain/0/backend/vif/1/0
1
0 00:16:3e:0b:0d:83
1
4
8
1280 /1281
/local/domain/0/backend/vif/1/1

Eliminaremos la VIF 1:

# xm network-detach ubuntu003 1

Verifique que ya no la tiene tanto con xm network-list en el Domain0 y con ifconfig -a


desde el DomU.

Respaldo y clonacin de maquinas virtuales Xen


En esta seccin veremos diferentes procedimientos para respaldar y clonar maquinas
virtuales usando diferentes medios de almacenamiento, nos enfocaremos en VBD basados
en archivos y en volmenes lgicos LVM.

Como respaldar maquinas virtuales basada en archivos


En esta seccin veremos el procedimiento para respaldar una maquina virtual con discos
duros virtuales basada en archivos de imagen, el respaldo de los datos lo haremos
realizando copias completas de los archivos o copiando su contenido.
En este ejercicio respaldaremos la maquina virtual fs2.example.com, las operaciones que
realizaremos son:

Verificaciones previas del hardware de la maquina virtual.

Apagar la maquina virtual.

Crear respaldo del archivo de imagen.

Crear la maquina virtual.

En las siguientes secciones veremos los procedimientos uno por uno.


Verificaciones previas del hardware de la maquina virtual
Para agilizar el procedimiento del respaldo es aconsejable realizar las siguientes
operaciones:

Verificar cuales son los archivos de imagen asignados a la maquina virtual.

Verificar que hay espacio disponible en medio de respaldo.

Primero debemos de identificar el o los volumens lgicos asignado a la maquina virtual, en


el archivo de configuracin /etc/xen/fs3.example.com.cfg veamos la directiva disk:
disk

= [
'tap:aio:/xen/storage/0/images/fs2.example.com/disk.img,

xvda1,w',

'tap:aio:/xen/storage/0/images/fs2.example.com/swap.img,

xvda2,w',
]

La informacin referente a los discos que nos es relevante es:

Archivo de imagen para la raz: /xen/storage/0/images/fs2.example.com/disk.img

Archivo de imagen para el swap;


/xen/storage/0/images/fs2.example.com/swap.img
Nota
El archivo de imagen para el disco swap no lo respaldaremos ya que no contiene datos.

Verifique que tiene espacio suficiente para respaldar el archivo en el medio de respaldo.

Apagar la maquina virtual DomU


Ahora que confirmamos que hay espacio suficiente para respaldar el archivo, apagaremos
la maquina virtual fs2.example.com:
# xm shutdown fs2.exaple.com

Esperar unos segundos y verificar que ya no este corriendo:


# xm list | grep fs2

Ahora si puede respaldar de forma segura el archivo de imagen.


Crear respaldo de datos del archivo de imagen
Usaremos dos mtodos diferentes para respaldar los datos contenidos en el archivo de
imagen, el primer es copiando el archivo de imagen completo el comando cp, la imagen la
guardaremos en el directorio /mnt/backup/vms/:
# cp /xen/storage/0/images/fs2.example.com/disk.img
/mnt/backup/vms/fs2.example.com-disk-`date +%d-%m-%Y`.img

La copia creada es una copia exacta del archivo original en el momento en que se apago la
maquina virtual, en caso de desastre simplemente restaure el archivo.
El segundo mtodo es montanto el archivo de imagen en un directorio temporal y respaldar
su contenido con tar, primero creamos el directorio temporal:
# mkdir -p /mnt/tmp/vms/fs2.example.com-disk

Montamos el Snapshot:
# mount /xen/storage/0/images/fs2.example.com/disk.img
/mnt/tmp/vms/fs2.example.com-disk

Ahora respaldamos los datos del directorio /mnt/tmp/vms/fs2.example.com-disk


usando el comando tar:
# tar -jcvf /mnt/backup/vms/fs2.example.com-disk-`date +%d-%m%Y`.tar.bz2 /mnt/tmp/vms/fs2.example.com-disk

En caso de desastre y tenga que restaurar el disco, monte el archivo original en un punto de
montaje temporal, elimine su contenido y extraiga el contenido del archivo tar.
Crear la maquina virtual
Ahora que hemos creado el snapshot es seguro iniciar/crear la maquina virtual usando el
comando xm:
# xm create fs2.example.com.cfg

Despus de unos segundos verifique que la maquina este corriendo:


# xm list fs2.example.com
Name
Time(s)
fs2.example.com
0.2

ID
6

Mem VCPUs
512

Como restaurar maquinas virtuales basada en archivos

State
-b----

Como respaldar maquinas virtuales basada en LVM


En esta seccin veremos el procedimiento para respaldar una maquina virtual con discos
duros virtuales basada en volmenes lgicos LVM, el respaldo de los datos lo haremos
usando snapshots LVM para reducir el tiempo que permanece abajo la maquina virtual ya
que es ms rpido que copiar un archivo de imagen completo.
En este ejercicio respaldaremos la maquina virtual fs3.example.com, las operaciones que
realizaremos son:

Verificaciones previas del hardware de la maquina virtual.

Apagar la maquina virtual.

Crear snapshot del volmen lgico del disco raz.

Crear la maquina virtual.

Crear respaldo de datos del snapshot.

Eliminar el snapshot.

En las siguientes secciones veremos los procedimientos uno por uno.


Verificaciones previas del hardware de la maquina virtual
Para agilizar el procedimiento del respaldo es aconsejable realizar las siguientes
operaciones:

Verificar cuales son los volmens lgicos asignados a la maquina virtual.

Verificar el espacio disponible del Volume Group para crear el snapshot.

Verificar que hay espacio disponible en medio de respaldo.

Primero debemos de identificar el o los volumens lgicos asignado a la maquina virtual, en


el archivo de configuracin /etc/xen/fs3.example.com.cfg veamos la directiva disk:
disk

= [
]

'phy:/dev/VGXen02/fs3.example.com-disk,xvda2,w',
'phy:/dev/VGXen02/fs3.example.com-swap,xvda1,w',

La informacin referente a los discos que nos es relevante es:

Nombre del Volume Group: /dev/VGXen02

Volmen Lgico para la raz: /dev/VGXen02/fs3.example.com-disk

Volmen Lgico para datos: /dev/VGXen02/fs3.example.com-swap


Nota
El volmen lgico para el disco swap no lo respaldaremos ya que no contiene datos.

Usando el comando lvdisplay veamos la informacin del volmen lgico para el disco raz:
# lvdisplay /dev/VGXen02/fs3.example.com-disk
--- Logical volume --LV Name
/dev/VGXen02/fs3.example.com-disk
VG Name
VGXen02
LV UUID
dyr3dw-9uhq-Va1z-9FSf-CBah-H0oH-0vk4dr
LV Write Access
read/write

LV Status
# open
LV Size
Current LE
Segments
Allocation
Read ahead sectors
Block device

available
0
4.00 GB
1024
1
inherit
0
252:3

El campo LV Size nos indica que el tamao del volumen lgico de 4.00 GB.
Ussando el comando vgdisplay verifiquemos el espacio disponible para asignacin en el
Volume Group /dev/VGXen02:
# vgdisplay VGXen02
--- Volume group --VG Name
System ID
Format
Metadata Areas
Metadata Sequence No
VG Access
VG Status
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size
PE Size
Total PE
Alloc PE / Size
Free PE / Size
VG UUID

VGXen02
lvm2
1
3
read/write
resizable
0
2
0
0
1
1
74.50 GB
4.00 MB
19073
1056 / 4.12 GB
18017 / 70.38 GB
FCCGFT-dLM2-WNG4-UKDd-6M4i-dc9W-w0NHbM

Veamos que el campo Free PE / Size nos muestra que hay 70.38 GB de espacio disponible,
lo cual es suficiente para crear el snapshot.
Apagar la maquina virtual
Ahora que confirmamos que hay espacio suficiente para crear el snapshot en el Volume
Group /dev/VGXen02, apagaremos la maquina virtual fs3.example.com:
# xm shutdown fs3.exaple.com

Esperar unos segundos y verificar que ya no este corriendo:


# xm list | grep fs3

Una vez que haya verificado que la maquina virtual no esta en ejecucin procesa con la
creacin del snapshot del volmen lgico /dev/VGXen02/fs3.example.com-disk.
Crear snapshot del volmen lgico del disco raz
Use el comando lvcreate para crear el snapshot del volmen lgico
/dev/VGXen02/fs3.example.com-disk, el nombre del snapshot ser
/dev/VGXen02/fs3.example.com-disk-snap:

# lvcreate --size 4G --snapshot --name /dev/VGXen02/fs3.example.comdisk-snap /dev/VGXen02/fs3.example.com-disk


Logical volume "/dev/VGXen02/fs3.example.com-disk" created

Usando el comando lvs listamos los volmens lgicos y confirmamos que se creo el
snapshot:
# lvs
LV
Snap% Move Log Copy%
fs3.example.com-disk
fs3.example.com-disk-snap
0.00
fs3.example.com-swap

VG

Attr

LSize

VGXen02 owi-aVGXen02 swi-a-

Origin

4.00G
4.00G fs3.example.com-disk

VGXen02 -wi-a- 128.00M

En el listado anterior podemos ver que el LV fs3.example.com-disck-snap usa como origen


al LV fs3.example.com-disk.
Crear la maquina virtual
Ahora que hemos creado el snapshot es seguro iniciar/crear la maquina virtual usando el
comando xm:
# xm create fs3.example.com.cfg

Despus de unos segundos verifique que la maquina este corriendo:


# xm list fs3.example.com
Name
Time(s)
fs3.example.com
0.2

ID
6

Mem VCPUs
512

State
-b----

Ahora que tenemos una copia consistente de el volmen lgico sigamos con el respaldo.
Crear respaldo de datos del snapshot
Usaremos dos mtodos diferentes para respaldar los datos contenidos en el snapshot, el
primer es creando un archivo de imagen del snapshot /dev/VGXen02/fs3.example.comdisk-snap usando el comando dd, la imagen la guardaremos en el directorio
/mnt/backup/vms/:
# dd if=/dev/VGXen02/fs3.example.com-disk-snap
of=/mnt/backup/vms/fs3.example.com-disk-`date +%d-%m-%Y`.img

La imagen creada es una copia exacta del volmen lgico original en el momento en que se
apago la maquina virtual, en caso de desastre puede restaurar el LV usando dd en la forma
inversa.
El segundo mtodo es montanto el snapshot en un directorio temporal y respaldar su
contenido con tar, primero creamos el directorio temporal:
# mkdir -p /mnt/tmp/vms/fs3.example.com-disk

Montamos el Snapshot:
# mount /dev/VGXen02/fs3.example.com-disk-snap
/mnt/tmp/vms/fs3.example.com-disk

Ahora respaldamos los datos del directorio /mnt/tmp/vms/fs3.example.com-disk


usando el comando tar:
# tar -jcvf /mnt/backup/vms/fs3.example.com-disk-`date +%d-%m%Y`.tar.bz2 /mnt/tmp/vms/fs3.example.com-disk

En caso de desastre y tenga que restaurar el disco, monte el volmen lgico original en un
punto de montaje temporal, elimine su contenido y extraiga el contenido del archivo tar.
Eliminar el snapshot
Para evitar problemas de rendimiento al estar usando el volumen original, y ya que el
respaldo del snapshot ya fue realizado, eliminaremos el volumen snapshot, pero antes
debemos desmontarlo:
# umount /mnt/tmp/vms/fs3.example.com-disk

Ahora si elimine el snapshot:


# lvremove /dev/VGXen02/fs3.example.com-disk-snap
Do you really want to remove active logical volume "fs3.example.comdisk-snap"? [y/n]: y
Logical volume "fs3.example.com-disk-snap" successfully removed

Verificamos que se haya eliminado los volumens snapshot:


# lvs
LV
VG
Attr
LSize
Origin Snap%
Copy%
fs3.example.com-disk VGXen02 -wi-ao
4.00G
fs3.example.com-swap VGXen02 -wi-ao 128.00M

Move Log

Y por ltimo verificamos que el espacio asignado a los snapshots se haya liberado:
# vgdisplay VGXen02
--- Volume group --VG Name
System ID
Format
Metadata Areas
Metadata Sequence No
VG Access
VG Status
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size
PE Size
Total PE
Alloc PE / Size
Free PE / Size
VG UUID

VGXen02
lvm2
1
6
read/write
resizable
0
2
2
0
1
1
74.50 GB
4.00 MB
19073
1056 / 4.12 GB
18017 / 70.38 GB
FCCGFT-dLM2-WNG4-UKDd-6M4i-dc9W-w0NHbM

Como restaurar maquinas virtuales basada en LVM


Como clonar una maquina virtual basada en LVM

Como convertir una maquina virtual de archivos a LVM

Captulo 6. Resolucin de problemas


Tabla de contenidos
Resolucin de problemas relacionados al reloj de las maquinas virtuales
Resolucin de problemas relacionados a la red de las maquinas virtuales
Recursos adicionales
Sitios web
Pginas de manual
En esta seccin se describen problemas comunes y su resolucin.

Resolucin de problemas relacionados al reloj de


las maquinas virtuales
Resolucin de problemas relacionados a la red de
las maquinas virtuales
Recursos adicionales
Si desea obtener ms informacin sobre los programas y pginas de manual relacionadas se
aconseja que acceda a los siguientes recursos adicionales.

Sitios web
En las paginas listadas a continuacin encontrar mayor informacin sobre los programas
utilizados en este capitulo.

Pginas de manual
Para conocer ms sobre el uso y configuracin de los programas utilizados en el capitulo, se
recomienda leer los manuales relacionados y el contenido de los archivos de configuracin.

Apndice A. Historial de Revisiones


Historial de revisiones
Revisin 0.01
2009-03-30
Jorge Medina
Documento Inicial.
Revisin 0.02
2009-03-31
Jorge Medina
Re estructuracin de la TOC
Revisin 0.10
2009-03-32
Jorge Medina
Se agrego una lista inicial de tecnicas de virtualizacion.
Revisin 0.20
2009-05-15
Jorge Medina
Se re acomodaron las secciones y se agrego informacion para crear VM HVM con
windows 2003, como instalar drivers GPLPV, screenshots de como agregar un nuevo disco
en HVM Windows
Revisin 0.30
2009-08-23
Jorge Medina
Se actualizaron las entradas para grub
Se documentaron los servicios que iniciarn en automtico

Se documento pruebas iniciales de xm list


Revisin 0.40
2009-08-24
Jorge Medina
Se agregaron las secciones para la administracin de maquinas virtuales con xmSe
agregaron las secciones para administracion de recursos: memoria, cpus, discos, red
Se agregaron las secciones para administracion de recursos: memoria, cpus, discos, red
Revisin 0.50
2009-08-26
Jorge Medina
Se agreg informacin de requerimientos
Se agreg informacin de revisin inicial de la configuracin
Se agreg tema con informacin para configuraciones de red con bridges
Diagramas de configuraciones de red en bridge
Revisin 0.60
2010-06-27
Se extendio la introduccion
Se cambiaron algunos titulos de secciones
Nuevo contenido para controlar el estado de las VMs
Nuevo contenido para controlar los recursos de las VMs
Pequeas correcciones ortograficas
Revisin 0.70
2010-06-27
Jorge Medina
Se agregaron requerimientos de hardware y sistema
Mas informacion detallada para instalar xen en ubuntu hardy
Mas informacion para verificar el entorno de xen
Se agrego informacion para crear discos duros virtuales
Revisin 0.75
2010-06-27
Jorge Medina
Mas informacin de requisitos de recursos para vms
Se agrego como crear vm debian con debootstrap
Se agrego como crear vm centos con imagen stacklet
Se agrego info de configuracion de pygrub con centos
Revisin 0.80
2010-06-28
Jorge Medina
Mas infor en requerimientos de hardware y software
Se agrego informacion para instalar xen en centos5.x
Se re organizo la seccion de configuracioin de red
Informacion para instalar xen-tools para automatizar la creacion de VMs
Usando xen-tools y debootstrap para crear VMs Debian/Ubuntu
Usando xen-tools y rinse para crear VMs CentOS/Fedora
Revisin 0.82
2010-06-29
Jorge Medina
Introduccin para lac configuracin de los medios de almacena miento local para VMs
Ejemplos para crear discos duros virtuales basados en archivos de imagen
Ejemplos para crear discos duros virtuales basados en particiones linux nativas
Ejemplos parar crear discos duros virtuales basados en volumenes logicos LVM
Pequeos cambios en seccin de configuracin de red
Informacin ampliada de requisitos de la creacin de VMs
Informacin extendida sobre los archivos de configuracin de las VMs en Xen y
descripcin de los parametros mas usados - Ejemplo de PV DomU Linux

Mas informacin para la creacin de VMs PV DomU linux con bootstrap


Mas informacin para la creacin de VMs PV DomU linux con bootstrap
Mas informacin para la creacin de VMs PV DomU linux con bootstrap, xen-tools y rinse
Mas infor sobre instalacin de drivers GPLPV para windows
Mas referencias de sitios y manuales
Revisin 0.83
2010-07-19
Jorge Medina
Se agrego seccin para compilar xen 3.4.x en ubuntu server
Se agregaron recursos adicionales relacionados con la instalacin
Se agregaron mas dependencias para instalar xen-tools
Se agrego opcion para clocksource=jiffies en xen-tools
Revisin 0.84
2010-07-26
Jorge Medina
Actualizaciones en la configuracion de xen-tools con debootstrap y rinse con algunas
correcciones
Ms parmetros para archivos de configuracin para VMs
Se quitaron paquetes repetidos de la lista de dependencias para compilar Xen
Introduccin para instalar xen 3/4 en CentOS 5 desde gitco.de
Correcciones generales y se agregaron ms sitios de referenca
Ejemplos de instalacin de paquetes rpm adicionales con rinse
Revisin 0.85
2010-09-15
Jorge Medina
Nueva seccin con requerimientos de sistema: hardware y software.
Correcciones en la compilacin de xen 3.4.x.
Correcciones en la seccin de almacenamiento.
Correcciones en la seccin de configuraciones de red, agregue ejemplos para crear bridge
dummy y se revisaron y corrigieron los diagramas.
Agregue referencias a pginas de manual y archivos de configuracin usados en el
capitulo.
Pequeas correcciones en ligas a wiki de xen.
Correcciones y mayor explicacin para instalar un kernel xenlinux.
Mas opciones para revisar el funcionamiento de xen.
Se corrigieron algunas ligas a otras secciones externas.
Mas ejemplos de subcomandos de xm.
Se quito id del recursos adicionales para evitar conflictos.
Revisin 0.86
2010-10-21
Jorge Medina
Se agreg informacin para compilar kernel XenLinux 2.6.18-8 con Xen 3.4.3.
Se agreg recomendacin para actualizar la imagen initrd XenLinux 2.6.18-8.
Correccin en titulos de secciones.
Se actualizaron los ejemplos con kernel e initrd XenLinux 2.6.18-8
Se actualiz la introduccin al almacenamiento virtual en Xen.
Revisin 0.87
2010-10-21
Jorge Medina
Varias correcciones menores en textos y ejemplos.
Ms informacin sobre los parmetros en los archivos de configuracin de DomU.
Ms ejemplos de archivos de configuracin de PVM Linux y pygrub
Ms informacin para configurar la consola serial en los PVM Linux

Ms opciones de configuracion globales para xen-tools.


Revisin 0.88
2010-12-22
Jorge Medina
Actualizados los pasos para la instalacin de xen-tools 4.2 desde las fuentes.
Se amplio la informacin sobre la configuracin de xen-tools.
Algunas correcciones simples en los ejemplos de creacion de vms con xen-tools.

Apndice B. Licencia de Documentacin Libre de


GNU
Versin 1.2, Noviembre 2002
Tabla de contenidos
PREMBULO
APLICABILIDAD Y DEFINICIONES
COPIA LITERAL
COPIADO EN CANTIDAD
MODIFICACIONES
COMBINACIN DE DOCUMENTOS
COLECCIONES DE DOCUMENTOS
AGREGACIN CON TRABAJOS INDEPENDIENTES
TRADUCCIN
TERMINACIN
REVISIONES FUTURAS DE ESTA LICENCIA
ADENDA: Cmo usar esta Licencia en sus documentos
This is an unofficial translation of the GNU Free Documentation License into Spanish. It
was not published by the Free Software Foundation, and does not legally state the
distribution terms for documentation that uses the GNU FDL -- only the original English
text of the GNU FDL does that. However, we hope that this translation will help Spanish
speakers understand the GNU FDL better.
sta es una traduccin no oficial de la GNU Free Document License a Espaol
(Castellano). No ha sido publicada por la Free Software Foundation y no establece
legalmente los trminos de distribucin para trabajos que usen la GFDL (slo el texto de la
versin original en Ingls de la GFDL lo hace). Sin embargo, esperamos que esta
traduccin ayude los hispanohablantes a entender mejor la GFDL. La versin original de la
GFDL esta disponible en la Free Software Foundation.
Esta traduccin est basada en una de la versin 1.1 de Igor Tmara y Pablo Reyes. Sin
embargo la responsabilidad de su interpretacin es de Joaqun Seoane.
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 59 Temple Place, Suite
330, Boston, MA 02111-1307 USA. Se permite la copia y distribucin de copias literales
de este documento de licencia, pero no se permiten cambios[1].

PREMBULO
El propsito de esta Licencia es permitir que un manual, libro de texto, u otro documento
escrito sea libre en el sentido de libertad: asegurar a todo el mundo la libertad efectiva de
copiarlo y redistribuirlo, con o sin modificaciones, de manera comercial o no. En segundo
trmino, esta Licencia proporciona al autor y al editor[2] una manera de obtener

reconocimiento por su trabajo, sin que se le considere responsable de las modificaciones


realizadas por otros.
Esta Licencia es de tipo copyleft, lo que significa que los trabajos derivados del documento
deben a su vez ser libres en el mismo sentido. Complementa la Licencia Pblica General de
GNU, que es una licencia tipo copyleft diseada para el software libre.
Hemos diseado esta Licencia para usarla en manuales de software libre, ya que el software
libre necesita documentacin libre: un programa libre debe venir con manuales que
ofrezcan la mismas libertades que el software. Pero esta licencia no se limita a manuales de
software; puede usarse para cualquier texto, sin tener en cuenta su temtica o si se publica
como libro impreso o no. Recomendamos esta licencia principalmente para trabajos cuyo
fin sea instructivo o de referencia.

APLICABILIDAD Y DEFINICIONES
Esta Licencia se aplica a cualquier manual u otro trabajo, en cualquier soporte, que
contenga una nota del propietario de los derechos de autor que indique que puede ser
distribuido bajo los trminos de esta Licencia. Tal nota garantiza en cualquier lugar del
mundo, sin pago de derechos y sin lmite de tiempo, el uso de dicho trabajo segn las
condiciones aqu estipuladas. En adelante la palabra Documento se referir a cualquiera de
dichos manuales o trabajos. Cualquier persona es un licenciatario y ser referido como
Usted. Usted acepta la licencia si copia. modifica o distribuye el trabajo de cualquier modo
que requiera permiso segn la ley de propiedad intelectual.
Una Versin Modificada del Documento significa cualquier trabajo que contenga el
Documento o una porcin del mismo, ya sea una copia literal o con modificaciones y/o
traducciones a otro idioma.
Una Seccin Secundaria es un apndice con ttulo o una seccin preliminar del Documento
que trata exclusivamente de la relacin entre los autores o editores y el tema general del
Documento (o temas relacionados) pero que no contiene nada que entre directamente en
dicho tema general (por ejemplo, si el Documento es en parte un texto de matemticas, una
Seccin Secundaria puede no explicar nada de matemticas). La relacin puede ser una
conexin histrica con el tema o temas relacionados, o una opinin legal, comercial,
filosfica, tica o poltica acerca de ellos.
Las Secciones Invariantes son ciertas Secciones Secundarias cuyos ttulos son designados
como Secciones Invariantes en la nota que indica que el documento es liberado bajo esta
Licencia. Si una seccin no entra en la definicin de Secundaria, no puede designarse como
Invariante. El documento puede no tener Secciones Invariantes. Si el Documento no
identifica las Secciones Invariantes, es que no las tiene.
Los Textos de Cubierta son ciertos pasajes cortos de texto que se listan como Textos de
Cubierta Delantera o Textos de Cubierta Trasera en la nota que indica que el documento es
liberado bajo esta Licencia. Un Texto de Cubierta Delantera puede tener como mucho 5
palabras, y uno de Cubierta Trasera puede tener hasta 25 palabras.
Una copia Transparente del Documento, significa una copia para lectura en mquina,
representada en un formato cuya especificacin est disponible al pblico en general, apto
para que los contenidos puedan ser vistos y editados directamente con editores de texto
genricos o (para imgenes compuestas por puntos) con programas genricos de
manipulacin de imgenes o (para dibujos) con algn editor de dibujos ampliamente
disponible, y que sea adecuado como entrada para formateadores de texto o para su

traduccin automtica a formatos adecuados para formateadores de texto. Una copia hecha
en un formato definido como Transparente, pero cuyo marcaje o ausencia de l haya sido
diseado para impedir o dificultar modificaciones posteriores por parte de los lectores no es
Transparente. Un formato de imagen no es Transparente si se usa para una cantidad de
texto sustancial. Una copia que no es Transparente se denomina Opaca.
Como ejemplos de formatos adecuados para copias Transparentes estn ASCII puro sin
marcaje, formato de entrada de Texinfo, formato de entrada de LaTeX, SGML o XML
usando una DTD disponible pblicamente, y HTML, PostScript o PDF simples, que sigan
los estndares y diseados para que los modifiquen personas. Ejemplos de formatos de
imagen transparentes son PNG, XCF y JPG. Los formatos Opacos incluyen formatos
propietarios que pueden ser ledos y editados nicamente en procesadores de palabras
propietarios, SGML o XML para los cules las DTD y/o herramientas de procesamiento no
estn ampliamente disponibles, y HTML, PostScript o PDF generados por algunos
procesadores de palabras slo como salida.
La Portada significa, en un libro impreso, la pgina de ttulo, ms las pginas siguientes
que sean necesarias para mantener legiblemente el material que esta Licencia requiere en la
portada. Para trabajos en formatos que no tienen pgina de portada como tal, Portada
significa el texto cercano a la aparicin ms prominente del ttulo del trabajo, precediendo
el comienzo del cuerpo del texto.
Una seccin Titulada XYZ significa una parte del Documento cuyo ttulo es precisamente
XYZ o contiene XYZ entre parntesis, a continuacin de texto que traduce XYZ a otro
idioma (aqu XYZ se refiere a nombres de seccin especficos mencionados ms abajo,
como Agradecimientos, Dedicatorias , Aprobaciones o Historia. Conservar el Ttulo de tal
seccin cuando se modifica el Documento significa que permanece una seccin Titulada
XYZ segn esta definicin[3] .
El Documento puede incluir Limitaciones de Garanta cercanas a la nota donde se declara
que al Documento se le aplica esta Licencia. Se considera que estas Limitaciones de
Garanta estn incluidas, por referencia, en la Licencia, pero slo en cuanto a limitaciones
de garanta: cualquier otra implicacin que estas Limitaciones de Garanta puedan tener es
nula y no tiene efecto en el significado de esta Licencia.

[3]

En sentido estricto esta licencia parece exigir que los ttulos sean exactamente
Acknowledgements, Dedications, Endorsements e History, en ingls.

COPIA LITERAL
Usted puede copiar y distribuir el Documento en cualquier soporte, sea en forma comercial
o no, siempre y cuando esta Licencia, las notas de copyright y la nota que indica que esta
Licencia se aplica al Documento se reproduzcan en todas las copias y que usted no aada
ninguna otra condicin a las expuestas en esta Licencia. Usted no puede usar medidas
tcnicas para obstruir o controlar la lectura o copia posterior de las copias que usted haga o
distribuya. Sin embargo, usted puede aceptar compensacin a cambio de las copias. Si
distribuye un nmero suficientemente grande de copias tambin deber seguir las
condiciones de la seccin 3.
Usted tambin puede prestar copias, bajo las mismas condiciones establecidas
anteriormente, y puede exhibir copias pblicamente.

COPIADO EN CANTIDAD
Si publica copias impresas del Documento (o copias en soportes que tengan normalmente
cubiertas impresas) que sobrepasen las 100, y la nota de licencia del Documento exige
Textos de Cubierta, debe incluir las copias con cubiertas que lleven en forma clara y legible
todos esos Textos de Cubierta: Textos de Cubierta Delantera en la cubierta delantera y
Textos de Cubierta Trasera en la cubierta trasera. Ambas cubiertas deben identificarlo a
Usted clara y legiblemente como editor de tales copias. La cubierta debe mostrar el ttulo
completo con todas las palabras igualmente prominentes y visibles. Adems puede aadir
otro material en las cubiertas. Las copias con cambios limitados a las cubiertas, siempre que
conserven el ttulo del Documento y satisfagan estas condiciones, pueden considerarse
como copias literales.
Si los textos requeridos para la cubierta son muy voluminosos para que ajusten
legiblemente, debe colocar los primeros (tantos como sea razonable colocar) en la
verdadera cubierta y situar el resto en pginas adyacentes.
Si Usted publica o distribuye copias Opacas del Documento cuya cantidad exceda las 100,
debe incluir una copia Transparente, que pueda ser leda por una mquina, con cada copia
Opaca, o bien mostrar, en cada copia Opaca, una direccin de red donde cualquier usuario
de la misma tenga acceso por medio de protocolos pblicos y estandarizados a una copia
Transparente del Documento completa, sin material adicional. Si usted hace uso de la
ltima opcin, deber tomar las medidas necesarias, cuando comience la distribucin de las
copias Opacas en cantidad, para asegurar que esta copia Transparente permanecer
accesible en el sitio establecido por lo menos un ao despus de la ltima vez que
distribuya una copia Opaca de esa edicin al pblico (directamente o a travs de sus
agentes o distribuidores).
Se solicita, aunque no es requisito, que se ponga en contacto con los autores del Documento
antes de redistribuir gran nmero de copias, para darles la oportunidad de que le
proporcionen una versin actualizada del Documento.

MODIFICACIONES
Puede copiar y distribuir una Versin Modificada del Documento bajo las condiciones de
las secciones 2 y 3 anteriores, siempre que usted libere la Versin Modificada bajo esta
misma Licencia, con la Versin Modificada haciendo el rol del Documento, por lo tanto
dando licencia de distribucin y modificacin de la Versin Modificada a quienquiera
posea una copia de la misma. Adems, debe hacer lo siguiente en la Versin Modificada:

A. Usar en la Portada (y en las cubiertas, si hay alguna) un ttulo distinto al del


Documento y de sus versiones anteriores (que deberan, si hay alguna, estar listadas
en la seccin de Historia del Documento). Puede usar el mismo ttulo de versiones
anteriores al original siempre y cuando quien las public originalmente otorgue
permiso.

B. Listar en la Portada, como autores, una o ms personas o entidades responsables


de la autora de las modificaciones de la Versin Modificada, junto con por lo
menos cinco de los autores principales del Documento (todos sus autores
principales, si hay menos de cinco), a menos que le eximan de tal requisito.

C. Mostrar en la Portada como editor el nombre del editor de la Versin


Modificada.

D. Conservar todas las notas de copyright del Documento.

E. Aadir una nota de copyright apropiada a sus modificaciones, adyacente a las


otras notas de copyright.

F. Incluir, inmediatamente despus de las notas de copyright, una nota de licencia


dando el permiso para usar la Versin Modificada bajo los trminos de esta
Licencia, como se muestra en la Adenda al final de este documento.

G. Conservar en esa nota de licencia el listado completo de las Secciones


Invariantes y de los Textos de Cubierta que sean requeridos en la nota de Licencia
del Documento original.

H. Incluir una copia sin modificacin de esta Licencia.

I. Conservar la seccin Titulada Historia, conservar su Ttulo y aadirle un


elemento que declare al menos el ttulo, el ao, los nuevos autores y el editor de la
Versin Modificada, tal como figuran en la Portada. Si no hay una seccin Titulada
Historia en el Documento, crear una estableciendo el ttulo, el ao, los autores y el
editor del Documento, tal como figuran en su Portada, aadiendo adems un
elemento describiendo la Versin Modificada, como se estableci en la oracin
anterior.

J. Conservar la direccin en red, si la hay, dada en el Documento para el acceso


pblico a una copia Transparente del mismo, as como las otras direcciones de red
dadas en el Documento para versiones anteriores en las que estuviese basado.
Pueden ubicarse en la seccin Historia. Se puede omitir la ubicacin en red de un
trabajo que haya sido publicado por lo menos cuatro aos antes que el Documento
mismo, o si el editor original de dicha versin da permiso.

K. En cualquier seccin Titulada Agradecimientos o Dedicatorias, Conservar el


Ttulo de la seccin y conservar en ella toda la sustancia y el tono de los
agradecimientos y/o dedicatorias incluidas por cada contribuyente.

L. Conservar todas las Secciones Invariantes del Documento, sin alterar su texto ni
sus ttulos. Nmeros de seccin o el equivalente no son considerados parte de los
ttulos de la seccin.

M. Borrar cualquier seccin titulada Aprobaciones. Tales secciones no pueden estar


incluidas en las Versiones Modificadas.

N. No cambiar el ttulo de ninguna seccin existente a Aprobaciones ni a uno que


entre en conflicto con el de alguna Seccin Invariante.

O. Conservar todas las Limitaciones de Garanta.

Si la Versin Modificada incluye secciones o apndices nuevos que califiquen como


Secciones Secundarias y contienen material no copiado del Documento, puede
opcionalmente designar algunas o todas esas secciones como invariantes. Para hacerlo,
aada sus ttulos a la lista de Secciones Invariantes en la nota de licencia de la Versin
Modificada. Tales ttulos deben ser distintos de cualquier otro ttulo de seccin.
Puede aadir una seccin titulada Aprobaciones, siempre que contenga nicamente
aprobaciones de su Versin Modificada por otras fuentes --por ejemplo, observaciones de
peritos o que el texto ha sido aprobado por una organizacin como la definicin oficial de
un estndar.

Puede aadir un pasaje de hasta cinco palabras como Texto de Cubierta Delantera y un
pasaje de hasta 25 palabras como Texto de Cubierta Trasera en la Versin Modificada. Una
entidad solo puede aadir (o hacer que se aada) un pasaje al Texto de Cubierta Delantera y
uno al de Cubierta Trasera. Si el Documento ya incluye un textos de cubiertas aadidos
previamente por usted o por la misma entidad que usted representa, usted no puede aadir
otro; pero puede reemplazar el anterior, con permiso explcito del editor que agreg el texto
anterior.
Con esta Licencia ni los autores ni los editores del Documento dan permiso para usar sus
nombres para publicidad ni para asegurar o implicar aprobacin de cualquier Versin
Modificada.

COMBINACIN DE DOCUMENTOS
Usted puede combinar el Documento con otros documentos liberados bajo esta Licencia,
bajo los trminos definidos en la seccin 4 anterior para versiones modificadas, siempre
que incluya en la combinacin todas las Secciones Invariantes de todos los documentos
originales, sin modificar, listadas todas como Secciones Invariantes del trabajo combinado
en su nota de licencia. As mismo debe incluir la Limitacin de Garanta.
El trabajo combinado necesita contener solamente una copia de esta Licencia, y puede
reemplazar varias Secciones Invariantes idnticas por una sola copia. Si hay varias
Secciones Invariantes con el mismo nombre pero con contenidos diferentes, haga el ttulo
de cada una de estas secciones nico aadindole al final del mismo, entre parntesis, el
nombre del autor o editor original de esa seccin, si es conocido, o si no, un nmero nico.
Haga el mismo ajuste a los ttulos de seccin en la lista de Secciones Invariantes de la nota
de licencia del trabajo combinado.
En la combinacin, debe combinar cualquier seccin Titulada Historia de los documentos
originales, formando una seccin Titulada Historia; de la misma forma combine cualquier
seccin Titulada Agradecimientos, y cualquier seccin Titulada Dedicatorias. Debe borrar
todas las secciones tituladas Aprobaciones.

COLECCIONES DE DOCUMENTOS
Puede hacer una coleccin que conste del Documento y de otros documentos liberados bajo
esta Licencia, y reemplazar las copias individuales de esta Licencia en todos los
documentos por una sola copia que est incluida en la coleccin, siempre que siga las reglas
de esta Licencia para cada copia literal de cada uno de los documentos en cualquiera de los
dems aspectos.
Puede extraer un solo documento de una de tales colecciones y distribuirlo individualmente
bajo esta Licencia, siempre que inserte una copia de esta Licencia en el documento
extrado, y siga esta Licencia en todos los dems aspectos relativos a la copia literal de
dicho documento.

AGREGACIN CON TRABAJOS INDEPENDIENTES


Una recopilacin que conste del Documento o sus derivados y de otros documentos o
trabajos separados e independientes, en cualquier soporte de almacenamiento o
distribucin, se denomina un agregado si el copyright resultante de la compilacin no se
usa para limitar los derechos de los usuarios de la misma ms all de lo que los de los
trabajos individuales permiten. Cuando el Documento se incluye en un agregado, esta

Licencia no se aplica a otros trabajos del agregado que no sean en s mismos derivados del
Documento.
Si el requisito de la seccin 3 sobre el Texto de Cubierta es aplicable a estas copias del
Documento y el Documento es menor que la mitad del agregado entero, los Textos de
Cubierta del Documento pueden colocarse en cubiertas que enmarquen solamente el
Documento dentro del agregado, o el equivalente electrnico de las cubiertas si el
documento est en forma electrnica. En caso contrario deben aparecer en cubiertas
impresas enmarcando todo el agregado.

TRADUCCIN
La Traduccin es considerada como un tipo de modificacin, por lo que usted puede
distribuir traducciones del Documento bajo los trminos de la seccin 4. El reemplazo las
Secciones Invariantes con traducciones requiere permiso especial de los dueos de derecho
de autor, pero usted puede aadir traducciones de algunas o todas las Secciones Invariantes
a las versiones originales de las mismas. Puede incluir una traduccin de esta Licencia, de
todas las notas de licencia del documento, as como de las Limitaciones de Garanta,
siempre que incluya tambin la versin en Ingls de esta Licencia y las versiones originales
de las notas de licencia y Limitaciones de Garanta. En caso de desacuerdo entre la
traduccin y la versin original en Ingls de esta Licencia, la nota de licencia o la
limitacin de garanta, la versin original en Ingls prevalecer.
Si una seccin del Documento est Titulada Agradecimientos, Dedicatorias o Historia el
requisito (seccin 4) de Conservar su Ttulo (Seccin 1) requerir, tpicamente, cambiar su
ttulo.

TERMINACIN
Usted no puede copiar, modificar, sublicenciar o distribuir el Documento salvo por lo
permitido expresamente por esta Licencia. Cualquier otro intento de copia, modificacin,
sublicenciamiento o distribucin del Documento es nulo, y dar por terminados
automticamente sus derechos bajo esa Licencia. Sin embargo, los terceros que hayan
recibido copias, o derechos, de usted bajo esta Licencia no vern terminadas sus licencias,
siempre que permanezcan en total conformidad con ella.

REVISIONES FUTURAS DE ESTA LICENCIA


De vez en cuando la Free Software Foundation puede publicar versiones nuevas y revisadas
de la Licencia de Documentacin Libre GNU. Tales versiones nuevas sern similares en
espritu a la presente versin, pero pueden diferir en detalles para solucionar nuevos
problemas o intereses. Vea http://www.gnu.org/copyleft/.
Cada versin de la Licencia tiene un nmero de versin que la distingue. Si el Documento
especifica que se aplica una versin numerada en particular de esta licencia o cualquier
versin posterior, usted tiene la opcin de seguir los trminos y condiciones de la versin
especificada o cualquiera posterior que haya sido publicada (no como borrador) por la Free
Software Foundation. Si el Documento no especifica un nmero de versin de esta
Licencia, puede escoger cualquier versin que haya sido publicada (no como borrador) por
la Free Software Foundation.

ADENDA: Cmo usar esta Licencia en sus


documentos
Para usar esta licencia en un documento que usted haya escrito, incluya una copia de la
Licencia en el documento y ponga el siguiente copyright y nota de licencia justo despus de
la pgina de ttulo:
Copyright (c) AO SU NOMBRE. Se concede permiso para copiar, distribuir y/o
modificar este documento bajo los trminos de la Licencia de Documentacin Libre de
GNU, Versin 1.2 o cualquier otra versin posterior publicada por la Free Software
Foundation; sin Secciones Invariantes ni Textos de Cubierta Delantera ni Textos de
Cubierta Trasera. Una copia de la licencia est incluida en la seccin titulada GNU Free
Documentation License.
Si tiene Secciones Invariantes, Textos de Cubierta Delantera y Textos de Cubierta Trasera,
reemplace la frase sin ... Trasera por esto:
siendo las Secciones Invariantes LISTE SUS TTULOS, siendo los Textos de Cubierta
Delantera LISTAR, y siendo sus Textos de Cubierta Trasera LISTAR.
Si tiene Secciones Invariantes sin Textos de Cubierta o cualquier otra combinacin de los
tres, mezcle ambas alternativas para adaptarse a la situacin.
Si su documento contiene ejemplos de cdigo de programa no triviales, recomendamos
liberar estos ejemplos en paralelo bajo la licencia de software libre que usted elija, como la
Licencia Pblica General de GNU (GNU General Public License), para permitir su uso en
software libre.

[1]

sta es la traduccin del Copyright de la Licencia, no es el Copyright de esta traduccin


no autorizada.
[2]

La licencia original dice publisher, que es, estrictamente, quien publica, diferente de
editor, que es ms bien quien prepara un texto para publicar. En castellano editor se usa
para ambas cosas.

Apndice C. GNU Free Documentation License


Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor,
Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim
copies of this license document, but changing it is not allowed.

0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful
document "free" in the sense of freedom: to assure everyone the effective freedom to copy
and redistribute it, with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way to get credit for their
work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document
must themselves be free in the same sense. It complements the GNU General Public
License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free
software needs free documentation: a free program should come with manuals providing
the same freedoms that the software does. But this License is not limited to software
manuals; it can be used for any textual work, regardless of subject matter or whether it is
published as a printed book. We recommend this License principally for works whose
purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS


This License applies to any manual or other work, in any medium, that contains a notice
placed by the copyright holder saying it can be distributed under the terms of this License.
Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below, refers to any such manual
or work. Any member of the public is a licensee, and is addressed as "you". You accept the
license if you copy, modify or distribute the work in a way requiring permission under
copyright law.
A "Modified Version" of the Document means any work containing the Document or a
portion of it, either copied verbatim, or with modifications and/or translated into another
language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that
deals exclusively with the relationship of the publishers or authors of the Document to the
Document's overall subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.) The relationship
could be a matter of historical connection with the subject or with related matters, or of
legal, commercial, philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as
being those of Invariant Sections, in the notice that says that the Document is released
under this License. If a section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero Invariant Sections.
If the Document does not identify any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or
Back-Cover Texts, in the notice that says that the Document is released under this License.
A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25
words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a
format whose specification is available to the general public, that is suitable for revising the
document straightforwardly with generic text editors or (for images composed of pixels)
generic paint programs or (for drawings) some widely available drawing editor, and that is
suitable for input to text formatters or for automatic translation to a variety of formats
suitable for input to text formatters. A copy made in an otherwise Transparent file format
whose markup, or absence of markup, has been arranged to thwart or discourage
subsequent modification by readers is not Transparent. An image format is not Transparent
if used for any substantial amount of text. A copy that is not "Transparent" is called
"Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup,
Texinfo input format, LaTeX input format, SGML or XML using a publicly available

DTD, and standard-conforming simple HTML, PostScript or PDF designed for human
modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque
formats include proprietary formats that can be read and edited only by proprietary word
processors, SGML or XML for which the DTD and/or processing tools are not generally
available, and the machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages
as are needed to hold, legibly, the material this License requires to appear in the title page.
For works in formats which do not have any title page as such, "Title Page" means the text
near the most prominent appearance of the work's title, preceding the beginning of the body
of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is
precisely XYZ or contains XYZ in parentheses following text that translates XYZ in
another language. (Here XYZ stands for a specific section name mentioned below, such as
"Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the
Title" of such a section when you modify the Document means that it remains a section
"Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this
License applies to the Document. These Warranty Disclaimers are considered to be
included by reference in this License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has no effect on the
meaning of this License.

2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or
noncommercially, provided that this License, the copyright notices, and the license notice
saying this License applies to the Document are reproduced in all copies, and that you add
no other conditions whatsoever to those of this License. You may not use technical
measures to obstruct or control the reading or further copying of the copies you make or
distribute. However, you may accept compensation in exchange for copies. If you distribute
a large enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly
display copies.

3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the
Document, numbering more than 100, and the Document's license notice requires Cover
Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both
covers must also clearly and legibly identify you as the publisher of these copies. The front
cover must present the full title with all words of the title equally prominent and visible.
You may add other material on the covers in addition. Copying with changes limited to the
covers, as long as they preserve the title of the Document and satisfy these conditions, can
be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the
first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto
adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you
must either include a machine-readable Transparent copy along with each Opaque copy, or
state in or with each Opaque copy a computer-network location from which the general
network-using public has access to download using public-standard network protocols a
complete Transparent copy of the Document, free of added material. If you use the latter
option, you must take reasonably prudent steps, when you begin distribution of Opaque
copies in quantity, to ensure that this Transparent copy will remain thus accessible at the
stated location until at least one year after the last time you distribute an Opaque copy
(directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before
redistributing any large number of copies, to give them a chance to provide you with an
updated version of the Document.

4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of
sections 2 and 3 above, provided that you release the Modified Version under precisely this
License, with the Modified Version filling the role of the Document, thus licensing
distribution and modification of the Modified Version to whoever possesses a copy of it. In
addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the
Document, and from those of previous versions (which should, if there were any, be
listed in the History section of the Document). You may use the same title as a
previous version if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for
authorship of the modifications in the Modified Version, together with at least five
of the principal authors of the Document (all of its principal authors, if it has fewer
than five), unless they release you from this requirement.
C. State on the Title page the name of the publisher of the Modified Version, as the
publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other
copyright notices.
F. Include, immediately after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this License, in the form
shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover
Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add to it an item
stating at least the title, year, new authors, and publisher of the Modified Version as
given on the Title Page. If there is no section Entitled "History" in the Document,

create one stating the title, year, authors, and publisher of the Document as given on
its Title Page, then add an item describing the Modified Version as stated in the
previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a
Transparent copy of the Document, and likewise the network locations given in the
Document for previous versions it was based on. These may be placed in the
"History" section. You may omit a network location for a work that was published
at least four years before the Document itself, or if the original publisher of the
version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title
of the section, and preserve in the section all the substance and tone of each of the
contributor acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in
their titles. Section numbers or the equivalent are not considered part of the section
titles.
M. Delete any section Entitled "Endorsements". Such a section may not be included in
the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in
title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as
Secondary Sections and contain no material copied from the Document, you may at your
option designate some or all of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice. These titles must be
distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but
endorsements of your Modified Version by various parties--for example, statements of peer
review or that the text has been approved by an organization as the authoritative definition
of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to
25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified
Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added
by (or through arrangements made by) any one entity. If the Document already includes a
cover text for the same cover, previously added by you or by arrangement made by the
same entity you are acting on behalf of, you may not add another; but you may replace the
old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to
use their names for publicity for or to assert or imply endorsement of any Modified
Version.

5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under
the terms defined in section 4 above for modified versions, provided that you include in the
combination all of the Invariant Sections of all of the original documents, unmodified, and

list them all as Invariant Sections of your combined work in its license notice, and that you
preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical
Invariant Sections may be replaced with a single copy. If there are multiple Invariant
Sections with the same name but different contents, make the title of each such section
unique by adding at the end of it, in parentheses, the name of the original author or
publisher of that section if known, or else a unique number. Make the same adjustment to
the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various
original documents, forming one section Entitled "History"; likewise combine any sections
Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete
all sections Entitled "Endorsements".

6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released
under this License, and replace the individual copies of this License in the various
documents with a single copy that is included in the collection, provided that you follow the
rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually
under this License, provided you insert a copy of this License into the extracted document,
and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS


A compilation of the Document or its derivatives with other separate and independent
documents or works, in or on a volume of a storage or distribution medium, is called an
"aggregate" if the copyright resulting from the compilation is not used to limit the legal
rights of the compilation's users beyond what the individual works permit. When the
Document is included in an aggregate, this License does not apply to the other works in the
aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document,
then if the Document is less than one half of the entire aggregate, the Document's Cover
Texts may be placed on covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form. Otherwise they must
appear on printed covers that bracket the whole aggregate.

8. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the
Document under the terms of section 4. Replacing Invariant Sections with translations
requires special permission from their copyright holders, but you may include translations
of some or all Invariant Sections in addition to the original versions of these Invariant
Sections. You may include a translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include the original
English version of this License and the original versions of those notices and disclaimers.
In case of a disagreement between the translation and the original version of this License or
a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History",


the requirement (section 4) to Preserve its Title (section 1) will typically require changing
the actual title.

9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly
provided for under this License. Any other attempt to copy, modify, sublicense or distribute
the Document is void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under this License will not
have their licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE


The Free Software Foundation may publish new, revised versions of the GNU Free
Documentation License from time to time. Such new versions will be similar in spirit to the
present version, but may differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document
specifies that a particular numbered version of this License "or any later version" applies to
it, you have the option of following the terms and conditions either of that specified version
or of any later version that has been published (not as a draft) by the Free Software
Foundation. If the Document does not specify a version number of this License, you may
choose any version ever published (not as a draft) by the Free Software Foundation.

ADDENDUM: How to use this License for your


documents
To use this License in a document you have written, include a copy of the License in the
document and put the following copyright and license notices just after the title page:
Copyright (C) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation License, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no BackCover Texts. A copy of the license is included in the section entitled "GNU Free
Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the
"with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being
LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three,
merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing
these examples in parallel under your choice of free software license, such as the GNU
General Public License, to permit their use

Anda mungkin juga menyukai