Introducción a la virtualización con XEN Imprimir
SOFTWARE - Servidores
Escrito por Elvira Mifsud   
Luns, 17 Decembro 2012 09:55
There are no translations available.

Logo xen

En este artículo hacemos una introducción a la virtualización en general y comentamos, en particular, las características específicas del software de virtualización XEN.

El concepto y la práctica de la virtualización tiene ya un recorrido en el tiempo importante. Fue implementado hace varios años por empresas como IBM, Hewlett Packard (entre otras) en sus sistemas operativos y grandes equipos. Pero la difusión y el uso masivo de esta tecnología es relativamente reciente, siendo especialmente interesantes ámbitos de aplicación como la enseñanza con herramientas de software libre que la implementan.

 

¿Qué es la virtualización?

La virtualización consiste en la creación de un entorno virtual, sobre una máquina real, en el que podemos ejecutar programas sobre otro sistema operativo, de manera independiente. Es decir, la virtualización es un programa que proporciona soporte para instalar otros sistemas operativos sobre la misma máquina, y que funcionarán de manera encapsulada dentro de ese entorno virtual.

Habrá por tanto, sistema físico que será máquina real y un sistema virtual o lógico que se ejecutará virtualizado sobre el sistema físico. Y si se dispone de suficientes recursos podríamos tener varios sistemas virtuales ejecutándose sobre un único sistema físico. Y en sentido contrario también, es decir que varios recursos físicos (servidores o dispositivos de almacenamiento) aparecen como un único recurso lógico.

Una definición mas sencilla la podemos dejar de la forma siguiente:

La virtualización que es un proceso por el cual se pueden crear y trabajar con varios sistemas operativos independientes ejecutándose en la misma máquina. Para ello se utiliza una aplicación de software que permite que un mismo sistema operativo maneje imágenes de los sistemas operativos virtualizados a la vez.

Esta tecnología, pues, permite la separación del hardware y el software, lo cual posibilita a su vez que múltiples sistemas operativos, aplicaciones o plataformas se ejecuten simultáneamente en un solo servidor o equipo, según sea el caso de aplicación. El software que implementa la vitualización permite que el hardware ejecute múltiples instancias de diferentes sistemas operativos de forma concurrente sin que interfieran entre sí, ni con las aplicaciones.

Por último, definimos el concepto de máquina virtual como software que crea un entorno virtual entre la plataforma utilizada en la máquina real y el usuario final.

Tipos de virtualización

Cuando hablamos de virtualización nos estamos refiriendo básicamente a dos formas de verla o catalogarla:

  • Virtualización de plataforma: consiste en simular una máquina real (equipo) con todos sus componentes (los cuales no necesariamente son todos los de la máquina física) y ofrecerle los recursos necesarios para su funcionamiento. En general, hay un software anfitrión que es el que controla que las diferentes máquinas virtuales sean atendidas correctamente y que está ubicado entre el hardware y las máquinas virtuales. Dentro de este esquema caben la mayoría de las formas de virtualización más conocidas, incluidas la virtualización de sistemas operativos, la virtualización de aplicaciones y la emulación de sistemas operativos.

    Existen diferentes productos software de virtualización de plataforma, cuya diferencia estriba en el mecanismo o tecnología utilizada. El siguiente gráfico muestra diferentes opciones.

    • Emulación o simulación: se emula un hardware completo. Por ejemplo, el emulador MAME (Multiple Arcade Machine Emulator, emulador de múltiples máquinas recreativas) es un emulador utilizado en las máquinas de videojuegos que funcionan con monedas en bares, salones recreativos, etc.
    • Virtualización nativa y virtualización completa: se simula el hardware necesario para correr un sistema operativo sin modificar. Por ejemplo el software VMware Workstation.
    • Paravirtualización: la máquina virtual no necesariamente simula un hardware, y ofrece una capa de abstracción (API) especial que sólo se puede usar modificando el sistema operativo invitado. Por ejemplo, utilizan esta técnica XEN y VMware Server ESX.
    • Virtualización a nivel del sistema operativo: virtualiza un servidor físico a nivel del sistema operativo, permitiendo que múltiples servidores virtuales aislados y seguros se ejecuten sobre un solo servidor físico, pero con la particularidad de que, tanto el sistema anfitrión como el invitado, comparten sistema operativo.
    • Virtualización de aplicaciones: consiste en correr una aplicación sobre una máquina virtual usando los recursos reales. El ejemplo mas famoso hoy en día es la máquina virtual JAVA.
    • Virtualización a nivel de kernel: este tipo requiere soporte de hardware para ejecutar la virtualización, ya sea con procesadores Intel o AMD. En el caso de KVM se encuentra integrado en el núcleo de Linux a partir de la versión 2.6.20 del kernel.
  • Virtualización de recursos: consiste en agrupar varios dispositivos para que sean vistos como uno solo, o al revés, dividir un recurso en múltiples recursos independientes. Generalmente se aplica a medios de almacenamiento. Ejemplos de este tipo de virtualización serían las bases de datos distribuidas o los discos duros en RAID.

    Otra forma de virtualización de recursos muy conocida son las redes privadas virtuales o VPN. Una VPN permite a un equipo conectarse a una red corporativa a través de Internet como si estuviera en la misma ubicación física de la compañía.

