martes, 14 de abril de 2009

La Virtualizacion en tu PC

Estoy probando un software de virtualizacion llamado VMWARE
Con este programa puedo "simular" que tengo un sistema operativo diferente en mi computadora, por ejemplo, puedo tener Windows Vista instalado y con vmware puedo "simular" en una ventana aparte de que dispongo de un Debian 4 por ejemplo. Pero veamos que nos dice
El Observatorio Tecnologico sobre este tema tan interesante:

INTRODUCCIÓN A LAS

MÁQUINAS VIRTUALES

¿Qué es una máquina virtual?

En muchas ocasiones surge la necesidad de probar un programa o realizar pruebas en otro sistema operativo distinto al instalado. Cual es la solución ¿formatear el equipo e instalar este sistema operativo?. ¿Crear una partición e instalarlo?. ¿Buscar otro equipo en el que sí esté instalado?. La solución es mucho mas sencilla que todo esto: lo único que hay que hacer es instalar una herramienta que emule el sistema operativo que se quiere probar, así no hay necesidad de formatear ni de cambiar de equipo. El sistema operativo emulado debería ser totalmente independiente del sistema operativo real, conviviendo ambos en total armonía y pudiendo pasar de uno a otro con facilidad.

Lo anterior se consigue mediante el uso de las máquinas virtuales. Una máquina virtual es un programa informático que 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.

Se pueden encontrar varios tipos de máquinas virtuales:

  • Máquinas virtuales software: 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. Proporcionan una capa entre las aplicaciones y el sistema operativo que captura todas las llamadas al sistema y las traduce al sistema concreto de ejecución. La máquina virtual de Java o la máquina virtual del entorno .NET son dos claros ejemplos de máquinas virtuales software.
  • Entornos virtuales: este tipo de máquinas se crean para ejecutar directamente aplicaciones que necesitan un entorno determinado de ejecución sobre otro entorno totalmente diferente.
  • Maquinas virtuales hardware: este tipo de aplicaciones 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. Este tipo de máquinas virtuales serán el objeto del presente monográfico y a partir de ahora nos centraremos en ellas.

El uso de software de virtualización permite ejecutar varias máquinas virtuales con distintos sistemas operativos sobre el mismo hardware de manera simultánea. Además estas máquinas virtuales se pueden copiar y mover a otra máquina física de manera muy sencilla, lo que proporciona una manera rápida y cómoda de hacer backups o de reutilizar máquinas existentes. Las máquinas virtuales tienen discos duros virtuales que para la máquina anfitriona (es decir, para la máquina real) son simplemente ficheros de datos que se pueden copiar y manejar. La propia máquina virtual no es mas que un fichero de configuración.

Además existen en Internet muchas máquinas virtuales listas para ser ejecutadas y que permiten tener un entorno de desarrollo web en muy pocos minutos: Linux con Apache, PHP y mySQL instalado y configurado de manera directa, o bien una solución wiki lista para ser usada simplemente descargando una máquina virtual.

Herramientas de virtualización más conocidas

Existen diversas soluciones de virtualización disponibles actualmente, tanto gratuitas como de pago. Las más conocidas son las siguientes:

  • Bochs: un emulador de procesadores x86 y AMD64 con licencia de software abierto. Bochs puede ejecutarse en distintos sistemas operativos, incluyendo Linux, Windows o incluso la XBox. Puede además simular varios sistemas operativos como DOS, Windows o Linux.
  • Microsoft Virtual PC: suite de virtualización de Microsot para Windows y para MacOS. VirtualPC emula un PC estándar y todo el hardware asociado.
  • Parallels Workstation: software de virtualización de la empresa Parallels Incorporation para procesadores Intel x86.
  • QEMU: aplicación de software libre que implementa un emulador de procesador y que incluye un acelerador que permite incrementar la velocidad de las máquinas virtuales.
  • Virtual Iron: otra aplicación de virtualización que ha sido de las primeras en aprovechar las capacidades específicas de virtualización de los nuevos procesadores Intel y AMD.
  • VMWare: una completo conjunto de aplicaciones de virtualización, con herramientas de pago orientadas a la empresa y otras gratuitas más orientadas al uso personal. Hasta hace poco tiempo solo se ofrecía de manera gratuita la aplicación VMWare Player, que permitía ejecutar distintas máquinas virtuales ya creadas y que se podían descargar desde Internet. Desde fechas recientes se ofrece también de manera gratuita VMWare Server, que permite no sólo ejecutar máquinas ya creadas sino crear las máquinas desde el comienzo.
  • Xen: Una herramienta muy usada en la comunidad Linux puesto que hasta hace poco tiempo sólo podía usar Linux/Unix como sistema anfitrión. Con la versión Xen 3.0 ya se puede instalar en Windows.
  • VirtualBox: una herramienta para Windows y para Linux (la versión para MAC actualmente está en desarrollo en fase pre-alfa) liberada bajo licencia GPL y con un rendimiento similar al de otras aplicaciones como VirtualPC o VMWare.

