Virtualización con Ubuntu 11.10 y KVM (I-Teoría)

Virtualización se refiere a la abstracción de los recursos de una computadora, llamada Hypervisor o VMM (Virtual Machine Monitor) que crea una capa de abstracción entre el hardware de la máquina física (host) y el sistema operativo de la máquina virtual (virtual machine, guest), siendo un medio para crear una versión virtual de un dispositivo o recurso, como un servidor, un dispositivo de almacenamiento, una red o incluso un sistema operativo, donde se divide el recurso en uno o más entornos de ejecución.

Básicamente podemos considerar 3 tipos de virtualización: emulación, virtualización completa (Full Virtualization) y paravirtualización:

  • Emulación: La emulación se basa en crear máquinas virtuales que emulan el hardware de una o varias plataformas hardware distintas. Este tipo de virtualización es la más costosa y la menos eficiente, ya que obliga a simular completamente el comportamiento de la plataforma hardware a emular e implica también que cada instrucción que se ejecute en estas plataformas sea traducida al hardware real.

    Sin embargo la emulación tiene características interesantes, como poder ejecutar un sistema operativo diseñado para una plataforma concreta sobre otra plataforma, sin tener que modificarlo, o en el desarrollo de firmware para dispositivos hardware, donde se pueden comenzar estos desarrollos sin tener que esperar a tener disponible el hardware real.

  • Virtualización completa: Con este término se denominan aquellas soluciones que permiten ejecutar sistemas operativos huesped (Guest), sin tener que modificarlos, sobre un sistema anfitrión (Host), utilizando en medio un Hypervisor o Virtual Machine Monitor que permite compartir el hardware real. Esta capa intermedia es la encargada de monitorizar los sistemas huesped con el fin de capturar determinadas instrucciones protegidas de acceso al hardware, que no pueden realizar de forma nativa al no tener acceso directo a él.

    Su principal ventaja es que los sistemas operativos pueden ejecutarse sin ninguna modificación sobre la plataforma, aunque como inconveniente frente a la emulación, el sistema operativo debe estar soportado en la arquitectura virtualizada.

    En lo que respecta al rendimiento, éste es significativamente mayor que en la emulación, pero menor que en una plataforma nativa, debido a la monitorización y la mediación del hypervisor. Sin embargo, recientes incorporaciones técnicas en las plataformas x86 hechas por Intel y AMD, como son Intel VT y AMD-V, han permitido que soluciones basadas en la virtualización completa se acerquen prácticamente al rendimiento nativo.

    Un par de ejemplos significativos son VMware y KVM.

  • Paravirtualización: La paravirtualización surgió como una forma de mejorar la eficiencia de las máquinas virtuales y acercarlo al rendimiento nativo. Para ello se basa en que los sistemas virtualizados (huesped) deben estar basados en sistemas operativos especialmente modificados para ejecutarse sobre un Hypervisor. De esta forma no es necesario que éste monitorice todas las instrucciones, sino que los sistemas operativos huesped y anfitrión colaboran en la tarea.

    Uno de los componentes más destacados de esta familia es XEN, el cual permite paravirtualización utilizando sistemas operativos modificados, y virtualización completa sobre procesadores con tecnología Intel-VT o AMD-V. Para la gestión de las máquinas virtuales existen aplicaciones propietarias e incluso alguna open-source como ConVirt, que permite gestionar también desde un único sitio las máquinas virtuales de diferentes servidores, realizar tareas sobre ellas, o modificar sus configuraciones.

Cabría destacar otro tipo de productos para virtualizar que son aplicaciones de escritorio para virtualizar (OS level Virtualization), como Vmware-player y VirtualBox. Estos tipos de virtualización están muy bien para virtualizar Sistemas Operativos en nuestro escritorio y hacer pruebas puntuales pero no para estar siempre ejecutándose. Ya que son programas que requieren tener las X (Desktop), comparten los recursos del Host y no están indicados para ser ejecutados con un servicio o demonio del sistema en un servidor y su rendimiento es menor.

Características de KVM

Como se ha explicado en uno de los puntos anteriores, KVM es uno de los productos que ofrece virtualización completa, permitiendo a priori ejecutar, como huesped, cualquier sistema operativo sin tener que haberlo modificado previamente. Para ello se basa en las nuevas instrucciones Intel-VT y AMD-V, por lo que será necesario disponer de un equipo con un procesador que las soporte para poder utilizarlo.

La principal ventaja es que viene incluido como un módulo del kernel desde la versión 2.6.20 de Linux, por lo que no es necesario instalar ningún software específico. Si se dispone de una máquina con el procesador adecuado y se instala un linux basado en este kernel, se dispondrán automáticamente de los servicios de virtualización. 

El funcionamiento de KVM se basa en que el módulo introduce un nuevo modo de ejecución aparte de los habituales kernel y user mode, con el nombre “guest mode”. Este modo se utiliza para ejecutar todo el código de los huesped que no sea de entrada/salida (I/O), mientras que el modo “user mode” se utiliza para la I/O de los huesped.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentarios:

Publicar un comentario