Ventajas de la virtualización

  • Simultáneamente los usuarios pueden trabajar con varios entornos diferentes e independientes. En una organización o empresa esto puede ser muy útil ya que los usuarios podrían trabajar mas libremente en las máquinas virtuales y la máquina real sería de uso restringido donde el usuario solo tendría acceso a lo que es crítico para la organización.
  • Si la estrategia de la organización es cambiar a menudo de aplicaciones, el uso de la virtualización permite conservar los puntos de trabajo idénticos y todos los cambios hacerlos sobre el entorno virtualizado y desde un servidor a través de la red. Esto permite que el servicio no se corte por este motivo y facilita la tarea de administración.
  • Facilita también la realización de copias de seguridad y su recuperación.
  • Optimiza la utilización de los recursos en aquellos servidores dedicados que proporcionan servicios sin grandes requerimientos.
  • Otras ventajas serían la menor dependencia del hardware y la facilidad de cambio del puesto de trabajo.

En consecuencia podemos decir que la virtualización proporciona alta disponibilidad, ahorra costes, optimiza el uso y control sobre los recursos y mejora la seguridad de los sistemas virtualizados.

Desventajas de la virtualización

  • Problemas de licencias. La utilización de la virtualización supone un cambio en cuanto a las políticas de licencias por usuario.
  • Utilización de recursos. El software de virtualización tiene unos requerimientos de hardware muy exigentes, sobre todo en cuanto a capacidad de proceso y de memoria RAM. Esto supone una pérdida de rendimiento.
  • Existe una dependencia del sistema operativo anfitrión y del sistema de virtualización elegido. Es decir, el anfitrión limita y es el punto débil del sistema ya que está compartido por todos los sistemas virtualizados.

Utilización en el aula TIC

La virtualización en el aula puede ser de mucha utilidad en casos como:

  • Mantener el software anfitrión inalterado ejecutando las aplicaciones específicas en el sistema operativo virtual. Si se produjera algún tipo daño ya sea por mal uso o malware adquirido a través de la navegación web sólo afectaría al sistema virtual.
  • Realización de pruebas de todo tipo de software cuyos posibles fallos, al igual que en el punto anterior, solo afectarían al sistema virtual.
  • Simulaciones de redes o pruebas de servicios de red entre varios sistemas operativos a la vez.
  • Conocer otros sistemas operativos y compararlos. Por ejemplo, trabajando en Windows, ejecutar puntualmente aplicaciones en GNU/Linux para compararlas. O viceversa.
  • Simplificar el mantenimiento del aula dejando una instalación base como sistema anfitrión y a mediante la virtualización cada profesor crear el entorno personalizado para su materia.

Y expuesto así parece que todo son ventajas, pero sabemos que eso no es cierto, ya que cualquier software de virtualización, tanto si es software libre como propietario, consume muchos recursos. Tal y como se ha nombrado, sobre todo relativos a proceso y memoria RAM.

En el caso del aula TIC el tipo de virtualización mas utilizada es de plataforma y suelen utilizarse los sistemas operativos invitados (VirtualBox, VirtualPC) o la virtualización completa (VmWare).

Pero todas estas ventajas se pueden convertir en inconvenientes si arrancar el software de virtualización supone dejar 'exhausta' la máquina real.

Cuando se disponga de un aula TIC con equipamiento potente y RAM generosa la virtualización aporta mucho valor añadido a la práctica docente.

¿Qué es XEN?

La Universidad de Cambridge creó un proyecto de investigación cuyo resultado fue, en el año 2003, la liberación de la primera versión de XEN. El proyecto estaba liderado por Ian Pratt, quien mas tarde creó un empresa de soporte, mantenimiento y capacitación sobre XEN en Enero de 2005.

La empresa es Xensource Inc., y en la actualidad sigue con XEN (junto con otras empresas y la comunidad de desarrollo), y también se dedica a programar aplicaciones adicionales (no libres) para facilitar el uso, instalación y mantenimiento de XEN.

XEN tiene licencia GPL, es código abierto y tanto Xensource como otras empresas importantes como IBM, Sun, HP, Intel, AMD, RedHat, Novell están involucradas en el mantenimiento y desarrollo de XEN.

XEN funciona en arquitecturas x86 de 32 y 64 bits.

Pero … ¿qué es XEN?

XEN es una herramienta de virtualización que se ejecuta por debajo del sistema operativo y actúa como hypervisor del mismo. Es decir, si el sistema operativo actúa como supervisor de los programas que se ejecutan sobre él, XEN supervisa al supervisor y por lo tanto está en una capa inferior.

XEN llama también a las máquinas virtuales dominios.

Tiene dos forma de trabajar:

  • HVM o 'Full Virtualization', es decir, virtualización completa, que consiste en la instalación de una máquina virtual como si fuera un host independiente.
  • Paravirtualización, que consiste en utilizar un kernel modificado para que pueda comunicarse con el hypervisor de XEN. Este es el uso mas habitual de XEN. A través del hypervisor XEN se comunica directamente con el hardware del equipo (CPU).

El uso HVM tiene la ventaja de que se puede virtualizar Windows, y no es necesario tener un kernel especial para virtualizar sistemas GNU/Linux, aunque su rendimiento es inferior, ya que en ausencia de un kernel adaptado algunos componentes son emulados.

Para utilizar HVM el procesador debe tener soporte. Podemos comprobarlo mirando si tiene la instrucción 'vmx':

cat /proc/cpuinfo | grep flags

flags: fpu de tsc msr pae mce cx8 apic mtrr mca cmov pat pse36

clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc

pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm

En el caso de la paravirtualización tiene el inconveniente de necesitar un kernel adaptado, pero el rendimiento es superior. La paravirtualización consiste en la utilización de niveles de privilegios o rings. Los procesadores mas actuales soportan este tipo de ejecución.

En condiciones normales el sistema operativo o supervisor se ejecuta en el nivel 0 o root-mode que es el que tiene mas privilegios y las aplicaciones en niveles superiores con menos privilegios. La ejecución de XEN provoca un cambio en este esquema de privilegios, de forma que el sistema operativo pasa al nivel 1 dejando el nivel 0 para el software de virtualización. De esta forma XEN consigue el control total de todos los recursos incluyendo el sistema operativo.

Cuando XEN arranca se inicia el hypervisor y automáticamente se arranca el primer dominio llamado 'dominio cero' o 'Dom0'. Este es un dominio especial de carácter administrativo imprescindible para iniciar o administrar otras maquinas virtuales (otros dominios). Dom0, por tanto, es un dominio privilegiado ya que desde allí se pueden administrar los demás dominios que se vayan creando y que se llaman genéricamente 'DomU', donde la U viene de Unprivileged.

No hay que confundir este modo de trabajo de XEN con el de otros sistemas de virtualización, como los utilizados por productos como VmWare, VirtualBox, Virtual PC o Virtual Server de Microsoft. En el caso de XEN los sistemas virtualizados corren directamente sobre el procesador, sin emulación, por lo que el rendimiento es mucho mayor.

XEN puede funcionar tanto en sistemas libres como propietarios. En el caso de sistemas libres con código abierto directamente, y en el caso de los propietarios empresas como INTEL y AMD han desarrollado procesadores que permiten que el sistema operativo se ejecute a un nivel superior sin necesidad de 'tocar' el código del sistema operativo.

Usos e interfaces para XEN

Podríamos incluirlos como ventajas, pero simplemente los describiremos como posibles campos de utilización de este tipo de virtualización.

  1. XEN aprovecha mejor los recursos hardware de la máquina. Si trasladamos este concepto al ámbito de la empresa u organización sabemos que el típico servidor, web, de correo electrónico o dns, rueda sobre una máquina que no se está aprovechando al máximo sus capacidades. Estos servicios de red se pueden migrar a máquinas virtuales diferenciadas (si se quiere) pero que se ejecutan sobre la misma máquina real. De esta forma hace falta menos servidores con el consiguiente menor gasto de inversión, mantenimiento y actualización y de espacio físico también.
  2. Las máquinas virtuales XEN pueden ser utilizadas también en el caso de que 'caigan' las máquinas reales. De esta forma los servicios ofrecidos no se paran mientras se solucionan los problemas del hardware.
  3. Existen servicios que se ejecutan sobre máquinas antiguas que ocupan mucho espacio físico pero que no requieren muchos recursos. Estos servicios se pueden virtualizar y los equipos antiguos ser sustituidos por máquinas virtuales.
  4. En el caso de empresas dedicadas a la programación, que desarrollan aplicaciones, la utilización de máquinas virtuales es perfecta para realizar las pruebas. De esta forma no interactúan entre si los programadores y las máquinas se crean y destruyen todas las veces que haga falta.

Por otro lado y en relación a las diferentes distribuciones GNU/Linux como Debian o Fedora y otras, están sacando versiones de sus distribuciones preparadas para XEN, es decir, con kernels que pueden ser virtualizados o que actúen como host de máquinas virtuales (domain 0).

Respecto a las interfaces, una de las ventajas que tiene XEN es que, al ser software libre, aparecen continuamente nuevas interfaces de administración.

De ellas las mas conocidas son:

  • Enomalism (escrita en python)
  • Xenman (gtk).
  • Convirt (disponible en los repositorios de Ubuntu)
  • Virt-manager: interfaz de administración desarrollada por RedHat y disponible desde Ubuntu.
  • XEN Enterprise: producto de Xensource con una interfaz de administración, monitoreo y algunas herramientas útiles para instalar fácilmente diferentes sistemas operativos en las máquinas virtuales.

De ellas la más compleja es Enomalism por el sistema utilizado para la autenticación de usuarios.

También se puede trabajar con XEN desde la terminal en línea de orden. No es excesivamente complicado.

Características de XEN

Enumeramos sus principales características:

  • Código fuente reducido y buena velocidad y gestión de los recursos (E/S, red, CPU y memoria).
  • Buen rendimiento.
  • Con soporte de hasta 32 procesadores en paralelo (SMP).
  • Soporta PAE (Physical Address Extension) para servidores de 32 bits con más de 4GB de memoria RAM. Recordar que un kernel PAE es una versión del kernel para 32bits que permite reconocer hasta 64GB RAM.
  • Permite 'mover en caliente' máquinas virtuales.
  • Instalar XEN solo necesita un kernel con el parche de XEN y las herramientas de usuario para poder crear, destruir y modificar los valores de las máquinas virtuales en caliente.

Los archivos de configuración de las máquinas virtuales de XEN son muy simples aunque siempre es mas amigable trabajar sobre interfaz gráfica.

Los archivos de kernel y ramdisk residen en el disco del 'domain 0'. Requiere que se especifique la cantidad de memoria en megabytes que se le da inicialmente a la máquina virtual, así como los parámetros de la interfaz de red, la MAC y el nombre que tiene la interfaz (domain 0) que actúa haciendo de 'puente' entre el 'domain 0' y la intefaz de red virtual de la máquina virtual. Por defecto XEN crea un puente para enviarle los paquetes que llegan a la placa física de red que están destinados a la máquina virtual.

XEN utiliza LVM (Logical Volumen Manager) para darle más flexibilidad al espacio que puede utilizar la máquina virtual. Permite también simular a la máquina virtual que tiene más procesadores de los que en realidad tiene, detalle que puede ser de mucha utilidad al trabajar con aplicaciones que usen varios procesadores.

Conclusión

XEN en la actualidad es ya un software suficientemente probado. Su licencia GPL lo hace muy atractivo para entornos de producción ya que abarata mucho los costes. Y combinado con sistemas de almacenamiento tipo RAID le aseguran una alta disponibilidad.

Dejamos para un próximo artículo la utilización de XEN, su configuración y gestión desde una interfaz gráfica como caso práctico en entornos GNU/Linux.