jueves, febrero 21, 2008

Ubuntu y su virtualización

Leo en LaConsola un artículo llamado Ubuntu + KVM su virtualización muy interesante y del cual pongo el enlace y lo transcribo:

"De esta manera, KVM tendrá un lugar especial en la próxima Ubuntu 8.04 “Hardy Heron”. Desde mis inicios en Linux, y durante mucho tiempo intenté virtualizar una maquina en mi equipo, los resultados no fueron otros que frustración incluyendo la instalación de vmWare que funciono pero de manera muy deficiente, el común denominador fue siempre la falta de memoria.

Las cosas han cambiado para mi a partir del incremento de memoria, recién he pasado de 0.256 a 1.2 Gb en RAM y con ello de la teoría a la práctica. He vuelto a instalar vmWare y he experimentado con VirtualBox y Kqemu, en ese orden pues mis preferencias teóricas se inclinaron por Qemu y lo confirmo por la práctica, aunque la GUI de VirtualBox sea la mas bonita.

Hoy con la noticia (bueno no hoy en realidad la leí el día 8, espero no me lo echen en cara :-) ) me preguntaba que tanto conocemos sobre la virtualización y preparé lo siguiente con la idea que les pudiera servir en algo, desde luego mi foco es la noticia.

Un poco de teoría para entender los tipos de vistualización:

La presentación de KVM es una interesante evolución de Linux, ya que es la primera tecnología de virtualización que pasa a formar parte del propio núcleo de Linux. Existe a partir de la versión 2.6.20 (leí se puede utilizar como módulo en 2.6.19). Cuando se ejecuta en hardware que soporta la virtualización es posible hospedar a Linux a 32 y 64 bits y Windows a 32 bits.

Existen diversas técnicas de virtualización que alcanzan resultados similares a través de diferentes niveles de abstracción:
Emulación de Hardware

La virtualización más compleja consiste en la emulación de hardware. Con esta técnica, en el sistema anfitrión se utiliza una máquina virtual que emula el hardware.

El principal problema con la emulación de hardware es que puede resultar demasiado lenta, debido a que cada instrucción debe ser simulada por el hardware subyacente.
Virtualización completa

La virtualización completa, también llamada virtualización nativa, es otra interesante técnica de virtualización. Este modelo utiliza una máquina virtual que media entre el sistema operativo invitado y el hardware nativo. Algunas instrucciones protegidas deben capturarse y manejarse dentro del hipervisor ya que el hardware subyacente no es propiedad de un sistema operativo sino que es compartido a través del hipervisor.

La virtualización completa es más rápida que la emulación de hardware, pero el rendimiento es menor que cuando se utiliza hardware debido a la mediación del hipervisor. La gran ventaja de la virtualización completa es que un sistema operativo puede ejecutarse sin modificaciones.
Paravirtualización

La paravirtualización es otra técnica popular que cuenta con algunas similitudes con la virtualización completa. Este método utiliza un hipervisor para compartir el acceso al hardware subyacente pero integra código que está al tanto de la virtualización en el propio sistema operativo. Esta aproximación evita la necesidad de recompilar y capturar ya que los propios sistemas operativos cooperan en el proceso de virtualización.

La paravirtualización precisa que los sistemas operativos alojados sean modificados por el hipervisor, lo que es una desventaja. Pero la paravirtualización ofrece un rendimiento próximo al de un sistema no virtualizado.
Virtualización en el nivel del sistema operativo

La virtualización en el nivel del sistema operativo, utiliza una técnica diferente a las anteriores. Esta técnica virtualiza los servidores encima del propio sistema operativo. Este método soporta un solo sistema operativo y simplemente aisla los servidores independientes.

La virtualización en el nivel del sistema operativo requiere cambios en el núcleo del mismo sistema operativo, la ventaja es un rendimiento igual a la ejecución nativa. Es el caso de nuestra noticia y la posible relación Ubuntu + KVM.
Nuevas tecnologías de virtualización

Intel está produciendo una nueva tecnología de virtualización que soportará hipervisores en dos de sus arquitecturas, tanto en x86 (VT-x) y (VT-i). VT-x soporta dos nuevos modos de operación, uno para la VMM (root) y otro para los sistemas operativos hospedados (no root).

AMD está produciendo la tecnología Pacifica en la que el hardware asiste a la virtualización.

Estas nuevas tecnologías pueden utilizarse en varias de las técnicas de virtualización arriba descritas.
Linux KVM (Kernel Virtual Machine)

Como se ha comentado, Linux ha incorporado a KVM en el núcleo (2.6.20). KVM es una completa solución de virtualización única al convertir al núcleo Linux en un hipervisor utilizando un módulo del núcleo. Este módulo permite a otros sistemas operativos alojados ejecutarse en el espacio de usuario del núcleo Linux anfitrión. El módulo KVM en el núcleo expone el hardware virtualizado a través del dispositivo de caracteres /dev/kvm. El sistema operativo alojado se comunica con el módulo KVM utilizando un proceso que ejecuta un QEMU modificado para obtener la emulación de hardware.

El módulo KVM introduce un nuevo modo de ejecución en el núcleo. Donde el kernel standard aporta el modo kernel, y el modo user KVM aporta el modo guest. Este modo es utilizado para ejecutar todo el código del huésped en el que no se utiliza entrada/salida, y el modo normal de usuario proporciona la entrada/salida para los huéspedes.

Aquí mismo en LaConsola, Eral nos comenta en su artículo: Instalar Qemu con Capa de Aceleración (Acceleration Layer) las características mas importantes de qemu y su notable desempeño en nuestro ordenador.

En relación a KVM no he podido notar respuesta evidente de mejoría en mi maquina con su instalación, tampoco en mi red de dos. Pero ustedes lo podrían intentar, se dice agregando KVM a su red el desempeño sería brillante.

Para mas información consulten la página oficial de KVM donde encontrarán una buena documentación y tutoriales para su instalación.

No hay comentarios: