jueves, 2 de octubre de 2008

Máquinas virtuales

La emulación de un dispositivo por parte de otro no es nada nuevo, pero es relativamente reciente en los sistemas "de escritorio".

Existen sistemas que pueden ser emulados por un ordenador con relativa facilidad: una máquina recreativa "arcade" (1), un dispositivo móvil (2), etc. Sin embargo, lo más ambicioso es emular un ordenador completo y que la máquina virtual que ejecutemos sea utilizable (que no sea extremadamente lenta, que pueda ejecutar un sistema operativo más o menos moderno con fluidez, ....)
Hoy en día esto es posible y existen muchos productos, (los hay comerciales, gratuitos y de código abierto [ver enlaces]) que dan un rendimiento excelente, siendo posible ejecutar varios sistemas operativos simultáneamente con un rendimiento bastante decente.

En estas configuraciones existe un sistema operativo "anfitrión" que ejecuta el programa de emulación o virtualización. Este programa se encarga de crear "máquinas virtuales", cada una con sus propias características (memoria RAM, disco duro, procesador, dispositivos, etc) que pueden ejecutar su propio sistema operativo ("huésped") y programas (3).

¿Para qué sirve tener un ordenador corriendo "dentro" de otro ordenador?
Las aplicaciones son numerosas, enumero algunas de las más típicas:

  • Probar programas en distintos sistemas.
    Existen muchos lenguajes y herramientas de programación que pueden ejecutarse en distintos sistemas operativos ("cross-platform"). Es vital probar cómo se ven estos programas, ya que cada sistema funciona diferente en la gestión de ventanas, tamaño de los elementos visuales (botones, menús, fuentes), etc.
    Teniendo varios sistemas virtualizados se puede probar el mismo programa sin necesidad de tener varios ordenadores diferentes o reiniciar el ordenador con otro sistema operativo.
    En la siguiente captura de pantalla (4) se muestra el típico programa de ejemplo (una ventanita que dice "¡Hola, mundo!") en los sistemas operativos MacOSX (anfitrión), Linux y Windows (huéspedes).

  • Centros de soporte a usuarios.
    Cuando se distribuye un programa, aunque esté diseñado para funcionar sobre sólo un sistema operativo, se pueden encontrar múltiples combinaciones de versiones, actualizaciones, parches, etc. Por ejemplo, podemos tener sistemas Windows XP con diferentes "Service Pack", diferentes versiones de Internet Explorer, algunos con la versión "Home Edition", otros con la "Professional", etc.
    Se puede tener un conjunto de máquinas virtuales con todas las combinaciones posibles y probar los programas en estas configuraciones con suma facilidad.

  • Servidores dedicados.
    Cada vez es más frecuente que se ofrezcan servidores dedicados que realmente son una máquina virtual corriendo sobre un servidor real. Al usuario que contrata este servidor dedicado la impresión que le queda es que tiene una máquina para su uso exclusivo, sin embargo, la máquina "real" es compartida por más usuarios, cada uno con su máquina virtual.

  • Evitar reinicios y/o cambios de ordenador.
    Existen programas que sólo se ejecutan sobre un sistema operativo. Si disponemos de una máquina virtual con este sistema y el programa en cuestión instalados, podemos trabajar habitualmente con nuestro sistema preferido y arrancar la máquina virtual cuando necesitemos el programa en cuestión.
    No siempre esto es posible, puede que este programa requiera muchos recursos y no funcione bien en una máquina virtual, o que necesite un controlador de vídeo específico, etc, pero en muchos casos, es una solución viable. Las máquinas virtuales se pueden ejecutar a pantalla completa y su velocidad es bastante buena en muchos casos (5).


¿Algún lector nos puede poner más usos y ejemplos? Si tienen alguna captura de pantalla puedo incorporarla a esta entrada.


Captura 1: emulación de una máquina recreativa arcade. El programa emulador es MAME.

MAME

Captura 2: emulación de un teléfono móvil. El programa es el entorno de desarrollo Netbeans.

Móvil

Captura 3: un ordenador con MacOSX (anfitrión) ejecutando dos máquinas virtuales (huéspedes) corriendo Linux y Windows (pulsar para ver a pantalla completa).

Host MacOSX

Captura 4: el típico "¡Hola, mundo!" en tres sistemas operativos diferentes (pulsar para ver a pantalla completa).

Hola mundo en tres sistemas operativos

Captura 5: se muestra una sesión de trabajo en la que un anfitrión Linux ejecuta una máquina virtual Windows, a pantalla parcial y pantalla completa.



Enlaces:
VMware: ofrece varios productos, unos gratuitos (VMware Player) y otros comerciales.
VirtualBox, Qemu, Bochs, Xen: gratuitos y de código abierto.

11 comentarios:

  1. Yo utilizo VirtualBoz bajo Ubuntu y tengo que decir que ahora funciona de fábula. Realmente genial.Lo único que quería aclarar es que con los sistemas operativos Windows que se comercializan, al comprar un ordenador o de forma independiente, aunque pagues por ello, el contrato que te obligan a aceptar no te permite bajo ningún concepto utilizar dicho programa en una máquina virtual (fijaos cuando aceptéis o buscad el archivo EULA).-si lo haces estás infringiendo dicho contrato (y en un principio la ley)-Cosas del gigante informático, al que no te creas que le compras un producto con el que hacer lo que quieras, no.

    ResponderEliminar
  2. Añadir que yo le veo la utilidad, a nivel de usuario, de probar un nuevo sistema operativo antes de pegar el salto. Todos hemos oído hablar de un sistema operativo que es ''realmente genial'', ''fácil'', ''útil'' o ''práctico'', o simplemente ''mejor''. Las máquinas virtuales te ofrecen la posibilidad de probarlos sin que tu viejo ordenador deje de ser funcional, ni tener que empezar a hacer particiones de disco y demás. Así vas formándote y probando y, cuando te sientas seguro, pegas el salto.

    ResponderEliminar
  3. > con los sistemas operativos Windows que se comercializan, al comprar> un ordenador o de forma independiente, aunque pagues por ello, el contrato> que te obligan a aceptar no te permite bajo ningún concepto utilizar dicho> programa en una máquina virtualYo tenía entendido que con Vista no se podía instalar en una máquina virtual (ni lo he probado), con XP no estoy seguro.C&P de c:/WINDOWS/system32/eula.txt (de un Windows XP).''''''Puede instalar, utilizar, tener acceso, presentary ejecutar una copia del Producto en un único equipo, comouna estación de trabajo, terminal u otro dispositivo (''Equipoestación de trabajo''). El Producto no puede ser utilizado pormás de dos (2) procesadores a la vez en un único Equipoestación de trabajo.''''''En mi opinión, según estos términos, no está contemplada la instalación en una máquina virtual, ni para prohibirla ni autorizarla. A ver si me entero bien ;-)

    ResponderEliminar
  4. Muy majo el articulo.Me encantaría que publicaseis pequeños tutoriales de linux para los que estamos empezando a usar esa maravilla. Aunque es muy facil de usar, es tan potente y amplio que muchos tenemos dudas.Un saludo

    ResponderEliminar
  5. Pues en el LHC virtualizan Scientific Linux sobre Mac para evitar que las caídas en los servidores no afecten al sistema completo y poder escalar mejor el mismo.

    ResponderEliminar
  6. Buen articulo, como todo este blog, pero tengo una duda.Normalmente, un ''Servidor dedicado'' sí que es un servidor propio. A lo que haces referencia a un ''Servidor Virtual Privado'' (conocido como VPS, sus siglas en inglés). Al menos eso tenía entendido yo. Como dices, funcionan como máquinas independientes, incluso se pueden reiniciar. Se les puede asignar recursos propios o pueden compartirlos; incluso se puede hacer una combinación de ambos: recursos mínimos, pero pueden usar todo el servidor si está disponible.Por cierto, ¿Que tal si nos habláis de ''Sherp@'', el CMS de Público para su web, algún día?Un saludo, y gracias por este gran blog.

    ResponderEliminar
  7. No solo se puede generar un sistema operativo huesped, tambien se puede generar copias imagen (flashcopy) del sistema para luego de instalar programas que queremos probar su funcionamiento dejar el sistema huesped como antes de la instalación. Esteo te permite tener un sistema huesped limpio y en condiciones optimas de ejecución para pruebas. Realmente es una magnifica solución y actualmente los sistemas mencionados (uso VirtualBox actualmente) son muy estables.Merece la pena meterse en este mundo.

    ResponderEliminar
  8. Para PabloLos sistemas comerciales de virtualización (por ejemplo VMWare) permiten de forma dinamica modificar los recursos asignados a cada maquina virtual y migrar de una maquina fisica o otro maquina fisica sin perdida de servicio, es a lo que se esta evolucionando los CPD de grandes instalaciones por la facilidad de uso y gestión que da a los técnicos.

    ResponderEliminar
  9. Para Pablo:> A lo que haces referencia a un ”Servidor Virtual Privado” (conocido como VPS, sus siglas en inglés)¡Gracias por la aclaración! Es cierto: un servidor dedicado es eso, una máquina *real* dedicada.

    ResponderEliminar
  10. Xen es un nuevo (y tiene ya sus añitos) paradigma de virtualización (y SI, el libre) hay mucha gente que ya lo utiliza. Además, la apuesta de Xen es poder correr en paralelo como huesped casi cualquier SO (conocido). Se han oido muuuchos rumores acerca de la integración de Xen en máquinas muy comerciales. En cualquier caso, entre vmware, parallels, winw y demás, todo el mundo puede hacer sus pinitos

    ResponderEliminar
  11. Las máquinas virtuales son muy útiles en la enseñanza de la informática. Permiten que el estudiante juegue sin miedo con un alto nivel de privilegios, porque en caso de errores graves en la configuración o de brechas de seguridad no es necesario reinstalar el equipo, sino volver a ejecutar la versión original de la máquina virtual. En general es muy atractiva la posibilidad de trabajar con privilegios superiores a los de la máquina huésped.

    ResponderEliminar