Máquinas virtuales

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

¿Qué es una máquina virtual?

Una maquina virtual viene a ser un Software que emula a un Ordenador.

Una máquina virtual (MV) o virtual machine (VM) es una implementación de software de una máquina física ya sea un servidor o una pc. Es un contenedor de software perfectamente aislado que puede ejecutar sus propios sistemas operativos y aplicaciones como si fuera un ordenador físico. Crea un entorno virtual entre el sistema operativo y el hardware para que el usuario final pueda ejecutar aplicaciones en una máquina abstracta. Por decirlo de manera más sencilla, una máquina virtual es una aplicación que simula el funcionamiento de una máquina real sobre la que se pueden instalar sistemas operativos, aplicaciones, navegar de forma segura, imprimir desde alguna aplicación, usar los dispositivos USB, etc. La máquina virtual se comporta exactamente igual que un ordenador físico y contiene su propia CPU virtual, memoria, disco duro y tarjeta de interfaz de red. Una máquina virtual se compone exclusivamente de software y no contiene ninguna clase de componente de hardware.

Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta "computadora virtual".

Concepto de virtualización

Virtualizar significar aparentar que algo con una forma tiene otra. Virtualizar un ordenador significa aparentar que se trata de múltiples ordenadores o de un ordenador completamente diferente. Virtualización tambien puede significar conseguir que varios ordenadores parezcan uno solo. A este concepto se le suele denominar agregación de servidores (server aggregation) o grid computing.

Tipos de virtualización

La virtualización se puede hacer desde un sistema operativo Windows, ya sea XP, Vista u otra versión que sea compatible con el programa que utilicemos, en el que virtualizamos otro sistema operativo como Linux o viceversa, que tengamos instalado Linux y queramos virtualizar una versión de Windows.

Virtualización de hardware

Virtualización asistida por Hardware son extensiones introducidas en la arquitectura de procesador x86 para facilitar las tareas de virtualización al software ejecutándose sobre el sistema. Si cuatro son los niveles de privilegio o anillos de ejecución en esta arquitectura, desde el cero o de mayor privilegio, que se destina a las operaciones del kernel de SO, al tres, con privilegios menores que es el utilizado por los procesos de usuario, en esta nueva arquitectura se introduce un anillo interior o ring -1 que será el que un hypervisor o Virtual Machine Monitor usará para aislar todas las capas superiores de software de las operaciones de virtualización.

La virtualización de almacenamiento

Se refiere al proceso de abstraer el almacenamiento lógico del almacenamiento físico, y es comúnmente usado en SANs ("Storage Area Network" Red de área de almacenamiento).Los recursos de almacenamiento físicos son agregados al "storage pool" (almacén de almacenamiento), del cual es creado el almacenamiento lógico.

Máquina virtual

Básicamente una máquina virtual (MV) o virtual machine (VM) como más nos gusta llamarlas a nosotros es una implementación de software de una máquina física ya sea un servidor o una pc. Estas máquinas virtuales utilizan recursos físicos como cpu, memoria y disco rígido del equipo físico donde corren los cuales le permiten a la misma correr un sistema operativo.

Tipos de máquinas virtuales

Ejemplo de máquina virtual de hardware, mediante vmware.
La JVM es un ejemplo de máquina virtual de proceso.

Máquinas virtuales de hardware

Las máquinas virtuales de hardware también llamadas máquinas virtuales de sistema, son aplicaciones que tratan de emular directamente el hardware. Las llamadas al hardware del sistema operativo instalado serán capturadas y convertidas en llamadas al sistema del hardware emulado. En general, la emulación del hardware recibe el nombre de virtualización. Al emularse directamente el hardware, el usuario tiene la impresión de que la máquina sobre la que está trabajando es totalmente independiente. Estas maquinas virtuales, permiten a la máquina física subyacente multiplicarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativo. A la capa de software que permite la virtualización se la llama monitor de máquina virtual o hypervisor. Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el hardware o bien sobre un sistema operativo ("host operating system").

Máquinas virtuales de software

Las máquinas virtuales de software también llamadas como máquinas virtuales de proceso, este tipo de máquinas virtuales se sitúan por encima del sistema operativo y tratan de aislar a las aplicaciones del entorno sobre el que se ejecutan. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma. La máquina virtual de Java o la máquina virtual del entorno .NET son dos claros ejemplos de máquinas virtuales software.

Técnicas de implementación de las maquinas virtuales

Emulación del hardware subyacente (ejecución nativa) o Virtualización completa

La virtualización completa utiliza un hipervisor para compartir el hardware subyacente.

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. "Mediar" es la palabra clave aquí porque la VMM está entre el sistema el sistema operativo invitado y el hardware real. 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.

Son 2 tipos de hipervisores:

el tipo 1 : se ejecuta directamente sobre el hardware.

el tipo 2 : se ejecuta sobre otro sistema operativo.

Cada máquina virtual puede ejecutar cualquier sistema operativo soportado por el hardware subyacente. Así los usuarios pueden ejecutar dos o más sistemas operativos distintos simultáneamente en computadoras "privadas" virtuales.