QEMU, VMWare y Microsoft Virtual PC son las tres herramientas mas utilizadas. Por ello y por ser distribuidas de forma gratuita el monográfico se centrará en ellas. Además se ha incluido VirtualBox porque es de código abierto y permite estudiar su código en caso de estar interesado.

Utilidades y usos más frecuentes de las máquinas virtuales

¿Para qué se pueden usar 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. A continuación se detallan algunos de los usos más frecuentes que se le puede dar al software de virtualización:

· 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.

Comparativa de herramientas de virtualización

A continuación se presenta una comparativa de tres de los productos de virtualización comentados: VirtualBox, VMWare Server y Virtual PC 2007.

Característica

Explicación

Producto destacado

Facilidad de instalación.

Los tres productos se instalan de manera muy sencilla mediante un asistente. VirtualBox y VirtualPC se instalan rápidamente. Sin embargo, VMWare server tarda bastante tiempo en instalarse y dependiendo de la máquina puede llegar a tardar más de media hora.

VirtualBox, VirtualPC 2007

Sistemas operativos anfitriones soportados.

VirtualBox: Windows, Linux

VMWare server: Windows, Linux

Virtual PC 2007: Windows, MacOS

VMWare server

Sistemas operativos invitados soportados.

VirtualBox: DOS, Windows, Linux, OS/2, OpenBSD, FreeBSD, Netware, Solaris.

VMWare server: DOS, Windows, Linux, FreeBSD, Netware, Solaris, Virtual Appliances.

Virtual PC 2007: DOS, Windows, OS/2

VMWare server

Soporte para USB

VirtualBox: Sí.

VMWare server: Sí.

Virtual PC 2007: No.

VirtualBox,

VMWare server

Facilidad de creación de máquinas virtuales.

VirtualBox: Fácil.

VMWare server: Fácil.

Virtual PC 2007: Fácil.

VirtualPC 2007, VirtualBox, VMWare Server

Existencia de máquinas virtuales disponibles en Internet.

VMWare server dispone de las llamadas Virtual Appliances, que son máquinas virtuales preconfiguradas y listas para ser usadas. En Internet se pueden encontrar muchas y de muchos tipos.

VMWare server

Integración con el sistema operativo anfitrión: display, carpetas compartidas, drag&drop.

Los tres sistemas disponen de herramientas que permiten mejorar la integración del sistema invitado con el anfitrión una vez instalado. En el caso de VMWare, se llaman VMWare Tools, y en el caso de Virtual PC, Virtual Machine additions. Tanto VMWare como VirtualPC permiten usar drag&drop y carpetas compartidas con el sistema anfitrión.

VMWare Server, VirtualPC 2007

Capacidad de importar máquinas creadas con otras herramientas.

VMWare server es capaz de importar máquinas creadas con VirtualPC.

VMWare Server

Rendimiento.

VirtualBox: Muy bueno.

VMWare server: Muy bueno.

Virtual PC 2007: Muy bueno si se le instalan las Virtual Machine Additions..

VirtualBox, VMWare Server, VirtualPC 2007

En resumen, se podría afirmar que las tres aplicaciones son buenas soluciones de virtualización. Probablemente la balanza se inclina por VMWare server por la existencia de máquinas virtuales disponibles en Internet que agilizan el uso de las máquinas virtuales y por la cantidad de información que existe sobre ella en la red. Además Virtual PC 2007 es una herramienta que no podrá ser usada por los usuarios de Linux, mientras que las otras dos están disponibles en versiones para Windows y para Linux.

Enlaces


Y veamos que nos dice la famosa WIKIPEDIA sobre la VIRTUALIZACION:

En informática, virtualización es un término amplio que se refiere a la abstracción de los recursos de una computadora. Este término es bastante antiguo: viene siendo usado desde antes de 1960, y ha sido aplicado a diferentes aspectos y ámbitos de la informática, desde sistemas computacionales completos hasta capacidades o componentes individuales. El tema en común de todas las tecnologías de virtualización es la de ocultar los detalles técnicos a través de la encapsulación. La virtualización crea un interfaz externo que esconde una implementación subyacente mediante la combinación de recursos en locaciones físicas diferentes, o mediante la simplificación del sistema de control. Un reciente desarrollo de nuevas plataformas y tecnologías de virtualización han hecho que se vuelva a prestar atención a este maduro concepto. De modo similar al uso de términos como “abstracción” y “orientación a objetos”, virtualización es usado en muchos contextos diferentes. En este artículo vamos a ver los usos más comunes de este término, para esto lo dividimos en dos categorías principales:

  • Virtualización de plataforma que involucra la simulación de máquinas virtuales.
  • Virtualización de recursos que involucra la simulación de recursos combinados, fragmentados o simples.

Asimismo, el término virtualización es un concepto importante en contextos no computacionales. Muchos sistemas de control implementan interfaces virtuales en un mecanismo complejo; de esta manera el pedal del acelerador de un automóvil moderno hace más que solo aumentar el flujo del combustible hacia el motor; y el sistema de vuelos por cables (fly by wire) presenta un avión virtual simplificado que tiene muy poco que ver con la implementación física.

Virtualización de plataforma

El sentido original del término virtualización, nacido en 1960, es el de la creación de una máquina virtual utilizando una combinación de hardware y software. Para nuestra conveniencia vamos a llamar a esto virtualización de plataforma. El término máquina virtual aparentemente tiene su origen en el experimento del sistema de paginación (paging system) de IBM M44/44X. La creación y administración de las máquinas virtuales también se refiere a la creación de seudo máquinas, en los primeros días de la CP-40, y de virtualización de servidores más recientemente. Los términos virtualización y máquina virtual han adquirido, a través de los años, significados adicionales.

La virtualización de plataforma es llevada a cabo en una plataforma de hardware mediante un software “host” (“anfitrión”, un programa de control) que simula un entorno computacional (máquina virtual) para su software “guest”. Este software “guest”, que generalmente es un sistema operativo completo, corre como si estuviera instalado en una plataforma de hardware autónoma. Típicamente muchas máquinas virtuales son simuladas en una máquina física dada. Para que el sistema operativo “guest” funcione, la simulación debe ser lo suficientemente robusta como para soportar todas las interfaces externas de los sistemas guest, las cuales pueden incluir (dependiendo del tipo de virtualización) los drivers de hardware.

Existen muchos enfoques a la virtualización de plataformas, aquí se listan con base en cuan completamente es implementada una simulación de hardware (estos términos no son reconocidos universalmente como tales, sin embargo todos los conceptos pueden ser ubicados en la bibliografía del tema).

  • Emulación o simulación: la máquina virtual simula un hardware completo, admitiendo un sistema operativo “guest” sin modificar para una CPU completamente diferente. Este enfoque fue muy utilizado para permitir la creación de software para nuevos procesadores antes de que estuvieran físicamente disponibles. Por ejemplo Bochs, PearPC, Qemu sin aceleración, y el emulador Hercules. La emulación es puesta en práctica utilizando una variedad de técnicas, desde state machines hasta el uso de la recopilación dinámica en una completa plataforma virtual.
  • Virtualización nativa y virtualización completa: la máquina virtual simula un hardware suficiente para permitir un sistema operativo “guest” sin modificar (uno diseñado para la misma CPU) para correr de forma aislada. Típicamente, muchas instancias pueden correr al mismo tiempo. Este enfoque fue el pionero en 1966 con CP-40 y CP[-67]/CMS, predecesores de la familia de máquinas virtuales de IBM. Algunos ejemplos: VMware Workstation, VMware Server, Parallels Desktop, Virtual Iron, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro y z/VM.
  • Virtualización parcial (y aquí incluimos el llamado “address space virtualization”): la máquina virtual simula múltiples instancias de mucho (pero no de todo) del entorno subyacente del hardware, particularmente address spaces. Este entorno admite compartir recursos y aislar procesos, pero no permite instancias separadas de sistemas operativos “guest”. Aunque no es vista como dentro de la categoría de máquina virtual, históricamente éste fue un importante acercamiento, y fue usado en sistemas como CTSS, el experimental IBM M44/44X, y podría decirse que en sistemas como OS/VS1, OS/VS2 y MVS.
  • Paravirtualización: la máquina virtual no necesariamente simula un hardware, en cambio ofrece un API especial que solo puede usarse mediante la modificación del sistema operativo “guest”. La llamada del sistema al hypervisor tiene el nombre de “hypercall” en Xen y Parallels Workstation; está implementada vía el hardware instruction DIAG (“diagnose”) en el CMS de VM en el caso de IBM (este fue el origen del término hypervisor). Ejemplo: VMware ESX Server, Win4Lin 9x y z/VM.
  • Virtualización a nivel del sistema operativo: virtualizar un servidor físico a nivel del sistema operativo permitiendo múltiples servidores virtuales aislados y seguros correr en un solo servidor físico. El entorno del sistema operativo “guest” comparte el mismo sistema operativo que el del sistema “host” (el mismo kernel del sistema operativo es usado para implementar el entorno del “guest”). Las aplicaciones que corren en un entorno “guest” dado lo ven como un sistema autónomo. Ejemplos: Linux-VServer, Virtuozzo, OpenVZ, Solaris Containers y FreeBSD Jails.
  • Virtualización de aplicaciones: consiste en el hecho de correr una desktop o una aplicación de server localmente, usando los recursos locales, en una máquina virtual apropiada. Esto contrasta con correr la aplicación como un software local convencional (software que fueron “instalados” en el sistema). Semejantes aplicaciones virtuales corren en un pequeño entorno virtual que contienen los componentes necesarios para ejecutar, como entradas de registros, archivos, entornos variables, elementos de uso de interfaces y objetos globales. Este entorno virtual actúa como una capa entre la aplicación y el sistema operativo, y elimina los conflictos entre aplicaciones y entre las aplicaciones y el sistema operativo. Los ejemplos incluyen el Java Virtual Machine de Sun, Softricity, Thinstall, Altiris y Trigence (esta metodología de virtualización es claramente diferente a las anteriores; solo una pequeña línea divisoria los separa de entornos de máquinas virtuales como Smalltalk, FORTH, Tel, P-code).

Virtualización de los recursos

El concepto básico de la virtualización de plataforma, descrita anteriormente, se extendió a la virtualización de recursos específicos del sistema como la capacidad de almacenamiento, nombre de los espacios y recursos de la red.

  • Los términos resource aggregation, spanning o concatenation (name spaces) se utiliza cuando se combinan componentes individuales en un mayor recurso o en un recurso de uso común (resource pools). Por ejemplo:
  • RAID y volume managers combinan muchos discos en un gran disco lógico.
  • La Virtualización de almacenamiento (Storage virtualization) refiere al proceso de abstraer el almacenamiento lógico del almacenamiento físico, y es comúnmente usado en SANs (Storage Area Network). Los recursos de almacenamientos físicos son agregados al storage pool, del cual es creado el almacenamiento lógico. Múltiples dispositivos de almacenamiento independientes, que pueden estar dispersos en la red, le aparecen al usuario como un dispositivo de almacenamiento independiente del lugar físico, monolítico y que puede ser administrado centralmente.
  • Channel bonding[1] y el equipamiento de red utilizan para trabajar múltiples enlaces combinados mientras ofrecen un enlace único y con mayor amplitud de banda.
  • Red privada virtual (en inglés Virtual Private Network, VPN), Traducción de dirección de red (en inglés Network Address Translation, NAT) y tecnologías de red similares crean una red virtual dentro o a través de subredes.
  • Sistemas de computación multiprocessor y multi-core muchas veces presentan lo que aparece como un procesador único, rápido e independiente.
  • Cluster, grid computing y servidores virtuales usan las tecnologías anteriormente mencionadas para combinar múltiples y diferentes computadoras en una gran metacomputadora.
  • Particionamiento es la división de un solo recurso (generalmente grande), como en espacio de disco o ancho de banda de la red, en un número más pequeño y con recursos del mismo tipo más fáciles de utilizar. Esto es muchas veces llamado “zoning”, especialmente en almacenamiento de red.
  • Encapsulación es el ocultamiento de los recursos complejos mediante la creación de un interfaz simple. Por ejemplo, muchas veces CPUs incorporan memoria caché o segmentación (pipeline) para mejorar el rendimiento, pero estos elementos no son reflejados en su interfaz virtual externa. Interfaces virtuales similares que ocultan implementaciones complejas se encuentran en los discos, módems, routers y otros dispositivos “inteligentes” (smart).
Enlaces generales

No hay comentarios:

Publicar un comentario