Una máquina virtual es un software que crea un entorno virtual entre la plataforma de la computadora y el usuario final, permitiendo que este ejecute un software determinado.
El concepto de máquina virtual surge con el sistema VM/370 de IBM en 1972. La idea principal es la de permitir ejecutar varios sistemas operativos simultáneamente sobre el mismo hardware. Para ello, separa las dos funciones básicas que realiza un sistema de tiempo compartido: multiprogramación y abstracción del hardware.
El corazón del sistema es conocido como monitor de máquina virtual, y se ejecuta sobre el hardware proporcionando varias máquinas virtuales al siguiente nivel de software. Por eso cada una puede estar ejecutando un sistema operativo distinto.
Básicamente se pueden considerar 3 tipos de virtualización: emulación, virtualización completa (Full Virtualization), paravirtualización (Paravirtualization).
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.
Figura 2.1:
Emulación
|
 |
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 huésped (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 huésped 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.
Figura 2.2:
Virtualización completa
|
 |
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.
Hay que tener en cuenta también que la virtualización completa no se refiere a todo el conjunto de hardware disponible en un equipo, sino a sus componentes principales, básicamente el procesador y memoria. De esta forma, otros periféricos como tarjetas gráficas, de red o de sonido, no se virtualizan. Las máquinas huésped no disponen de los mismos dispositivos que el anfitrión, sino de otros virtuales genéricos. Por ejemplo, si se dispone de una tarjeta nVidia GeForce en el anfitrión, los equipos huésped no verán esta tarjeta sino una genérica Cirrus.
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 (huésped) 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 huésped y anfitrión colaboran en la tarea.
Figura 2.3:
Paravirtualización
|
 |
Uno de los componentes más destacados de esta familia es Xen. Permite paravirtualización utilizando sistemas operativos modificados, y virtualización completa sobre procesadores con tecnología Intel-VT o AMD-V.
Usos de la virtualización
Los usos de la virtualización pueden ser muy variados, desde el simple echo de necesitar ejecutar una aplicación que no existe en tu sistema operativo hasta el testeo de sistemas operativos. Los más importantes usos son los siguientes:
- Aprovechamiento de servidores: los servidores salvo en casos excepcionales están infrautilizados, con la virtualización se pueden correr varios sobre la misma maquina y así aprovechar mejor las maquinas, reduciendo el espacio ocupado por los servidores y el consumo de energía.
- Desarrollo: se puede desarrollar una aplicación que deba de ejecutarse en distintas plataformas, como ejemplo se podría mencionar el desarrollo de sistemas operativos o algo mucho mas común, el desarrollo de paginas web sobre Linux y su visualización sobre Internet Explorer.
- Plataformas obsoletas: a menudo se necesita usar aplicaciones antiguas que solo corren sobre un hardware antiguo, de esta manera se podría migrar esta maquina real a una virtual y dejar de depender del hardware.
- Seguridad: es frecuente separar los servicios ofrecidos en una red en distintas máquinas por razones de seguridad.
A continuación se muestran las distintas soluciones existentes para utilizar máquinas virtuales:
Subsecciones
System User
2008-07-23