Categorías:Software |
Contents
Xen es una tecnología que permite realizar la para virtualización de hardware, permitiendo correr varias instancias de sistemas operativos en la misma máquina algo similar a User Mode Linux, pero con un importante incremento en el rendimiento, como puede verse en la siguiente gráfica:
Grafica de XEN comparado con otras tecnologías de virtualización (tomado de la página de investigación del proyecto). Convenciones: L: Linux Nativo. X: Xen. V: VM Ware. U: User Mode Linux
Xen maneja una tecnologia llamada hypervisor, que consiste en administrar y crear cada uno de los dominios (en inglés domain: El sistema operativo Xen sin privilegios, que seria como cada una de VM activas que tiene) colocados sobre Xen, permitiéndole una mayor interfaz de comunicación, el programa por defecto maneja un backend de éste, pero ya he visto dos front-ends para el manejo de este, el primero es el de gXenophilia (GTK+Python), el cual es rápido y tiene un gran desarrollo (de hecho cuando uno lo descarga esta el archivo .glade para programarlo en Glade).
Es extremadamente útil para ambientes de desarrollo en los cuales se quiera probar como funciona algo sin afectar los sistemas de producción y sin incurrir en la compra adicional de máquinas. En este documento aprenderás a instalar Xen en una máquina debian. Para mayor información sobre el proyecto mira la sección de Referencias
Instalando los paquetes
- En debian, esta en testing los paquetes del Xen 3.0.2, por tanto hacemos lo siguiente para instalarlo
sudo apt-get install xen-utils xen-tools linux linux-image-2.6.18-2-xen-686 Password:
- El sistema de paquetes instala todo lo necesario para funcionar.
- Ya reiniciado el sistema hacemos la siguiente prueba:
/usr/sbin/xm list Name Id Mem(MB) CPU State Time(s) Console Domain-0 0 59 0 r---- 1390.4
Arrancando la virtualización de un SO
Ya tiene instalado su Xen pero ahora hay que sacarle el jugo al asunto
- Ahora creamos un sistema de archivos vacio que será el que arranquemos a través de Xen. Para esto hacemos lo siguiente:
- Bajamos una imagen de internet de un sistema debian funcionando.
wget http://mirror.clarkson.edu/pub/distributions/xenophilia/OSDL/domUimages/debian-sarge/debian-sarge-root.tar.bz2
- Teniendo el archivo, se descomprime de la siguiente forma (como es grande la descompresión puede durar mucho tiempo):
tar xvfj debian-sarge.tar.bz2
- También descargo el archivo para el arranque de la virtualización:
wget http://mirror.clarkson.edu/pub/distributions/xenophilia/OSDL/domUimages/debian-sarge/debian-sarge-root.tar.bz2
- Modificamos posteriormente el archivo de sarge.conf, para que quede de la siguiente forma:
kernel = '/boot/vmlinuz-2.6.18-1-xen-686' ramdisk = '/boot/initrd.img-2.6.18-1-xen-686' memory = 64 name = "debian" vif = [ 'bridge=xenbr0' ] disk = ['file:/home/derodriguez/debian_reiserfs,sda1,w','file:/home/derodriguez/ debian_swap,sda2,w'] root = "/dev/sda1 rw"
Nota: Este sistema utiliza la misma imagen con la que arranca el sistema, esto comenzo a implementarse a partir de la version 3.0.2 la actual es 3.0.3.
- Por ultimo arrancamos la virtualización de la siguiente forma:
/usr/sbin/xm create -c sarge.conf Using config file "sarge.conf". Started domain Sarge, console on port 9602 ************ REMOTE CONSOLE: CTRL-] TO QUIT ******** Linux version 2.6.11.12-xenU (root@columbus) (gcc version 3.3.5 (Debian 1:3.3.5-13)) #2 Tue Aug 2 23:37:59 EDT 2005 BIOS-provided physical RAM map: Xen: 0000000000000000 - 0000000008000000 (usable) 128MB LOWMEM available. DMI not present. IRQ lockup detection disabled Allocating PCI resources starting at 08000000 (gap: 08000000:f8000000) Built 1 zonelists Kernel command line: root=/dev/sda1 ro Initializing CPU#0 PID hash table entries: 1024 (order: 10, 16384 bytes) Xen reported: 851.513 MHz processor. Using tsc for high-res timesource Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) vmalloc area: c8800000-fbff9000, maxmem 34000000 Memory: 127072k/131072k available (1631k kernel code, 3836k reserved, 439k data, 112k init, 0k highmem) Checking if this processor honours the WP bit even in supervisor mode... Ok. Mount-cache hash table entries: 512 (order: 0, 4096 bytes) CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) CPU: L2 Cache: 256K (64 bytes/line) CPU: AMD Athlon(tm) Processor stepping 02 Enabling fast FPU save and restore... done. Checking 'hlt' instruction... disabled NET: Registered protocol family 16 xen_mem: Initialising balloon driver. Initializing Cryptographic API io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize Xen virtual console successfully installed as tty Event-channel device installed. xen_blk: Initialising virtual block device driver xen_net: Initialising virtual ethernet driver. NET: Registered protocol family 2 IP: routing cache hash table of 1024 buckets, 8Kbytes TCP established hash table entries: 8192 (order: 4, 65536 bytes) TCP bind hash table entries: 8192 (order: 3, 32768 bytes) TCP: Hash tables configured (established 8192 bind 8192) NET: Registered protocol family 1 NET: Registered protocol family 17 EXT3-fs: mounted filesystem with ordered data mode. VFS: Mounted root (ext3 filesystem) readonly. Freeing unused kernel memory: 112k freed kjournald starting. Commit interval 5 seconds *************************************************************** *************************************************************** ** WARNING: Currently emulating unsupported memory accesses ** ** in /lib/tls libraries. The emulation is very ** ** slow. To ensure full performance you should ** ** execute the following as root: ** ** mv /lib/tls /lib/tls.disabled ** *************************************************************** *************************************************************** Continuing... INIT: version 2.86 booting Activating swap. Checking root file system... fsck 1.35 (28-Feb-2004) /dev/sda1: clean, 18935/256000 files, 98201/512000 blocks EXT3 FS on sda1, internal journal hwclock is unable to get I/O port access: the iopl(3) call failed. System time was Fri Oct 28 19:28:36 UTC 2005. Setting the System Clock using the Hardware Clock as reference... hwclock is unable to get I/O port access: the iopl(3) call failed. System Clock set. System local time is now Fri Oct 28 19:28:36 UTC 2005. Cleaning up ifupdown...done. Checking all file systems... fsck 1.35 (28-Feb-2004) Setting kernel variables ... ... done. Mounting local filesystems... Cleaning /tmp /var/run /var/lock. Running 0dns-down to make sure resolv.conf is ok...done. Setting up networking.../dev/shm/network/...done. Setting up IP spoofing protection: rp_filter. Configuring network interfaces...Internet Software Consortium DHCP Client 2.0pl5 Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium. All rights reserved. Please contribute if you find this software useful. For info, please visit http://www.isc.org/dhcp-contrib.html Listening on LPF/eth0/aa:00:00:0b:cc:5c Sending on LPF/eth0/aa:00:00:0b:cc:5c Sending on Socket/fallback/fallback-net DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 DHCPOFFER from 192.168.0.1 DHCPREQUEST on eth0 to 255.255.255.255 port 67 DHCPACK from 192.168.0.1 bound to 192.168.0.89 -- renewal in 300 seconds. done. Setting the System Clock using the Hardware Clock as reference... hwclock is unable to get I/O port access: the iopl(3) call failed. System Clock set. Local time: Fri Oct 28 19:28:43 UTC 2005 Initializing random number generator...done. Recovering nvi editor sessions... done. Setting up X server socket directory /tmp/.X11-unix...done. Setting up ICE socket directory /tmp/.ICE-unix...done. INIT: Entering runlevel: 2 Starting system log daemon: syslogd. Starting kernel log daemon: klogd. Starting MTA: exim4. Starting OpenBSD Secure Shell server: sshd. Starting internet superserver: xinetd. Starting deferred execution scheduler: atd. Starting periodic command scheduler: cron. Debian GNU/Linux 3.1 yum tty1 yum login:
Cliente de comunicación para controlar el hypervisor
Ahora uno puede usar el comando xm para el manejo del hypervisor del Xen para administración y creación de Domains, sin embargo es back-end que no todo el mundo entiende, ya que es poco intuitivo y uno lo aprende a usando lo siguiente:
/usr/sbin/xm help
Yo encontre un front-end para esto, bastante practico hecho en GTK/Python y trae el archivo de desarrollo .glade para cargar el proyecto en Glade, usted puede descargarlo de la siguiente forma:
wget http://mirror.clarkson.edu/pub/distributions/xenophilia/OSDL/gxenophilia/gXenophilia-0.1.tar.gz
Lo descomprime con el siguiente comando:
tar xvfz gXenophilia-0.1.tar.gz README gtk-ui/ gtk-ui/BasicClient.py gtk-ui/xenophilia.py gtk-ui/xenophilia.glade simple.py
Y lo activa escribiendo en consola python gtk-ui/xenophilia.py
Este le resultará mas intuitivo por si algo guiese de los screenshots que estan de referencia.
Instalando VNC para tener modo gráfico en su Xen Virtual
Antes de comenzar a instalar el software de VNC en nuestro Xen el cual esta paravirtualizado (palabra que no esta en el diccionario de la lengua española, como una traducción de paravirtualized), usted tendra que crear el archivo /etc/apt/sources.list con su editor favorito (en ese momento solo tiene vi o nano):
vi /etc/apt/sources.list
Despues agregamos la siguiente línea:
deb http://ftp.us.debian.org/debian stable contrib non-free/
Guardamos lo escrito y actualizamos la base de información del apt de la siguiente forma:
apt-get update Get:1 http://ftp.us.debian.org stable/main Packages [3347kB] Get:2 http://ftp.us.debian.org stable/main Release [95B] Get:3 http://ftp.us.debian.org stable/contrib Packages [56.2kB] Get:3 http://ftp.us.debian.org stable/contrib Packages [56.2kB] Get:4 http://ftp.us.debian.org stable/contrib Release [98B] Get:5 http://ftp.us.debian.org stable/non-free/ Packages [58.4kB] Get:6 http://ftp.us.debian.org stable/non-free/ Release [99B] Fetched 3462kB in 2m23s (24.1kB/s) Reading Package Lists... Done
Despues procedemos a actualizar los paquetes para despues en la instalación, no tener que traer otros archivos para actualizar de la siguente forma
apt-get dist-upgrade
Luego de actualizado los paquetes instalaremos por medio del apt los siguientes paquetes que nos permitiran usar el modo gráfico usando VNC (Virtual Network Computing):
apt-get install vncserver4 xserver-xorg xfonts-base xinetd
Ahora instalados estos paquetes tenemos el acceso al servidor de X unido al de VNC, que nos permitira tener un puesto de trabajo gráfico en otra terminal sin importar el sistema operativo (esto pasa porque el cliente de VNC es altamente portable y escalable), en mi caso particular lo unico que hecho yo es instalar la xterm y mi bordeador de ventana favorito el cual para este caso es metacity (es border de ventana de Gnome, cualquiera pensaria que es pesado, pero no lo es, por lo contrario es un programa con arquitectura minimalista) además yo lo combino con Expocity para hacer un Window Manager .
Yo en particular uso la misma tecnica que uso para lanzar metacity en conjunto con el Expocity, con la diferencia que para llamar al servidor X lo hago de la siguiente forma:
Xvnc -SecurityTypes none :0 &
Y una vez lanzado mi Window Manager, me conecto via vnc, esta version que instalamos no requiere contraseña así que será automatica la entrada, en su debian debe tener instalado el cliente de vnc xvncviewer y entrar de la siguiente forma:
xvncviewer 192.168.0.23
La dirección ip varia pero es un ejemplo concreto, ahora yo utilizo también el Vnc2swf para hacer videos con pruebas hechas en Xen, al final del documento esta referenciado donde tengo todos los videos, que he hecho de prueba.
Lanzando un Display Manager
Ya sabemos que el servidor de VNC corre bien en nuestro entorno gráfico, sin embargo a muchos les gusta que cuando le muestre X, tenga un display manager(como xdm, gdm, kdm, sdm o wdm), pues para hacer que nuestro display manager favorito corra y solo tengamos que loguearnos en una session gráfica.
Dare el ejemplo con kdm, que es mi display manager favorito, y lo hice en debian, lo primero que se hace es instalarlo en su Debian, además le agregue otro Window Manager de gran poder (usted podria instalar su WM o Desktop Favorito) así:
apt-get install kdm ion3
Una vez instalado, modificamos del archivo /etc/kde3/kdm/Xservers y cambiamos la siguiente línea:
:0 local@tty1 reserve /usr/X11R6/bin/X -nolisten tcp
Por esta:
:0 local /usr/bin/Xvnc :0 -geometry 800x600 -depth 32 -desktop vt7
Y luego con la modificación hecha reiniciamos nuestro display manager
/etc/init.d/kdm start Starting K Display Manager: kdm.
Abrimos el vncviewer para esa maquina, y ahí estará nuestro kdm (en mi caso), y podrás seguir manejandolo así de ahora en adelante.
OTROS ASPECTOS TECNOLOGICOS DE LA MAQUINA VIRTUAL XEN
1. DESCRIPCIÓN
1.1. IDENTIFICACIÓN
- MAQUINA VIRTUAL EN LINUX XEN
1.2. FABRICANTE
Xen es una máquina virtual de código abierto desarrollada por la Universidad de Cambridge. El software de virtualización Xen es una solución con fuente abierta desarrollada por la comunidad Linux
1.3. PARA QUE SIRVE
Las máquinas virtuales son usadas a menudo por IBM y otras compañías en sus servidores y ordenadores centrales para abstraer la mayor cantidad de aplicaciones posibles y proteger las aplicaciones poniéndolas en máquinas virtuales diferentes (semejante a una jaula chroot). Puede también ser utilizada, no solo por razones de seguridad o funcionamiento, sino también para poder tener arrancados diferentes sistemas operativos en el mismo ordenador. Con la migración de máquinas virtuales en vivo de Xen se puede conseguir hacer balance de cargas sin tiempos muertos.
1.4. COSTOS
La instalación de una máquina virtual en linux no tiene ningún costo, el software se puede descargar de la página :
http://www.xensource.com/xen/downloads/
El costo generado esta basado en capacitaciones y servicios de instalación o configuración del software para la máquina virtual o todos los demás servicios extras que se puedan generar. Con todo, las ahorros en los costos potenciales son substanciales. Un estudio realizado por Vmware registró las siguientes ahorros del cliente por medio de la virtualización y de la consolidación: • Hardware: de un 28% a un 53% de economía • Operaciones: de un 72% a un 79% de economía • Total: de 29% a 64% de economía
2. ANÁLISIS SISTÉMICO
2.1. COMPONENTES
a) En primer lugar, es de código abierto. b) En segundo lugar, es relativamente liviano, de modo que no consume una cantidad excesiva de recursos del procesador. c) En tercer lugar, alcanza un alto nivel de aislamiento entre tecnologías de máquina virtual. d) Por último, al igual que otras tecnologías de máquina virtual, Xen ofrece soporte a sistemas operativos y versiones combinados y permite a los administradores definir y ejecutar una instancia del sistema operativo, en forma dinámica, sin afectar el servicio. Xen hace uso del modo protegido del i386, donde la CPU está compuesta por 4 anillos, el ring 0 se usa normalmente para el kernel del sistema operativo y el ring 3 se usa para las aplicaciones de usuario.
Xen “hypervisor” corre en ring 0, los Sistemas Operativos invitados corren en ring 1 y las aplicaciones en ring 3. Con esto aprovechamos el ring 1 como una capa mas de protección, algo que nadie hasta ahora había hecho. En tiempo de arranque del sistema operativo anfitrion Xen se carga en memoria y ejecuta un kernel parcheado en Ring 1 que se llama domain0. Desde este domino será desde el cual se podrá crear, destruir, migrar o detener el resto de dominios. Estos dominios creados también funcionarán en ring1, mientras que sus aplicaciones lo harán en ring3. Para poder acceder a los dispositivos físicos de una forma segura xen utiliza el domain0 que es el único que puede acceder a ellos , de modo que los sistemas operativos que corran en dominios, como ya hemos dicho deberán ser parcheados para acceder a los dispositivos físicos. Este es el mayor inconveniente de Xen, pero como ya también se ha dicho en varias ocasiones cuando dispongamos de la tecnologia de virtualización por hardware tanto de AMD como Intel este problema no existirá.
2.2. DESCRIPCIÓN
Una máquina virtual es un software que crea una plataforma 'puente' entre el usuario final y el ordenador, permitiendo que este ejecute determinado software que originalmente no podría funcionar. Las máquinas virtuales no son algo nuevo, llevan usándose desde principios de los años 70 y principalmente se idearon para correr varios sistemas operativos diferentes y separados en una misma máquina física. Las máquinas virtuales también se usan en algunos lenguajes de programación, siendo en la actualidad la mas popular la máquina de Java desarrollada por Sun.
Java, al compilarse, genera un bytecode que solo puede ser ejecutado por su propia máquina virtual. Con esto se consigue la portabilidad de los binarios generados con el compilador entre sistemas operativos. Cuando hablamos de virtualizar hoy en día nos referimos normalmente a ejecutar un sistema operativo dentro otro. El Xen inicialmente necesitaba que los sistemas operativos invitados fueran modificados para ejecutarse exitosamente (esto se conoce como paravirtualización). Sin embargo, la última release (Xen 3.0) incluye soporte para la Tecnología de Virtualización Intel®, lo que permite que el Xen soporte sistemas operacionales invitados no modificados, incluyendo el Windows*7.
El Xen 3.0 soporta hasta 32 procesadores por máquina virtual y transferencias activas de las aplicaciones que están ejecutándose. También se ejecuta tanto en los sistemas basados en los procesadores Intel® Xeon® como en los procesadores Intel Itanium® 2. Dada la escalabilidad y la disponibilidad moderna de los servidores basados en los procesadores Itanium® 2, la virtualización basada en Linux podrá ir aún más lejos en los centros de datos, ofreciendo la escalabilidad y la disponibilidad necesarias para consolidar las aplicaciones más críticas de las empresas.
Xen es una tecnología relativamente nueva, pero el soporte de la industria y el interés de los clientes es grande, y las soluciones listas para ser desarrolladas están comenzando a surgir, y avances rápidos pueden esperarse.
2.3. APLICACIÓN
• Dividir cada servidor físico en hasta 30 servidores virtuales, cada uno siendo capaz de hospedar su propio SO (Sistema Operativo) y su pila de aplicaciones • Desarrollar y administrar servidores físicos y virtuales de forma eficiente a partir de una interfase común. • Destinar los recursos del servidor (procesador, memoria e I/O) dinámicamente y mover aplicaciones y cargas de trabajo en ejecución, y cambiar sesiones muy rápidamente de un servidor virtual para otro. Inicialmente esta capacidad era usada para manutención del tiempo de inactividad cero. Ahora ella comienza a usarse como una manera de proveer automáticamente la nueva capacidad cuando se presentan fallas en un sistema o cuando las cargas de trabajo amenazan con exceder los recursos existentes. Obviamente, la planeación es importante en un proyecto de consolidación bien hecho. Para la mayoría de las empresas, la cuestión no es si deben o no virtualizar sus infraestructuras para los servidores sino cuál solución usar. Las políticas para las tomas de decisiones normalmente necesitan cambiar, ya que los servidores físicos individuales podrán ser compartidos entre múltiples unidades de negocios.
3. ANÁLISIS TÉCNICO
3.1. CAPACIDADES
• Xen es estable y muy manejable. • Plataforma Windows: hubo una versión modificada de Windows XP funcionando durante los primeros tests. Dicha versión no ha podido comercializarse debido a las restrictivas licencias y contratos que Microsoft aplica a sus productos. • Para portátiles: Xen no soporta ACPI o APM, por lo tanto funcionará pero no con todas las funcionalidades de un portátil, aunque los desarrolladores esperan poder soportar estas tecnologías de portátiles próximamente. • Las máquinas virtuales Xen pueden ser migradas en vivo entre equipos físicos sin pararlos. Durante este proceso, la memoria de la máquina virtual es copiada iterativamente al destino sin detener su ejecución. Una parada muy breve alrededor de 60 a 300 ms es necesaria para realizar la sincronización final antes de que la máquina virtual comience a ejecutarse en su destino final. Una tecnología similar es utilizada para suspender las máquinas virtuales a disco y cambiar a otra máquina virtual.
3.2 REQUERIMIENTOS DE USO
• Xen funciona actualmente en sistemas basados en x86. Actualmente se están portando las plataformas x86_64, IA64 y PPC. Los ports de otras plataformas son técnicamente posibles y podrán estar disponibles en el futuro. • Xen requiere portar los sistemas operativos para adaptarse al API de Xen. Hasta el momento hay ports para NetBSD, Linux, FreeBSD y Plan 9. En 2005, Novell muestra un port de NetWare para Xen. Un port de Windows XP fue creado durante el desarrollo inicial de Xen.
• Xen en SO Unix:
o Mandriva 2006 incluye Xen 2.6 o Novell’s Suse Linux Professional 10 incluye Xen 3. o Fedora Core 5 incluye la versión 3 de Xen. o Xenophilia es una distribución Linux que se basa en Xen. o Xen demo CD es una ISO live CD basada en Debian que permite probar Xen en tu sistema sin instalarla en disco duro. o Debian también incluye los paquetes de Xen, en sus repositorios inestable y experimental. o NetBSD 2.0 incluye soporte para Xen 1.2.
3.3 VENTAJAS
• Aislamiento e independencia de servicios y contenidos. • Se puede utilizar una máquina virtual diferente para ejecutar servicios web, ftp, correo y otros. • Un fallo en el sistema operativo no repercute en los demás • Adecuado cuando se heredan sistemas mas antiguos y se pueden producir conflictos entre diferentes versiones de librerías. • Se consigue alto grado de seguridad y facilidad de migración. • Ahorro de hardware. • Se consigue utilizar mas los recursos del sistema y procesadores.
3.4 LIMITACIONES
• Se puede conseguir bajo rendimiento en la máquina. • Xen no ha sido probado en mercados amplios, no existen muchas herramientas de gestión. • Curva de aprendizaje costosa. • Documentación no excesivamente abundante • Tiempos de despliegue mayores. • No admite drivers de los entornos a emular. • Desarrollo algo inmaduro.
Referencias
Página de Xenophilia: Es una distribución derivado de debian, con paquetes de Xen (Similar al desaparecido XenoLinux)
http://wiki.xensource.com/xenwiki/hypervisor: Definición de hypervisor de Xen
Página oficial del proyecto Xen: Aca esta la documentación, archivos e información relacionada con el proyecto.
Screenshots de gXenophilia: Es un cliente de comunicación del hypervisor de Xen.
Repositorio personal de videos: Es mi repositorio de videos, son archivos flash, livianos y diseñados por el Vnc2swf.
http://www.intel.com/espanol/technology/magazine/revista0406_5.htm
http://www.sun.com/emrkt/innercircle/newsletter/latam/0706vass.html
http://www.intel.com/espanol/technology/magazine/revista0406_5.htm
http://www.sahw.com/wp/archivos/2006/04/17/comparativa-de-cinco-soluciones-de-virtualizacion/
http://www-128.ibm.com/developerworks/linux/library/l-linuxvirt/?ca=dgr-lnxw57Virtual-Linux