Emulación de un sistema no nativo

Las máquinas virtuales también pueden actuar como emuladores de hardware, permitiendo que aplicaciones y sistemas operativos concebidos para otras arquitecturas de procesador se puedan ejecutar sobre un hardware que en teoría no soportan. Algunas máquinas virtuales emulan hardware que sólo existe como una especificación. Por ejemplo:

La máquina virtual P-Code que permitía a los programadores de Pascal crear aplicaciones que se ejecutasen sobre cualquier computadora con esta máquina virtual correctamente instalada .

La máquina virtual de Java .

La máquina virtual del entorno .NET .

Paravirtualización

La paravirtualización comparte el proceso con el SO alojado (Guest OS).

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. Del mismo modo que con la virtualización completa, es posible soportar varios sistemas operativos diferentes de manera concurrente.


Virtualización en el nivel del sistema operativo

La virtualización en el nivel del sistema operativo aísla a los servidores.

Esta técnica consiste en dividir una computadora en varios compartimentos independientes de manera que en cada compartimento podamos instalar un servidor. A estos compartimentos se los llama "entornos virtuales". Desde el punto de vista del usuario, el sistema en su conjunto actúa como si realmente existiesen varios servidores ejecutándose en varias máquinas distintas. Dos ejemplos son las zonas de Solaris (Solaris Zones) y la técnica de Micro Partioning de AIX. La virtualización en el nivel del sistema operativo, utiliza una técnica diferente a las que hemos visto. Esta técnica virtualiza los servidores encima del propio sistema operativo. Este método soporta un solo sistema operativo y simplemente aísla los servidores independientes. La virtualización en el nivel del sistema operativo requiere cambios en el núcleo del sistema operativo, la ventaja es un rendimiento igual a la ejecución nativa.


Ventajas de las máquinas virtuales

La capacidad de aprovechar al máximo el hardware disponible ofrece una gran cantidad de posibilidades a nivel empresarial y a nivel doméstico.

Consolidación de servidores: Convertir muchos servidores físicos en virtuales. De este modo se aprovecha el hardware disponible de la mejor manera posible.

Recuperación ante desastres: Las máquinas virtuales se pueden salvar muy fácilmente, y además su estado se puede almacenar, por lo que en caso de desastre se puede recuperar la información con rapidez.

Pruebas de aplicaciones: En muchas ocasiones se necesita un entorno limpio para probar una aplicación. Usar una máquina virtual permite instalar un sistema operativo desde cero, probar la aplicación y luego eliminar la máquina.

Ejecución de entornos completos sin instalación ni configuración: La posibilidad de descargar máquinas virtuales desde Internet permite ahorrar tiempo en instalaciones y configuraciones. Existen muchas máquinas virtuales con servidores LAMP (Linux, Apache, mySQL y PHP) completos listos para ser usados, máquinas con gestores de contenidos, wikis, etc., gratuitos y funcionales desde el primer momento.

Aplicaciones portátiles: Con el uso de las máquinas virtuales se pueden tener PCs completos listos para usar en dispositivos USB, lo que puede ser de mucha utilidad para tener un entorno privado y usarlo en cualquier PC.

Desventajas de las maquinas virtuales

Una de las razones por que las máquinas virtuales, no son la panacea de la computación, es que agregan gran complejidad al sistema en tiempo de ejecución. La principal desventaja de la máquina virtual, es que en la aplicación de algunos proceso tendrá como efecto la lentitud del computador, es decir, la computadora en la cual se esta ejecutando este proceso debe tener una capacidad bastante notable “debe ser de gran capacidad o potente”.

Los lenguajes basados en máquina virtual, poseen una desventaja es que efectivamente son más lentos que los lenguajes completamente compilados, debido a la sobrecarga que genera tener una capa de software intermedia entre la aplicación y el hardware de la computadora, sin embargo, Esta desventaja no es demasiado crítica.

Lista de hardware con soporte para Virtualización

AMD-V (anteriormente llamado Pacifica)

ARM TrustZone

Boston Circuits gCore (grid-on-chip) con núcleos 16 ARC 750D y módulo de virtualización de hardware Time-machine.

Freescale PowerPC MPC8572 y MPC8641D

IBM System/370, System/390 y mainframes ZSeries

Intel VT (anteriormente llamado Vanderpool)

SPARC de Sun Microsystems

Listado de algunas maquinas virtuales

Máquinas virtuales de proceso

Common Language Runtime - C#, Visual Basic .NET, J#, Managed C++

EiffelStudio para el lenguaje de programación Eiffel

Lenguaje de programación Erlang

Forth virtual machine - Forth

Glulx - Glulx, Z-code

Máquinas virtuales de sistema

VThere (de Sentillion, Inc. )

ATL (A MTL Virtual Machine)

Bochs emulador de PC x86 y AMD64, portátil y open source

CoLinux Open Source Linux inside Windows

Denali, uses paravirtualization of x86 for running para-virtualized PC operating systems.

FAUmachine

Máquinas virtuales a nivel de sistema operativo

OpenVZ

Virtuozzo

FreeVPS

Linux-VServer

Investigación

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas