143
INTRODUCCION 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. Suele dividirse 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

VIRTUALIZACION final.doc

Embed Size (px)

Citation preview

Page 1: VIRTUALIZACION final.doc

INTRODUCCION

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. Suele dividirse 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.

En este trabajo tratamos de recopilar toda la información necesaria sobre virtualización,

profundizando aspectos internos del sistema, soporte de hardware y casos de uso.

Creemos que éste es un tema muy importante en la formación profesional de los

egresados de la carrera profesional de Computación e Informática. Al final podremos

evaluar las distintas implementaciones de virtualización determinando en cada caso

posibles modificaciones o soluciones óptimas para diferentes necesidades.

Page 2: VIRTUALIZACION final.doc

En el trabajo se darán algunos ejemplos de virtualización en distintas plataformas,

virtualizaciones tanto desde Windows como desde Linux, usando alguna de las

plataformas de virtualización existentes, VMware, VirtualBox, etc. para intentar realizar

distintos ejemplos y a la vez para comparar el rendimiento que nos ofrecen estas

soluciones, tanto para el anfitrión como para el invitado.

Page 3: VIRTUALIZACION final.doc

CAPITULO I

VIRTUALIZACION

1.1. DEFINICION GENERAL

En términos técnicos de computación, la virtualización es un medio para crear una

versión “virtual” de un dispositivo o recurso, como un servidor, un dispositivo de

almacenamiento, una red o incluso un sistema operativo, donde se divide el recurso

en uno o más entornos de ejecución. También se le conoce como la habilidad de

tener varios sistemas operativos funcionando al mismo tiempo en un mismo

computador o servidor.

Figura 1.: Virtualización

Page 4: VIRTUALIZACION final.doc

Virtualización es el concepto que describe la habilidad de tener varios sistemas

operativos funcionando al mismo tiempo en un mismo computador.

Virtualización es una tecnología que permite que en el sistema operativo (SO) que

se tiene en la PC, se pueda montar y hacer funcionar otro SO, o como quien dice

otro computador “Totalmente” independiente.. Solo imaginemos que tenemos un

computador dentro de nuestro computador. Pues esto es tener en Windows XP o

Vista o Linux o Mac o cualquiera que sea su SO otro “computador” o SO que

puede ser el mismo u otro SO que funciona de forma independiente como se

muestra en las siguientes imágenes.

Figura 2: Windows vista en vista

Figura 3: Windows XP en Linux

Page 5: VIRTUALIZACION final.doc

Figura 4: Windows XP en Mac

1.2. DEFINICIÓN TÉCNICA DE VIRTUALIZACIÓN

Virtualización es el concepto que describe como en un solo computador físico se

coordina el uso de los recursos para que varios sistemas operativos puedan

funcionar al mismo tiempo de forma independiente y sin que ellos (los SO) sepan

que están compartiendo recursos con otros sistemas operativos.

Para lograr esto son necesarios los siguientes componentes:

Un computador físico o CPU o unidad física de hardware.

De acuerdo al tipo de virtualización, la segunda capa es un sistema operativo

o un hipervisor que va instalado como anfitrión o sistema principal, esta es la

parte de la capa que coordina los recursos del sistema como memoria,

procesador, archivos, impresora, tarjeta de red, etc.

Uno o mas sistemas operativos que son los invitados.

Figura 5.: Virtualización

Page 6: VIRTUALIZACION final.doc

En la figura anterior vemos como lo primero que tenemos en la parte de abajo es

el hardware o la parte física del computador (CPU, Memoria, Tarjeta de red o NIC

y Disco Duro), sobre esa capa física va una capa de software que es el que

coordina el acceso a las partes físicas del computador, esta capa es el hipervisor o

un sistema operativo como Windows o Linux que actúan como anfitrión.

Dentro del hipervisor o el contenedor que esté en un sistema operativo anfitrión

van los otros sistemas operativos invitados y es ahí donde se crea una capa virtual

que le hace creer a los invitados que ellos tienen los recursos físicos que tiene el

computador.

1.3. CONCEPTOS BÁSICOS

a) HYPERVISOR

En los años ‘60, IBM llamaba al sistema operativo “supervisor“. Por esto, a

aquellos con capacidad de correr otros sistemas operativos sobre ellos los llamó

“hypervisors“, terminología que persiste en la actualidad. Al hypervisor también

se lo denomina “sistema operativo host“.

b) MAQUINAS VIRTUALES

Las “máquinas virtuales” (como la Java Virtual Machine o el BCPL de los ‘60)

proveen una CPU virtual. Su objetivo no es virtualizar todo el hardware, sino

solamente permitir la ejecución de código portable en distintas arquitecturas

(esto se conoce como “virtualización a nivel de aplicación”). Un intento similar

consiste en la traducción de instrucciones al nivel de la CPU, tal como lo

realizan los procesadores Crusoe.

c) ANFITRIÓN E INVITADO

Los dos conceptos más importantes para entender qué es la virtualización son

los de anfitrión e invitado. Ambos conceptos se refieren a nuestro sistema

operativo, y por lo tanto deberíamos hablar de sistema operativo anfitrión y

sistema invitado.

El anfitrión es el computador en el cual instalamos nuestro programa de

virtualización y que asignará o prestará determinados recursos de hardware

a la máquina virtual que creemos.

El invitado es el computador virtual que hemos creado, mediante nuestro

programa de virtualización y al cual hemos asignado determinados recursos

para funcionar.

Page 7: VIRTUALIZACION final.doc

d) VIRTUALIZADOR

Un virtualizador es, por su parte, un software que permite crear máquinas

virtuales dentro de una máquina física. La principal diferencia con un emulador

es que no traduce instrucciones sino que las ejecuta directamente, con lo cuál no

es posible virtualizar un guest diseñado para una plataforma diferente a la del

host. No obstante, la ventaja de esto es que se obtiene un rendimiento mucho

mayor comparado con los emuladores.

e) EMULADOR

Un emulador es un software que es capaz de ejecutar programas escritos para

otra plataforma o arquitectura como si estuvieran en realidad ejecutándose en

ella, dado que traduce cada instrucción de la máquina huésped a una instrucción

válida para la arquitectura del host. Por ejemplo, un emulador permitiría

ejecutar un programa de Mac OS X en Linux. En el caso de un emulador, el

software que permite ejecutar es el mismo (sin ninguna modificación) que

funciona en la plataforma para la que fue originalmente desarrollado.

f) SIMULADOR

En este caso, se trata de un software que copia el comportamiento de otro,

intentando ser lo más parecido al software que trata de imitar. Notar que un

simulador se trata de otro software distinto al que intenta simular.

1.4. HISTORIA DE LA VIRTUALIZACION

Hace más de 40 años, mucho antes de que se inventara Linux, IBM tenía un

problema. El nuevo System/360 funcionaba de un modo totalmente distinto al del

anticuado 7070. Para facilitar la migración de los clientes potenciales, IBM quería

que las aplicaciones antiguas funcionaran en el nuevo sistema. Tras varias pruebas,

IBM se decantó finalmente por una idea ofrecida por el ingeniero Larry Moss, el

cual sugirió una combinación de software y una extensión de hardware especial. La

solución consistía en la ejecución y monitorización paso a paso de la aplicación

antigua convirtiendo sus comandos en otros que el nuevo System /360 pudiera

entender. De este modo, el nuevo computador se comportaría exactamente igual

que su predecesor. Este sencillo juego de manos permitía a los compradores del

nuevo modelo la posibilidad de continuar usando sus aplicaciones 7070. Dado que

este software emulaba el comportamiento de otro computador, Larry Moss bautizó

su invento como “emulador”.

Page 8: VIRTUALIZACION final.doc

Probablemente IBM ha sido quién más ha contribuido al desarrollo de las máquinas

virtuales, así se tiene el CP-40, desarrollado para un versión modificada del IBM

360/40; el CP-67, desarrollado para el IBM 360/67, el famoso VM/370, y muchos

más. Típicamente las máquinas virtuales de IBM eran “copias” idénticas del

hardware. Un componente llamado Virtual Machine Monitor (VMM) corría

directamente en el hardware real. Luego múltiples máquinas virtuales podían

crearse vía el VMM, y cada instancia de ellas podía correr su propio sistema. La

oferta actual del VM de IBM es considerada una de las plataformas más respetadas

y robustas. Con posterioridad al desarrollo de la máquinas virtuales ha ocurrido: La

vitualización de las CPU y los sistemas de I/O a mediados de los 80, por ejemplo

Windows, LPARS IBM / Hitachi, las x86. Y, a mediado de los 90 esta tecnología

se ha desplazado a los Open Systems, por ejemplo los servidores SUN E10K

1.5. TÉCNICAS DE VIRTUALIZACIÓN

Las técnicas de virtualización, surgidas en el ámbito de los mainframes durante los

años 70 para la optimización de los, por aquel entonces, muy escasos recursos

informáticos, están experimentando un resurgimiento en la actualizad motivado

principalmente por la situación actual del hardware, que es cada vez más potente

(en términos de CPU, memoria y espacio de almacenamiento) y a la vez más

barato. No en vano, la virtualización está considerada una de las tecnologías

estratégicas actuales, con un mayor impacto en los próximos años.

Las técnicas de virtualización generales son:

a) EMULACION

El método de virtualización con el que todos estamos más familiarizados es la

emulación. Todos hemos ejecutado el emulador de nintendo para juegos, o el

de pocket PC, por poner ejemplos. Y todos sabemos cual es su principal

problema: La lentitud. El overhead de simular byte a byte un hardware por

software hace trabajar a las CPU de manera considerable. El desarrollo de

emuladores es una tarea ardua y propensa a errores. 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

Page 9: VIRTUALIZACION final.doc

plataforma hardware a emular e implica también que cada instrucción que se

ejecute en estas plataformas sea traducida al hardware real.

Figura 6: 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.

b) VIRTUALIZACION 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 7: Virtualización completa

Page 10: VIRTUALIZACION final.doc

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.

Aquí podemos hablar entonces de dos estrategias para la virtualización

completa:

1) Virtualización completa con traducción binaria: esta técnica traduce las

instrucciones del kernel del sistema operativo virtualizado mientras que

ejecuta directamente las instrucciones de las aplicaciones de usuario. Este

tipo de virtualización es muy eficiente y tiene la ventaja de que puede

llevarse a cabo en cualquier hardware.

2) Virtualización completa asistida por hardware: en este el propio

hardware provee la tecnología para que las máquinas virtuales puedan

ejecutar el sistema operativo en el nivel privilegiado que utilizaría si

estuviera instalado físicamente. En otras palabras, lo que antes se hacía con

una traducción binaria ahora se ejecuta directamente. Lógicamente, la

performance en los procesadores modernos es mayor con este método. Su

desventaja es obvia: el hardware que se utilice debe tener incorporada la

tecnología de virtualización.

c) PARAVIRTUALIZACION

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

Page 11: VIRTUALIZACION final.doc

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.

La paravirtualización (PV) parte de la base de que el sistema operativo

huesped "sabe" perfectamente que está siendo ejecutado en un entorno virtual,

y modifica su comportamiento de acuerdo con esto. Los sistemas operativos

necesitan ser modificados para adaptarse a un entorno "hardware" virtual, lo

que implica que hay una relación directa entre cómo se escribe el kernel del

sistema operativo y cómo virtualiza la capa de virtualización. Realmente la

Paravirtualización no es virtualización pura, sino más bien una colaboración

entre la capa de virtualización y el sistema operativo virtualizado. Esto

funciona bastante bien en entornos abiertos, donde el kernel del sistema

operativo (como linux o BSD) puede ser modificado para tener en cuenta que

"debajo" hay una capa de virtualización, pero en el caso de otros OS'es (como

es el caso de Windows), la cosa no está tan clara. En este caso, hablar de

rendimiento nativo es realmente relativo, ya que un OS's virtualizado no

ejecuta exactamente el mismo código ni opera igual que si corriera en

hardware real.

Figura 8: Paravirtualización

Este sistema tiene varias ventajas, entre ellas la poca carga que le da al

procesador al no tener que tener una capa completa de virtualización que se

encarga de administrar los recursos y virtualizarlos. Otra de las ventajas, es

que los sistemas invitados no tienen que limitarse a los accesorios de hardware

que sean soportados por el hipervisor, pues al invitado actuar directamente con

la parte física es posible manejar todos los accesorios que maneja el sistema

Page 12: VIRTUALIZACION final.doc

operativo montado en el invitado. Este sistema utiliza memoria compartida que

puede ser usada por dos programas diferentes de esta forma envía y recibe

información de los invitados para el hipervisor de esa forma es que se alcanzan

buenos niveles de rendimiento. La desventaja es que para poder hacer esto, el

hipervisor necesita modificar los sistemas operativos que se montan como

invitados, es decir toma el código del sistema operativo y le agrega algunas

líneas, así es como ya se puede imaginar solo sistemas operativos como Linux

o BSD al cualquiera de código abierto pueden ser usados. Windows no es una

opción en este caso, pues Bill Gates jamás permitiría que alguien manipule su

código. La buena noticia es que Intel y AMD están produciendo procesadores

que soportan sistemas operativos sin necesidad de modificarlos así es que

Windows sigue estando en la baraja de opciones, claro si se tiene uno de estos

procesadores como Intel VT o el AMD‐V.

El software de paravirtualización mas conocido es Xen que se ofrece como

software libre, este es desarrollado por una compañía llamada XenSource. Esta

aplicación la podemos encontrar gratis en algunas distribuciones de Linux

como Fedora, Red Hat, Suse, Debian o Ubuntu. También Microsoft con su

nuevo Hyper‐V soporta paravirtualización.

La figura siguiente muestra la arquitectura de la paravirtualización.

Figura 9: Arquitectura de la paravirtualización

Page 13: VIRTUALIZACION final.doc

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.

1.6. SOPORTE HARDWARE PARA LA VIRTUALIZACIÓN COMPLETA Y LA

PARAVIRTUALIZACIÓN EN PCs.

Para construir una máquina virtual tenemos que asignar determinados recursos de

hardware, que por lo general son espacio en disco duro, memoria RAM o número

de procesadores que el anfitrión cede al invitado. Además lo normal es que

tengamos que indicar el tipo de sistema operativo que queremos alojar en esta

máquina virtual, especificando si es Windows o una distribución de Linux.

Cuando tengamos nuestra máquina virtual el siguiente paso que debemos hacer

consistirá en instalar un sistema operativo, ya sea Windows o Linux y funcionará

con las mismas reglas que lo hace en un computador normal, actualizaciones,

licencias, instalación de software adicional, etc. Por lo tanto también son

susceptibles de ser atacados por malware como cualquier otro computador. Por

todas estas características que hemos comentado tendríamos que decir que para que

la virtualización funcione aceptablemente bien se necesitarán computadores

modernos y potentes, que puedan ceder recursos a sus sistemas invitados para que

luego funcionen bien. Por ejemplo si tenemos un computador con un procesador

mononúcleo y 1 GB de memoria RAM será complicado ceder recursos para el

invitado. Funcionará pero la experiencia sería mejor con procesadores multinúcleo

y más capacidad de memoria. Respecto al disco duro, no sería tan importante

porque podemos ceder el espacio en un disco duro externo sin problemas.

Intel está produciendo una nueva tecnología de virtualización que soportará

hipervisores en dos de sus arquitecturas, tanto en x86 (VT-x) como en Itanium (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). En el modo root se cuentan con

todos los privilegios, mientras que en el modo no root no se tienen privilegios

(incluso para el nivel 0). La arquitectura también permite cierta flexibilidad al

definir las instrucciones que provocan que una VM (sistema operativo hospedado)

Page 14: VIRTUALIZACION final.doc

retorne al VMM y almacene el estado del procesador. También se han añadido otras

capacidades, consulte la sección recursos.

AMD está produciendo la tecnología Pacifica en la que el hardware asiste a la

virtualización. Entre otras cosas, Pacifica mantiene un bloque de control para los

sistemas operativos hospedados que se guarda con la ejecución de instrucciones

especiales. La instrucción VMRUN permite a una máquina virtual (y sus sistema

operativo hospedado asociado) ejecutarse hasta que el VMM recupere el control (lo

que también es configurable). Las opciones de configuración permiten que el VMM

adapte los privilegios de cada uno de los huéspedes. Pacifica también compensa la

traducción de direcciones con unidades de gestión de memoria (MMU) para el

anfitrión y los huéspedes. Estas nuevas tecnologías pueden utilizarse en varias de

las técnicas de virtualización que se han discutido, como Xen, VMware, User-mode

Linux y otras.

1.7. TIPOS DE VIRTUALIZACIÓN

La virtualización tiene múltiples usos y de acuerdo a estos podemos determinar que

tipo de virtualización es. Los más comunes de forma muy general son la

virtualización de servidores, virtualización de clientes y virtualización de

almacenamiento de datos o por que no llamarlo virtualización de discos duros, esta

división no es definitiva y otras personas podrían darle otra forma de dividir los

tipos de virtualización pero definitivamente estos son los mas comunes. Por lo que,

vamos a clasificarlos en tres grandes grupos: Virtualización de plataforma,

Virtualización de los recursos y Otros Tipos de virtualización.

a) VIRTUALIZACIÓN DE PLATAFORMA

Abstracción de todos los recursos de computación de un huésped dentro de un

anfitrión (host). Esta involucra la simulación de máquinas virtuales. 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.

Page 15: VIRTUALIZACION final.doc

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.

Dentro de la virtualización de plataforma podemos considerar los siguientes

subtipos:

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. Esta forma de virtualizar es donde el software de

virtualizacion genera crea una capa de software que representa el hardware.

Se que sonó un poquito confuso pero desglosémoslo un poco.

El software de virtualización genera una capa donde se emulan los recursos

del computador para que el sistema operativo instalado dentro del software

funcione creyendo que esta solo en un computador.

Figura 10: Emulación De Hardware

Page 16: VIRTUALIZACION final.doc

Lo que se hace es primero tener un sistema operativo instalado en el cliente,

luego se instala el software de emulación de hardware que una vez instalado

y configurado queda listo para instalar otro sistema operativo invitado, esto

se hace a través del software de virtualización en vez de instalarse

directamente en el computador anfitrión quien configura el contenedor o lo

que conocemos como la maquina virtual. Después de esto la instalación del

nuevo sistema operativo invitado se hace igual que como si lo estuviéramos

haciendo en un computador nuevo. Algunos de estos programas son

completamente gratis y muy fáciles de instalar y configurar como el virtual

PC 2007 de Windows, el QEMU o el VirtualBoxpara Linux. Algunos no

gratis pero sin lugar a duda muy buenos son el VMware virtual desktop o

VMware server, Microsoft también tiene un Virtual Server, Para Mac existe

el Parallels de SWsoft o el Fusion de VMware.

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, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro y z/VM.

VIRTUALIZACIÓN PARCIAL (Incluido 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.

Page 17: VIRTUALIZACION final.doc

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.

Las aplicaciones que trabajan dentro de los invitados lo hacen como si

estuviesen funcionando en un computador dedicado para ellos. Esta forma de

virtualizar también es conocida como virtualización en contenedores pues los

SO invitados están contenidos en una especie de caja que le permita trabajar

de forma casi independiente, claro todo esto basado en la disponibilidad del

SO anfitrión quien por obvias razones debe estar funcionando bien primero

para permitir el funcionamiento de los invitados. Esta forma de virtualizar es

eficiente e ideal cuando se requieren maquinas virtuales con un mismo

sistema operativo, también reduce los costos de licencias pues con un solo

sistema operativo se pueden montar el anfitrión y todas sus maquinas

virtuales.

Algunas de las compañías mas importantes en esta franja de la virtualización

son por supuesto VMware con VMware server, Sun como parte del sistema

operativo Solaris, SWsoft quien ofrece la versión comercial de Virtuozzo, y

Microsoft con su nuevo Hyper‐V.

Page 18: VIRTUALIZACION final.doc

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

Figura 11: Virtualización de Aplicaciones

b) VIRTUALIZACIÓN DE RECURSOS

Permite la agrupación de diversos dispositivos dando la idea de ser uno sólo, o la

partición de un dispositivo en varios de forma virtual. Se originó a base de la

virtualización de plataforma, definiéndose como la abstracción de los recursos

específicos de un sistema, es decir, como capacidad de espacio usado. De esta

forma, se podrá simular los recursos de una computadora o máquina, de modo

Page 19: VIRTUALIZACION final.doc

que podremos diferenciar de ella el nombre de los espacios, recursos de redes

(VNP), etc. Este tipo de virtualización permite:

Agrupar los recursos de tal manera que sean vistos como uno, como por

ejemplo:

- RAID (Redundant Array of Inexpensive Disks): simula un único

dispositivo de almacenamiento a partir de múltiples dispositivos.

- LVM (Logical Volume Management): combina muchos discos en un

gran disco lógico.

- SAN (Storage Area Network): simula dispositivos de almacenamiento

locales a partir de dispositivos remotos.

- Virtualización de almacenamiento: Que es la virtualización del

almacenamiento físico al almacenamiento lógico.

- Virtualización de Redes y equipamiento de redes: Se utilizan para

trabajar múltiples enlaces combinados mientras ofrecen un enlace único

y con mayor amplitud de banda

- VNP (Red Privada Virtual): Vendría a ser la extensión de una red local

a Internet

- CLUSTER: combinan múltiples computadoras en una gran mega-

computadora. Son un grupo de PCs construidos con hardware barato

conectados en red que se comportan como un único computador de gran

potencia al estar juntos.

Dividir los recursos en múltiples recursos de manera que cada uno sea

independiente:

- Partición de disco duro: De esta manera podemos tener cada espacio

virtual de manera específica para cada función.

- Partición de ancho de banda: Así, podremos dividir la conexión en

varias multiconexiones virtuales.

- Zoning: Divide un ancho de banda en una red de almacenamiento.

c) OTROS TIPOS DE VIRTUALIZACIÓN

VIRTUALIZACIÓN DE CLIENTES

Clientes son aquellos computadores de escritorio, portátiles o terminales que

se conectan a uno o varios servidores para hacer el trabajo que necesitan,

Page 20: VIRTUALIZACION final.doc

esta idea es muy popular en las compañías, relacionado a arquitectura cliente

servidor.

Virtualización de clientes es la virtualización que se produce en maquinas

que se conectan a los servidores para realizar su trabajo, ósea en clientes. La

razón del porque se podría virtualizar clientes es muy sencilla, imagínese una

compañía mediana que tenga unos 500 usuarios, ósea 500 computadores en

diferentes departamentos, ahora imagine que usted trabaja para el

departamento de sistemas y que le toca actualizar un programa o

simplemente revisar y borrar archivos no deseados o programas que son

instalados sin autorización. Pues si no tiene unas restricciones fuertes

montadas en el sistema la otra opción seria ir de computador en computador

y hacer lo que tiene que hacer. Ahora imagine que en su compañía usan

virtualización de clientes (Citrix o algo parecido) pues lo único que usted

tiene que hacer es ir al servidor o los servidores donde están instalados los

clientes y hacer las actualizaciones. Estamos hablando ahora que en vez de

tener que ir a cada uno de sus clientes usted lo hace en un solo punto y una

sola vez.

EMPAQUETAMIENTO DE APLICACIONES O PROGRAMAS.

Es cuando se instala un programa dentro de un contenedor que aísla el

programa e impide que este pueda afectar el sistema operativo del

computador. El contenedor le provee de forma virtual al programa instalado

todos los recursos que el necesita, como archivos necesarios, registro y

estructura de datos. La idea de esta tecnología es aislar los programas entre si

para que no se afecten los unos a los otros y obviamente por seguridad, pues

de esta forma ningún programa puede comprometer la seguridad del sistema

operativo o crear o copiar virus. Algunos de las compañías que proporcionan

este tipo de tecnología son Altiris con su SVS, Thinstall o SoftGrid de

Microsoft.

PRESENTACIÓN DE PROGRAMAS EN TIEMPO REAL.

Es cuando un programa funciona en el cliente a través de un contenedor que

aísla completamente el programa de los recursos de su PC y que permita que

el programa corra en un servidor o sitio remoto y que básicamente usted solo

puede interactuar con el programa a través del teclado y el mouse. Esta

Page 21: VIRTUALIZACION final.doc

forma de virtualización soluciona el problema de tener un programa

actualizado con la última versión para todos los usuarios, pues usted solo

tendrá que mantener una copia actualizada en el servidor que es la que es

accesada por el cliente. Esta es una solución muy buena en ambientes de

oficina donde el tráfico de la red es en su mayoría interno y los clientes

siempre están conectados. Algunos ejemplos de esta forma de virtualización

es Citrix con su Presentation Server.

VIRTUALIZACIÓN DE SERVIDORES.

Esta es probablemente el tipo de virtualización mas usado en todo el mundo,

y es por las ventajas que genera el virtualizar un servidor en ahorro de

energía, de espacio y en facilidad de administración de menos servidores

físicos, de esto hablaremos en “Razones para virtualizar”. Para esto no hay

definición especifica que sea diferente de las antes planteadas, pues

virtualización de servidores es como su nombre lo indica la virtualización de

un servidor, y sabemos que servidores son aquellos computadores

principales a los que los clientes u otros computadores se conectan para

obtener archivos, impresoras o en general manejar todos los recursos de la

red.

1.8. USOS DE LA VIRTUALIZACIÓN

Los usos más comunes son:

a) CONSOLIDACIÓN DE SERVIDORES.

Se ocupa de la tecnología de virtualización para consolidar muchos servidoresen

uno o pocos servidores virtuales. De este modo el servidor físico es

transformado en una máquina virtual anfitrión residente en una máquina virtual

del sistema principal, Eso es conocido también como Physical-to-Virtual o

transformación “P2V”. En la práctica esto permite administrar varios servidores

físicos como si fueran uno solo.

b) RECUPERACIÓN DE FALLAS – DISASTER RECOVERY.

Las máquinas virtuales pueden utilizarse como ambientes de respaldo en vivo -

hot standby- para los servidores de producción físicos. Esto permite cambiar la

filosofía clásica del Backup-and-Restore por medio de la capacidad de hacer

boot de los respaldos imágenes en las máquinas virtuales que están en vivo,

Page 22: VIRTUALIZACION final.doc

posibilitando que éstas tomen la carga del servidor de producción que se está

yendo fuera de servicio.

c) PORTABILIDAD PARA APLICACIONES.

Para hacer portables las aplicaciones para los dispositivos USB –Pen Drive por

ejemplo- los desarrolladores de software tienen que hacer que el registro –clave

de autorización de uso- y sus archivos almacenados aparezcan siempre como si

estuvieran en el directorio en que normalmente operan. Esto es particularmente

complicado para aplicaciones como el Adobe Photoshop o el Microsoft Word,

luego hacer que este tipo de aplicaciones corran en directorios distintos al en que

fueron instaladas plantea un gran desafío técnico.

d) LEGACY APPLICATIONS.

La operación de estas aplicaciones puede ser muy bien atendida por máquinas

virtuales. Es común que muchas de estas aplicaciones legacy no puedan

funcionar en los procesadores y sistemas operativos actuales. Y, aún si pueden

hacerlo terminan subutilizándolos de manera que la virtualización termina

siendo una muy buena alternativa.

e) AMBIENTES PARA PRUEBAS – SANDBOXES.

Las máquinas virtuales pueden usarse para generar ambientes seguros, aislados

para probar aplicaciones o sistemas nuevos cuyo comportamiento está recién

conociéndose. Estos ambientes se pueden crear dinámicamente, según sean las

necesidades del software que se necesita probar.

f) INFRAESTRUCTURA VIRTUAL

Una infraestructura virtual consiste en el mapping dinámico de recursos físicos

en función de las necesidades de la empresa. Una máquina virtual representa los

recursos físicos de un único computador, mientras que una infraestructura virtual

representa los recursos físicos de la totalidad del entorno de TI, aglutinando

computadores x86, así como su red y almacenamiento asociados, en un pool

unificado de recursos de TI.

Estructuralmente, una infraestructura virtual consta de los siguientes

componentes:

Hipervisor de un solo nodo para hacer posible la virtualización de todos los

computadores x86.

Page 23: VIRTUALIZACION final.doc

Un conjunto de servicios de infraestructura de sistemas distribuida basada en

la virtualización, como gestión de recursos, para optimizar los recursos

disponibles entre las máquinas virtuales.

Soluciones de automatización que proporcionen capacidades especiales para

optimizar un proceso de TI concreto, como provisioning o recuperación ante

desastres. Mediante la separación de la totalidad del entorno de software de

su infraestructura de hardware subyacente, la virtualización hace posible la

reunión de varios servidores, estructuras de almacenamiento y redes en pools

compartidos de recursos que se pueden asignar de forma dinámica, segura y

fiable a las aplicaciones según sea necesario. Este enfoque innovador permite

a las organizaciones crear una infraestructura informática con altos niveles

de utilización, disponibilidad, automatización y flexibilidad utilizando

componentes básicos de servidores económicos y estándar del sector.

Figura 12: Vitualización de Infraestructura

Las soluciones de infraestructura virtual son ideales para entornos de producción

en parte debido a que se ejecutan en servidores y escritorios estándar de la

industria y son compatibles con una amplia gama de sistemas operativos y

entornos de aplicación, así como de infraestructuras de red y almacenamiento.

Page 24: VIRTUALIZACION final.doc

Se han diseñado las soluciones para que funcionen de manera independiente del

hardware y del sistema operativo y poder brindar a los clientes amplias

posibilidades de elección de plataforma. Como resultado, son soluciones que

proporcionan un punto de integración clave para los proveedores de hardware y

gestión de infraestructuras de cara a ofrecer un valor único y aplicable por igual

en todos los entornos de aplicación y sistemas operativos.

Las empresas que han adoptado estas soluciones de infraestructura virtual nos

han comunicado unos clarísimos resultados positivos, entre ellos:

Índices de utilización del 60 al 80% para servidores x86 (frente al 5 a 15%

en hardware no virtualizado)

Capacidad para el provisioning de nuevas aplicaciones en cuestión de

minutos, en lugar de días o semanas

85% de mejora en tiempo de recuperación de paradas imprevistas

1.9. VENTAJAS DE LA VIRTUALIZACION

Desde una perspectiva de negocio, hay muchas razones para utilizar virtualización.

La mayoría están relacionadas con la consolidación de servidores. Simple, si se

puede virtualizar un número de sistemas infrautilizados en un solo servidor, habrá

ahorro de energía, espacio, capacidad de refrigeración y administración ya que

tendremos menos servidores. Como puede ser difícil determinar el grado de

utilización de un servidor, las tecnologías de virtualización soportan la migración

en directo. La migración en directo permite que un sistema operativo y sus

aplicaciones se muevan a un nuevo servidor para balancear la carga sobre el

hardware disponible.

La virtualización también es importante para los desarrolladores. El núcleo Linux

ocupa un solo espacio de direcciones, lo que significa que un fallo en el núcleo o en

cualquier driver provoca la caída del sistema operativo completo. La virtualización

supone que puedes ejecutar varios sistemas operativos, y si uno cae debido a un

fallo, el hipervisor y el resto de sistemas operativos continuarán funcionando. Esto

puede hacer que depurar el núcleo sea una tarea más parecida a depurar

aplicaciones en el espacio del usuario.

Page 25: VIRTUALIZACION final.doc

La principal ventaja viene dada por el hecho de que en un único equipo es posible

ejecutar numerosas máquinas virtuales, algo que antes habría requerido numerosos

equipos, produciendo:

Reducción de espacio físico ocupado.

Reducción de consumo eléctrico.

Reducción de calor en los datacenters.

Mayor seguridad: en las empresas o instituciones de bajo presupuesto se suele

utilizar un único servidor para montar todos los servicios, lo que hace que una

vulnerabilidad en cualquiera de los servicios prestados exponga a todos los

demás. Con las máquinas virtuales es posible pensar una máquina por servicio

(o agrupando por tipos de servicios).

Facilidad de administración: al reducir la cantidad de equipos a administrar se

facilita el trabajo en este aspecto.

Mayor disponibilidad: con servidores físicos cualquier cambio de hardware

requería apagar la máquina y con ella dar de baja los servicios para realizar el

mantenimiento. Con las máquinas virtuales es posible moverlas en caliente a

otro servidor, apagar el que se requiera y volver a restaurarlas luego al servidor

original sin necesidad de apagar las máquinas virtuales en ningún momento.

Mejora en la tolerancia a fallos: replicar una máquina virtual es mucho más

sencillo que replicar una máquina física. Aún más, es mucho más económico

tener dos máquinas virtuales exactamente idénticas encendidas todo el tiempo

que dos máquinas físicas.

1.10. PLATAFORMAS DE VIRTUALIZACIÓN

Existen numerosas plataformas para virtualizar. Los más populares de ellos son:

KVM: utiliza virtualización completa por hardware y requiere que el sistema

operativo host sea Linux. Es Open Source y gratuito.

Virtualbox: propiedad de Sun desde hace ya un tiempo, es un producto

Open Source con versiones para Windows, Linux, Mac OS X y OpenSolaris,

VirtualBox permite realizar virtualización completa eligiendo traducción

binaria o asistida por hardware.

VMware: VMware es quizá el producto con más experiencia y madurez en

el mercado. Tiene muchísimas versiones diferentes que soportan múltiples

técnicas de virtualización. Entre ellas, la gama ESX instala directamente el

Page 26: VIRTUALIZACION final.doc

hypervisor sobre el hardware, sin necesidad de otro sistema operativo que le

sirva de host. Este tipo de plataforma se denomina precisamente non-hosted.

Puede accederse a varias versiones gratuitas y otras son pagas (algunas de

ellas bastante costosas!).

Xen: corre sobre hosts Linux y soporta paravirtualización y virtualización

completa por hardware. Es un muy buen producto muy popular entre los

usuarios de Linux, sobre todo en plataformas de paravirtualización. También

es Open Source.

1.11. OTROS PRODUCTOS Y TECNOLOGÍAS

Bochs y QEMU son emuladores de PC que permiten que sistemas operativos

como Windows o Linux se ejecuten en el espacio de usuario de un sistema

operativo Linux.

z/VM es el sistema operativo VM más nuevo para la arquitectura

z/Architecture de 64 bits.

z/VM proporciona virtualización completa con asistencia de hardware y

soporta un amplio abanico de sistemas operativos, incluido Linux.

User-mode Linux es otra solución de fuente abierta para la

paravirtualización. Cada sistema operativo huesped se ejecuta como un

proceso del sistema operativo anfitrion.

coLinux, o Cooperative Linux, es una solución de virtualización que permite

a dos sistemas operativos compartir de forma cooperativa el hardware

subyacente.

Linux-Vserver es una solución de virtualización a nivel de sistema operativo

para los sistemas GNU/Linux que aisla de forma segura a los servidores

hospedados.

OpenVZ es una solución de virtualización a nivel de sistema operativo que

soporta puntos de control y migración de VPSs sobre la marcha.

Linux KVM es la primera tecnologia de virtualización que ha sido capaz de

integrarse en la línea principal de producción del núcleo Linux. Con solo un

módulo del núcleo, un núcleo Linux que se ejecute sobre hardware con

soporte para la virtualización es capaz de actuar como hipervisor y soportar

sistemas operativos Linux y Windows sin modificar como huespedes.

Page 27: VIRTUALIZACION final.doc

Order the SEK for Linux, dos DVDs con las últimas versiones de evaluación

de software de IBM para Linux: DB2, Lotus, Rational, Tivoli y WebSphere.

Virtual Linux — IES Puig Castellar

Page 28: VIRTUALIZACION final.doc

CAPITULO II

MAQUINAS VIRTUALES

2.1. LAS MAQUINAS VIRTUALES

En informática una máquina virtual es un software que emula a una computadora

y puede ejecutar programas como si fuese una computadora real. Este software en

un principio fue definido como "un duplicado eficiente y aislado de una máquina

física". La acepción del término actualmente incluye a máquinas virtuales que no

tienen ninguna equivalencia directa con ningún hardware real.

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

Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar

sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema

operativo que queramos probar (Linux, por ejemplo) desde nuestro sistema

operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo

directamente en nuestra computadora y sin miedo a que se desconfigure el sistema

operativo primario.

Page 29: VIRTUALIZACION final.doc

Figura 13: Arquitectura típica de una máquina virtual.

2.2. TIPOS DE MÁQUINAS VIRTUALES

Las máquinas virtuales se pueden clasificar en dos grandes categorías según su

funcionalidad y su grado de equivalencia a una verdadera máquina.

Máquinas virtuales de sistema (en inglés System Virtual Machine)

Máquinas virtuales de proceso (en inglés Process Virtual Machine)

a) MÁQUINAS VIRTUALES DE SISTEMA

Las máquinas virtuales de alivio sistema, también llamadas máquinas virtuales

de hardware, permiten a la máquina física subyacente multiplexarse 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").

Figura 14: Funcionamiento de VMWare, una de las máquinas virtuales de sistema más populares.

Page 30: VIRTUALIZACION final.doc

APLICACIONES DE LAS MÁQUINAS VIRTUALES DE

SISTEMA

- Varios sistemas operativos distintos pueden coexistir sobre la misma

computadora, en sólido aislamiento el uno del otro, por ejemplo para

probar un sistema operativo nuevo sin necesidad de instalarlo

directamente.

- La máquina virtual puede proporcionar una arquitectura de

instrucciones (ISA) que sea algo distinta de la verdadera máquina. Es

decir, podemos simular hardware.

- Varias máquinas virtuales (cada una con su propio sistema operativo

llamado sistema operativo "invitado" o "guest"), pueden ser

utilizadas para consolidar servidores. Esto permite que servicios que

normalmente se tengan que ejecutar en computadoras distintas para

evitar interferencias, se puedan ejecutar en la misma máquina de

manera completamente aislada y compartiendo los recursos de una

única computadora. La consolidación de servidores a menudo

contribuye a reducir el coste total de las instalaciones necesarias para

mantener los servicios, dado que permiten ahorrar en hardware.

- La virtualización es una excelente opción hoy día, ya que las

máquinas actuales (Laptops, desktops, servidores) en la mayoría de

los casos están siendo "sub-utilizados" (gran capacidad de disco duro,

memoria RAM, etc.), llegando a un uso de entre 30% a 60% de su

capacidad. Al virtualizar, la necesidad de nuevas máquinas en una ya

existente permite un ahorro considerable de los costos asociados

(energía, mantenimiento, espacio, etc).

b) MÁQUINAS VIRTUALES DE PROCESO

Una máquina virtual de proceso, a veces llamada "máquina virtual de

aplicación", se ejecuta como un proceso normal dentro de un sistema operativo

y soporta un solo proceso. 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

Page 31: VIRTUALIZACION final.doc

plataforma subyacente y permita que un programa se ejecute siempre de la

misma forma sobre cualquier plataforma.

El ejemplo más conocido actualmente de este tipo de máquina virtual es la

máquina virtual de Java. Otra máquina virtual muy conocida es la del entorno

.Net de Microsoft que se llama "Common Language Runtime".

Figura 15: Funcionamiento de la máquina virtual de Java, una de las máquinas virtuales de proceso más populares.

2.3. INCONVENIENTES DE LAS MÁQUINAS VIRTUALES

Una de las razones del porque 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 las 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 está 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.

Page 32: VIRTUALIZACION final.doc

Una falla de hardware equivale a la falla de todos los sistemas virtuales que operan sobre el mismo.

Para asegurar los servicios se deben adquirir hardware de gran porte y por consiguiente alto costo.

2.4. TÉCNICAS PARA LA CREACIÓN DE MAQUINAS VIRTUALES

a) EMULACIÓN DEL HARDWARE SUBYACENTE (EJECUCIÓN

NATIVA)

Esta técnica se suele llamar virtualización completa (full virtualization) del

hardware, y se puede implementar usando un hypervisor de Tipo 1 o de Tipo

2:

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.

Figura 16: Arquitectura de Monitor de tipo I.

Page 33: VIRTUALIZACION final.doc

Figura 17: Arquitectura de Monitor de tipo II.

El sistema pionero que utilizó este concepto fue la CP-40, la primera versión

(1967) de la CP/CMS de IBM (1967-1972) y el precursor de la familia VM de

IBM (de 1972 en adelante). Con la arquitectura VM, la mayor parte de

usuarios controlan un sistema operativo monousuario relativamente simple

llamado CMS que se ejecuta en la máquina virtual VM.

Actualmente tanto Intel como AMD han introducido prestaciones a sus

procesadores x86 para permitir la virtualización de hardware.

b) 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.

Open Firmware

Page 34: VIRTUALIZACION final.doc

Esta técnica permite que cualquier computadora pueda ejecutar software

escrito para la máquina virtual. Sólo la máquina virtual en sí misma debe ser

portada a cada una de las plataformas de hardware.

c) VIRTUALIZACIÓN A NIVEL DE SISTEMA OPERATIVO

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.

2.5. MÁQUINAS VIRTUALES DE PROCESO

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

EiffelStudiopara el lenguaje de programación Eiffel

Lenguaje de programación Erlang

Forth virtual machine - Forth

Glulx - Glulx, Z-code

Harbour - Harbour virtual machine

Hec - Hasm Assembler

Inferno - Limbo

Java virtual machine - Java, Nice, NetREXX

Low Level Virtual Machine (LLVM) - actualmente C, C++, Stacker

Lua

Macromedia Flash Player - SWF

MMIX - MMIXAL

Neko virtual machine actualmente Neko y haXe

O-code machine - BCPL

P-code machine - Pascal

Parrot - Perl 6

Perl virtual machine - Perl

Portable.NET - C#, Visual Basic .NET, J#, Managed C++

YARV - Ruby

Rubinius - Ruby

Page 35: VIRTUALIZACION final.doc

ScummVM - Scumm

SECD machine - ISWIM, Lispkit Lisp

Sed the stream-editor can also be seen as a VM with 2 storage spaces.

Smalltalk virtual machine - Smalltalk

SQLite virtual machine - SQLite opcodes

Squeak virtual machine - Squeak

SWEET16

TrueType virtual machine - TrueType

Valgrind - chequeo de accesos a memoria y "leaks" en x86/x86-64 code under

Linux

VX32 virtual machine - application-level virtualization for native code

Virtual Processor (VP) from Tao Group (UK).

Waba - similar a Java, para dispositivos pequeños

Warren Abstract Machine - Prolog, CSC GraphTalk

Z-machine - Z-Code

Zend Engine - PHP

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

Hercules emulator , free System/370, ESA/390, z/Mainframe

Integrity Workstation Green Hills Software

LilyVM is a lightweight virtual machine An introduction

Microsoft Virtual PC y Microsoft Virtual Server

OKL4

Parallels Workstation , virtualización de x86 para ejecutar sistemas operativos

Parallels Desktop for Mac , virtualización de x86 para ejecutar máquinas

virtuales en Mac OS X

QEMU , muy popular en entornos Linux

Page 36: VIRTUALIZACION final.doc

SheepShaver .

Simics

SVISTA

Trango Virtual Processors

TwoOStwo

User-mode Linux

VirtualBox

Virtual Iron (Virtual Iron 3.1)

Virtual Operating System de Star Virtual Machines

VM de IBM

VMware (ESX Server, Fusion, Virtual Server, Workstation, Player y ACE)

Xen

KVM

IBM POWER SYSTEMS

2.7. MÁQUINAS VIRTUALES A NIVEL DE SISTEMA OPERATIVO

OpenVZ

Virtuozzo

FreeVPS

Linux-VServer

FreeBSD Jails

Solaris Containers

AIX Workload Partitions

2.8. LA MÁQUINA VIRTUAL DE JAVA COMO EJEMPLO DE UNA MV

La MV de Java es una máquina de pila. Las instrucciones interpretadas por ella

manipulan datos almacenados como elementos en una pila. El contenido

ejecutable de un archivo de bytecodes contiene un vector de instrucciones

bytecode para cada método. Los bytecodes son instrucciones para la MV, que

tiene algunos registros de variables locales y una pila para la evaluación de

expresiones. Las primeras variables locales son inicializadas con los parámetros

actuales. Cada variable local o elemento de la pila es una palabra que corresponde

a un entero de 32 bits, a un punto flotante o a una referencia a objeto (puntero).

Para puntos flotantes dobles y enteros largos se utilizan dos huecos de la pila.

Page 37: VIRTUALIZACION final.doc

Figura 18: Ejecución de un programa Java

El lenguaje Java es a la vez compilado e interpretado. Con el compilador se

convierte el código fuente que reside en archivos cuya extensión es .java, a un

conjunto de instrucciones que recibe el nombre de bytecodes que se guardan en un

archivo cuya extensión es .class. Estas instrucciones son independientes del tipo

de computador. El intérprete ejecuta cada una de estas instrucciones en un

computador específico (Windows, Macintosh, etc). Solamente es necesario, por

tanto, compilar una vez el programa, pero se interpreta cada vez que se ejecuta en

un computador.

Cada intérprete Java es una implementación de la Máquina Virtual Java (JVM).

Los bytecodes posibilitan el objetivo de "write once, run anywhere", de escribir el

programa una vez y que se pueda correr en cualquier plataforma que disponga de

una implementación de la JVM. Por ejemplo, el mismo programa Java puede

correr en Windows 98, Solaris, Macintosh, etc.

Java es, por tanto, algo más que un lenguaje, ya que la palabra Java se refiere a

dos cosas inseparables: el lenguaje que nos sirve para crear programas y la

Máquina Virtual Java que sirve para ejecutarlos. Como vemos en la figura, el API

de Java y la Máquina Virtual Java forman una capa intermedia (Java platform) que

aísla el programa Java de las especificidades del hardware (hardware-based

platform).

Page 38: VIRTUALIZACION final.doc

Figura 19: Arquitectura de la VM de Java

a) PROPIEDADES DEL LENGUAJE JAVA

Se dice que el código Java es portable, debido a que es posible ejecutar el

mismo archivo de clase (.class), sobre una amplia variedad de arquitecturas de

hardware y de software, sin ninguna modificación. Java es un lenguaje

dinámico, debido a que las clases son cargadas en el momento en que son

necesitadas (dinámicamente), ya sea del sistema de archivos local o desde

algún sitio de la red mediante algún protocolo URL. Java tiene la capacidad

de aumentar su sistema de tipos de datos dinámicamente o en tiempo de

ejecución. Este "enlace tardío" (late-binding) significa que los programas sólo

crecen al tamaño estrictamente necesario, aumentando así la eficiencia del uso

de los recursos. Java hace menos suposiciones sobre las implantaciones de las

estructuras de datos, que los lenguajes estáticos de "enlace temprano" o en

tiempo de compilación (early-binding) como C o C++.

Debido a que Java nació en la era post-Internet, fue diseñado con la idea de la

seguridad y la fiabilidad, por lo que se le integraron varias capas de seguridad

para evitar que programas maliciosos pudiesen causar daños en los sistemas,

sobre los que ejecuta la implantación de la Máquina Virtual Java. El lenguaje

Java no está diseñado solamente para crear applets que corren en la ventana

del navegador. Java es un lenguaje de propósito general, de alto nivel, y

orientado a objetos.

Los tipos de programas más comunes que se pueden hacer con Java son los

applets (se ejecutan en el navegador de la máquina cliente) y las aplicaciones

Page 39: VIRTUALIZACION final.doc

(programas que se ejecutan directamente en la JVM). Otro tipo especial de

programa se denomina servlet que es similar a los applets pero se ejecutan en

los servidores Java.

La API de Java es muy rica, está formada por un conjunto de paquetes de

clases que le proporcionan una gran funcionalidad. El núcleo de la API viene

con cada una de las implementaciones de la JVM:

Lo esencial: tipos de datos, clases y objetos, arrays, cadenas de caracteres

(strings), subprocesos (threads),  I/O, propiedades del sistema, etc.

Applets

Manejo de la red (networking)

Internacionalización

Seguridad

Componentes (JavaBeans)

Persistencia (Object serialization)

Conexión a bases de datos (JDBC)

Java proporciona también extensiones, por ejemplo define un API para 3D,

para los servidores, telefonía, reconocimiento de voz, etc.

 

b) LA MÁQUINA VIRTUAL JAVA

La Máquina Virtual Java (JVM) es el entorno en el que se ejecutan los

programas Java, su misión principal es la de garantizar la portabilidad de las

aplicaciones Java. Define esencialmente un computador abstracto y especifica

las instrucciones (bytecodes) que este computador puede ejecutar. El intérprete

Java específico ejecuta las instrucciones que se guardan en los archivos cuya

extensión es .class. Las tareas principales de la JVM son las siguientes:

Reservar espacio en memoria para los objetos creados

Liberar la memoria no usada (garbage collection).

Asignar variables a registros y pilas

Llamar al sistema huésped para ciertas funciones, como los accesos a los

dispositivos

Vigilar el cumplimiento de las normas de seguridad de las aplicaciones

Java

Page 40: VIRTUALIZACION final.doc

Esta última tarea, es una de las más importantes que realiza la JVM. Además,

las propias especificaciones del lenguaje Java contribuyen extraordinariamente

a este objetivo:

Las referencias a arrays son verificadas en el momento de la ejecución del

programa.

No hay manera de manipular de forma directa los punteros.

La JVM gestiona automáticamente el uso de la memoria, de modo que no

queden huecos.

No se permiten realizar ciertas conversiones (casting) entre distintos tipos

de datos.

Por ejemplo, cuando el navegador encuentra una página web con un applet,

pone en marcha la JVM y proporciona la información que aparece en la

etiqueta <APPLET > ... </APPLET>. El cargador de clases dentro de la JVM

ve que clases necesita el applet. Dentro del proceso de carga, las clases se

examinan mediante un verificador que asegura que las clases contienen código

válido y no malicioso. Finalmente, se ejecuta el applet.

Figura 20: La Máquina Virtual Implementada para unavariedad de plataformas.

c) ARQUITECTURA DE LA PLATAFORMA JAVA (SISTEMA EN

TIEMPO DE EJECUCIÓN)

Sun utiliza el término "Máquina Virtual Java", para referirse a la

especificación abstracta de una máquina de software para ejecutar programas

Page 41: VIRTUALIZACION final.doc

Java. La especificación de esta máquina virtual, define elementos como el

formato de los archivos de clases de Java (.class), así como la semántica de

cada una de las instrucciones que componen el conjunto de instrucciones de la

máquina virtual.

A las implantaciones de esta especificación se les conocen como "Sistemas en

Tiempo de Ejecución Java". En la figura 2 se puede observar los componentes

típicos de un sistema de tiempo de ejecución.

Ejemplos de Sistemas de tiempo de ejecución son el Navegador de Nestcape,

el Explorador de Microsoft y el programa Java (incluido en el JDK). Un

sistema de tiempo de ejecución incluye típicamente:

Motor de ejecución. El procesador virtual que se encarga de ejecutar el

código (bytecode), generado por algún compilador de Java o por algún

ensamblador del procesador virtual Java.

Manejador de memoria. Encargado de obtener memoria para las nuevas

instancias de objetos, arreglos, etcétera, y realizar tareas de recolección de

basura.

Manejador de errores y excepciones. Encargado de generar, lanzar y

atrapar excepciones.

Soporte de métodos nativos. Encargado de llamar métodos de C++ o

funciones de C, desde métodos Java y viceversa.

Interfaz multihilos. Encargada de proporcionar el soporte para hilos y

monitores.

Cargador de clases. Su función es cargar dinámicamente las clases Java a

partir de los archivos de clase (.class).

Administrador de seguridad. Se encarga de asegurar que las clases

cargadas sean seguras, así como controlar el acceso a los recursos del

sistema.

Page 42: VIRTUALIZACION final.doc

Figura 21: Arquitectura del Sistema de Tiempo de Ejecución Java.

Adicionalmente, existe un conjunto de clases Java estándar, fuertemente

ligadas a la implantación de cada MVJ en particular. Ejemplos de esto los

tenemos en las clases encargadas de funciones, como los accesos a los recursos

de la red, manejar el sistema de ventanas, los hilos y el sistema de archivos

local. Todos estos elementos en conjunto actúan como una interfaz de alto

nivel, para acceder a los recursos del sistema operativo. Es esta interfaz la

clave de la portabilidad de los programas Java, debido a que

independientemente del hardware o sistema operativo sobre el que se esté

trabajando, la máquina virtual Java oculta todas estas diferencias.

A continuación describiremos con mayor detalle cada uno de estos elementos.

MOTOR DE EJECUCIÓN

Es la entidad de hardware o software, que ejecuta las instrucciones

contenidas en los códigos de operación (bytecodes) que implementan los

métodos Java. En las versiones iniciales de Sun, el motor de ejecución

consistía de un interprete de códigos de operación. En las versiones más

avanzadas de nuestros días, se utiliza la tecnología de "generación de

Page 43: VIRTUALIZACION final.doc

código justo en el momento" (Just-in-Time code generation), en dónde las

instrucciones que implementan a los métodos, se convierten en código

nativo que se ejecuta directamente en la máquina sobre la que se subyace.

El código nativo se genera únicamente la primera vez que se ejecuta el

código de operación Java, por lo que se logra un aumento considerable en

el rendimiento de los programas.

EL CONJUNTO DE INSTRUCCIONES DEL PROCESADOR

VIRTUAL

Muchas de las instrucciones del procesador virtual Java, son muy similares

a las que se pueden encontrar para los procesadores comunes y corrientes,

como los Intel, es decir, incluyen los grupos de instrucciones típicos como

los aritméticos, los de control de flujo, de acceso a memoria, a la pila,

etcétera. Una de las características más significativas del conjunto de

instrucciones del procesador virtual Java, es que están basadas en la pila y

utilizan "posiciones de memoria" numeradas, en lugar de registros. Esto es

hasta cierto punto lógico, debido a que la máquina virtual está pensada

para correr sobre sistemas con procesadores sustancialmente diferentes. Es

difícil hacer suposiciones sobre el número o tipo de registros que estos

pudiesen tener. Esta característica de estar basada en operaciones sobre la

pila, impone una desventaja a los programas escritos en Java, contra los

lenguajes completamente compilados, como C o C++, debido a que los

compiladores de estos pueden generar código optimizado para la

plataforma particular sobre la que se esté trabajando, haciendo uso de los

registros, etcétera.

Varias de las instrucciones que componen el conjunto de instrucciones del

procesador virtual de Java, son bastante más complejas que las que se

pueden encontrar en procesadores comunes. Ejemplo de ello, tenemos las

casi 20 instrucciones para realizar operaciones, tales como invocar

métodos de objetos, obtener y establecer sus propiedades o generar y

referenciar nuevos objetos. Es evidente que operaciones de este estilo son

de una complejidad considerable y la proyección a sus respectivas

Page 44: VIRTUALIZACION final.doc

instrucciones, sobre el conjunto de instrucciones del procesador de la

máquina, implicará a varias decenas de esas instrucciones.

EL VERIFICADOR DE JAVA

Como hemos mencionado anteriormente, una de las principales razones

para utilizar una máquina virtual, es agregar elementos de seguridad a

nuestro sistema, por lo que si un intérprete falla o se comporta de manera

aleatoria, debido a código mal formado, es un problema muy serio. La

solución trivial a este problema sería incluir código encargado de capturar

errores y verificar que el código sea correcto. Es evidente que la principal

desventaja de esta solución, es que volveremos a caer en un sistema

sumamente seguro, pero altamente ineficiente. Los diseñadores de Java

tomaron otro camino. Cuando estaban diseñando el conjunto de

instrucciones para la máquina virtual de Java, tenían dos metas en mente.

La primera era que el conjunto de instrucciones fuera similar a las

instrucciones que se pueden encontrar en los procesadores reales. La

segunda era construir un conjunto de instrucciones que fuera fácilmente

verificable.

En Java, justo después de que se obtiene una clase del sistema de archivos

o de Internet, la máquina virtual puede ejecutar un verificador que se

encargue precisamente de constatar que la estructura del archivo de clase

es correcta. El verificador se asegura que el archivo tenga el número

mágico (0xCAFEBABE) y que todos los registros que contiene el archivo

tengan la longitud correcta, pero aún más importante, comprueba que todos

los códigos de operación sean seguros de ejecutar. Es importante notar que

Java no necesita que el verificador se ejecute sobre el archivo de clase,

sino que es activado por el sistema en tiempo de ejecución y sólo sobre

clases que el mismo sistema decida. Por lo común, las clases verificadas

son las provenientes de Internet.

Aún en nuestros días, los cargadores de clases comerciales tienen varios

defectos, por lo que la construcción de mejores verificadores sigue siendo

un problema abierto. Por ejemplo, Karsten Sohr, en septiembre de 1999

Page 45: VIRTUALIZACION final.doc

encontró que el cargador de Microsoft tiene problemas con los tipos de

datos, entre los bloques de excepciones, lo que puede provocar

forzamientos de conversiones de tipos arbitrarios, comprometiendo la

seguridad del sistema, debido a que de esta manera es posible acceder a

recursos que debieran estar restringidos.

ADMINISTRADOR DE MEMORIA

Java utiliza un modelo de memoria conocido como "administración

automática del almacenamiento" (automatic storage management), en el

que el sistema en tiempo de ejecución de Java mantiene un seguimiento de

los objetos. En el momento que no están siendo referenciados por alguien,

automáticamente se libera la memoria asociada con ellos. Existen muchas

maneras de implementar recolectores de basura, entre ellas tenemos:

- Contabilizar referencias. La máquina virtual Java asocia un contador a

cada instancia de un objeto, donde se refleja el número de referencias

hacia él. Cuando este contador es 0, la memoria asociada al objeto es

susceptible de ser liberada. Aún cuando este algoritmo es muy sencillo

y de bajo costo (en términos computacionales), presenta problemas con

estructuras de datos circulares.

- Marcar e intercambiar (Mark-and-Sweep). Este es el esquema más

común para implementar el manejo de almacenamiento automático.

Consiste en almacenar los objetos en un montículo (heap) de un

tamaño considerable y marcar periódicamente (generalmente mediante

un bit en un campo que se utiliza para este fin) los objetos que no

tengan ninguna referencia hacia ellos. Adicionalmente existe un

montón alterno, donde los objetos que no han sido marcados, son

movidos periódicamente. Una vez en el montículo alterno, el recolector

de basura se encarga de actualizar las referencias de los objetos a sus

nuevas localidades. De esta manera se genera un nuevo montículo, que

contiene únicamente objetos que están siendo utilizados.

ADMINISTRADOR DE ERRORES Y EXCEPCIONES

Las excepciones son la manera como Java indica que ha ocurrido algo

"extraño" durante la ejecución de un programa Java. Comúnmente las

Page 46: VIRTUALIZACION final.doc

excepciones son generadas y lanzadas por el sistema, cuando uno de estos

eventos ocurre. De la misma manera, los métodos tienen la capacidad de

lanzar excepciones, utilizando la instrucción de la MVJ, athrow.

Todas las excepciones en Java son instancias de la clase

java.lang.Throwable o de alguna otra que la especialice. Las clases

java.lang.Exception y java.lang.Error, heredan directamente de

java.lang.Throwable. La primera se utiliza para mostrar eventos, de los

cuales es posible recuperarse, como la lectura del fin de archivo o la falla

de la red, mientras que la segunda se utiliza para indicar situaciones de las

cuales no es posible recuperarse, como un acceso indebido a la memoria.

Cuando se genera una excepción, el sistema de tiempo de ejecución de

Java, y en particular el manejador (handler) de errores y excepciones,

busca un manejador para esa excepción, comenzando por el método que la

originó y después hacia abajo en la pila de llamadas. Cuando se encuentra

un manejador, éste atrapa la excepción y se ejecuta el código asociado con

dicho manejador. Lo que ocurre después depende del código del

manejador, pero en general, puede suceder que:

Se utilice un goto para continuar con la ejecución del método original

Su utilice un return para salir del método

Se utilice athrow para lanzar otra excepción

En el caso que no se encuentre un manejador para alguna excepción

previamente lanzada, se ejecuta el manejador del sistema, cuya acción

típica es imprimir un mensaje de error y terminar la ejecución del

programa.

SOPORTE PARA MÉTODOS NATIVOS

Las clases en Java pueden contener métodos que no estén implementados

por códigos de operación (bytecode) Java, sino por algún otro lenguaje

compilado en código nativo y almacenado en bibliotecas de enlace

dinámico, como las DLL de Windows o las bibliotecas compartidas SO de

Solaris.

Page 47: VIRTUALIZACION final.doc

El sistema de tiempo de ejecución incluye el código necesario para cargar

dinámicamente y ejecutar el código nativo que implementa estos métodos.

Una vez que se enlaza el módulo que contiene el código que implementa

dicho método, el procesador virtual atrapa las llamadas a éste y se encarga

de invocarlo. Este proceso incluye la modificación de los argumentos de la

llamada, para adecuarlos al formato que requiere el código nativo, así

como transferirle el control de la ejecución. Cuando el código nativo

termina, el módulo de soporte para métodos nativos se encarga de

recuperar lo resultados y de adecuarlos al formato de la máquina virtual

Java. De manera análoga, el módulo de soporte para código nativo se

encarga de canalizar una llamada a un método escrito en Java, hecha desde

un procedimiento o método nativo.

INTERFAZ DE HILOS

Java es un lenguaje que permite la ejecución concurrente de varios hilos de

ejecución, es decir, el sistema de tiempo de ejecución de Java tiene la

posibilidad de crear más de un procesador virtual Java, donde ejecutar

diferentes flujos de instrucciones, cada uno con su propia pila y su propio

estado local. Los procesadores virtuales pueden ser simulados por software

o implementados mediante llamadas al sistema operativo, sobre el cual

subyace. En el conjunto de instrucciones de la máquina virtual Java, sólo

existen dos directamente relacionadas con los hilos, monitorenter y

monitorexit, que sirven para definir secciones de código, que deben

ejecutarse en exclusión mutua. El resto del soporte de los hilos se realiza

atrapando llamadas a los métodos pertenecientes a la clase

java.lang.Thread.

CARGADOR DE CLASES

Los programas Java están completamente estructurados en clases. Por lo

tanto, una función muy importante del sistema en tiempo de ejecución, es

cargar, enlazar e inicializar clases dinámicamente, de forma que sea

posible instalar componentes de software en tiempo de ejecución. El

proceso de cargado de las clases se realiza sobre demanda, hasta el último

momento posible.

Page 48: VIRTUALIZACION final.doc

La Máquina Virtual Java utiliza dos mecanismos para cargar las clases. El

primero consiste en un cargador de clases del sistema, cuya función es

cargar todas las clases estándar de Java, así como la clase cuyo nombre es

estrada vía la línea de comandos. De manera adicional, existe un segundo

mecanismo para cargar clases dentro del sistema, utilizando una instancia

de la clase java.lang.ClassLoader o alguna otra definida por el usuario, que

especialice a la anterior. Es importante hacer notar que el cargador de

clases es uno de los recursos que debe proteger el administrador de

seguridad. No debe permitir, por ejemplo, que los applets no confiables

creen sus propios cargadores debido a que puede ser un punto por el que

pueden romperse las restricciones de seguridad.

Los cargadores especializados por los programadores, pueden definir la

localización remota de donde se cargarán las clases o asignar atributos de

seguridad apropiados para sus aplicaciones particulares. Finalmente, se

puede usar a los cargadores para proporcionar espacios de nombres

separados a diferentes componentes de una aplicación.

d) ARQUITECTURA DE SEGURIDAD EN JAVA

Java utiliza una serie de mecanismos de seguridad, con el fin de dificultar la

escritura de programas maliciosos que pudiesen afectar la integridad de las

aplicaciones y los datos de los usuarios. Cada sistema en tiempo de ejecución

Java tiene la capacidad de definir sus propias políticas de seguridad, mediante

la implantación de un "administrador de seguridad" (security manager), cuya

función es proteger al sistema de tiempo de ejecución, definiendo el ámbito de

cada programa Java en cuanto a las capacidades de acceder a ciertos recursos,

etcétera.

Figura 22: Modelo de seguridad del JDK 1.0.

Page 49: VIRTUALIZACION final.doc

El modelo de seguridad original proporcionado por la plataforma Java, es

conocido como la "caja de arena" (sandbox), que consiste en proporcionar un

ambiente de ejecución muy restrictivo para código no confiable que haya sido

obtenido de la red. Como se muestra en la figura 3 , la esencia del modelo de

la caja de arena, es que el código obtenido del sistema de archivo local es por

naturaleza confiable. Se le permite el acceso a los recursos del sistema, como

el mismo sistema de archivos o los puertos de comunicación. Mientras, el

código obtenido de la red se considera no confiable. Por lo tanto, tiene acceso

únicamente a los recursos que se encuentran accesibles desde la caja de arena.

Como hemos mencionado, la máquina implementa otros mecanismos de

seguridad, desde el nivel de lenguaje de programación, como la verificación

estricta de tipos de datos, manejo automático de la memoria, recolección

automática de basura, verificación de los límites de las cadenas y arreglos,

etcétera. Todo con el fin de obtener, de una manera relativamente fácil, código

"seguro". En segunda instancia, los compiladores y los verificadores de código

intentan asegurar que sólo se ejecuten códigos de ejecución (bytecodes) Java,

con la estructura correcta y no maliciosos. Asimismo, analizamos cómo con el

cargador de clases se pueden definir espacios de nombres locales, lo que ayuda

a garantizar que un applet no confiable pueda interferir con el funcionamiento

de otros programas. Finalmente, el acceso a los recursos importantes del

sistema, es administrado entre el sistema de tiempo de ejecución y el

administrador de seguridad (Security Manager), que es implementado por la

clase java.lang.SecurityManager, que permite a las implantaciones incorporar

políticas de seguridad. De esta manera, es posible para las aplicaciones

determinar si una operación es insegura o contraviene las políticas de

seguridad, antes de ejecutarla.

Figura 23: Modelo de seguridad del JDK 1.1.

Page 50: VIRTUALIZACION final.doc

El JDK 1.1 introduce el concepto de "applet firmado" (signed applet), en el

que los applets que poseen una firma digital correcta, son considerados como

confiables. Por lo tanto, reciben los mismos privilegios que el código obtenido

del sistema de archivos. Los applets firmados, junto con la firma, se envían en

un archivo de formato JAR (Java Archive). En este modelo de applets sin

firma, continúan corriendo en la caja de arena. En la figura se puede observar

el modelo de seguridad del JDK 1.1.

Finalmente, como se muestra en la figura 23, en la arquitectura de la

plataforma de seguridad de Java 2 se introdujeron diferentes niveles de

restricción, se eliminó la idea de que el código proveniente del sistema de

archivo local siempre es confiable, etcétera.

Figura 24: Modelo de seguridad de Java 2.

Page 51: VIRTUALIZACION final.doc

CAPITULO III

VIRTUALIZACION DE ESCRITORIOS

3.1. INTRODUCCIÓN

La virtualización de escritorio es un término relativamente nuevo, introducido en

la década de los 90, que describe el proceso de separación entre el escritorio, que

engloba los datos y programas que utilizan los usuarios para trabajar, de la

máquina física. El escritorio "virtualizado" es almacenado remotamente en un

servidor central en lugar de en el disco duro del computador personal. Esto

significa que cuando los usuarios trabajan en su escritorio desde su portátil u

computador personal, todos sus programas, aplicaciones, procesos y datos se

almacenan y ejecutan centralmente, permitiendo a los usuarios acceder

remotamente a sus escritorios desde cualquier dispositivo capaz de conectarse

remotamente al escritorio, tales como un portátil, PC, smartphone o cliente ligero.

La experiencia que tendrá el usuario está orientada para que sea idéntica a la de un

PC estándar, pero desde un dispositivo de cliente ligero o similar, y desde la

misma oficina o remotamente.

Muchas soluciones comerciales también agregan la capacidad de conmutar

algunas sesiones de cliente entrantes (usando un software de rompimiento de

conexión) en dirección a sistemas de escritorio compartido tradicionales como el

Page 52: VIRTUALIZACION final.doc

Terminal Services de Microsoft o servidores de aplicaciones de Citrix, servidores

blade, o incluso computadores de escritorio físicos e individuales no usados.

3.2. DEFINICION DE VIRTUALIZACION DE ESCRITORIO

La virtualización de escritorios significa, en esencia, el hecho de separar el

software que ejecuta el escritorio (lo que un usuario final ve en su pantalla y

entiende por “Windows”, en palabras llanas) del equipo que el usuario manipula

físicamente. Consecuencia directa de ello es que el escritorio se ejecuta en modo

remoto en otro sistema, el que conocemos como “servidor de escritorio” y que

necesitamos una conexión de red entre el equipo del usuario y ese servidor.

El escritorio “virtualizado” estará almacenado también en el sistema de disco de

ese servidor remoto y no en el disco local del equipo del usuario. Este concepto

tan simple transforma radicalmente la aproximación que hacemos al servicio que

ofrecemos al usuario final, ya que todos los programas, aplicaciones, procesos y

datos se ejecutan y almacenan de forma centralizada. Tenemos dos consecuencias

inmediatas: la gestión de los escritorios de los usuarios se realiza en los sistemas

centrales, ya no necesitamos complejas herramientas distribuidas; el escritorio del

usuario está en un punto fijo y se puede acceder a él desde cualquier dispositivo y

cualquier lugar, por lo que tampoco necesitamos engorrosas herramientas de

sincronización de datos entre sistemas dispersos.

Una tercera consecuencia es que el usuario puede acceder a su escritorio desde

dispositivos muy variados: un PC, un simple navegador, un netbook, un Thin

Client, etc. Lo único que necesita es conectividad al servidor de escritorios, ya sea

desde la red interna o desde Internet.

La infraestructura que nos permite separar el software de escritorio del hardware

se conoce genéricamente como VDI (Virtual desktop infrastructure), aunque el

nombre es un poco engañoso. Cuando se habla de VDI enseguida pensamos en

virtualización de servidores, hipervisores, etc. En realidad en su opción más

simple es posible virtualizar escritorios sin software de virtualización, como

vamos a ver.

Page 53: VIRTUALIZACION final.doc

3.3. DEFINICIÓN TÉCNICA DE VIRTUALIZACIÓN DE ESCRITORIO

“La virtualización de escritorio consiste en ejecutar nuestro inicio de sesión no en

nuestro computador como venimos haciendo habitualmente sino que se ejecuta en

el servidor y se muestra en el terminal del usuario.”

“La virtualización de escritorio es encapsular y entregar bien el acceso a la

totalidad de un entorno de un sistema de información o del entorno en sí a un

dispositivo remoto. Este dispositivo puede estar basado en una arquitectura de

hardware completamente diferente a la utilizada por el entorno de escritorio

proyectado. También puede tener como base un sistema operativo totalmente

diferente.”

“La virtualización de escritorio es el uso de máquinas virtuales para permitir que

los múltiples usuarios de la red mantengan sus escritorios individuales en un único

servidor u computador central. El equipo central puede estar localizado en una

residencia, en la empresa o en un centro de datos. Los usuarios pueden estar

geográficamente dispersos y estar conectados al equipo central mediante una red

de área local (LAN), una red de área extensa (WAN) o mediante Internet”.

La virtualización de escritorio ofrece ventajas con respecto al modelo tradicional,

en el que cada computador funciona como una unidad completa y autónoma con

su propio sistema operativo, periféricos y aplicaciones. En general los gastos se

reducen porque los recursos pueden ser compartidos y se asignan a los usuarios en

función de sus necesidades. La integridad de la información del usuario se mejora

por que todos los datos se almacenan y se guardan copias de seguridad en el centro

de datos. Los conflictos en el software se minimizan mediante la reducción del

número total de los programas almacenados en los equipos.

A pesar de la distribución de los recursos, todos los usuarios pueden personalizar y

modificar sus equipos de escritorio para satisfacer sus necesidades específicas. De

esta manera, la virtualización de escritorio ofrece una mayor flexibilidad en

comparación con la paradigma cliente / servidor.

Page 54: VIRTUALIZACION final.doc

Las limitaciones que tiene la virtualización de escritorios son los riesgos de

seguridad que se generan si la red no está bien gestionada, conlleva una pérdida de

autonomía y privacidad del usuario, los desafíos en la creación y el mantenimiento

de los controladores para las impresoras y otros periféricos, dificultad en la gestión

de complejas aplicaciones como las multimedia y problemas de mantenimiento de

direcciones de los usuarios de máquinas virtuales en correspondencia con los del

centro de datos.

3.4. EL ESCRITORIO COMO UN SERVICIO

El escritorio como un servicio es la disposición de la virtualización de escritorio

como un servicio; "transformando los escritorios en servidor de nube" (cloud

service). Hay varias "soluciones diferentes" basadas en la "ejecución local (o

distribuida) y otras basadas en la ejecución centralizada (o remota)". El escritorio

del usuario se ejecuta en el servidor, que puede ser un PC normal, un servidor

dedicado o incluso un dispositivo de hardware fabricado específicamente para

realizar esa tarea. Las órdenes del usuario se transmiten al servidor a través de la

red, y el servidor envía de vuelta los resultados de las acciones. Según el modelo

utilizado, el servidor puede encargarse de ejecutar todas y cada una de las tareas

que requiera el usuario, o puede delegar algunas de las tareas al computador que

esté utilizando el usuario, a fin de reducir la carga de trabajo del servidor y el

tráfico de la red.

Figura 25: Virtualización de Escritorio

Page 55: VIRTUALIZACION final.doc

El usuario puede tener un computador completo que haya sido configurado para

depender total o parcialmente de las instrucciones del servidor. O puede tener un

aparato llamado "terminal" que haya sido diseñado para esta tarea, al cual

conectará un monitor, un teclado, y un ratón, y con los cuáles usará la terminal

como si se tratase de un computador completo. Esta terminal sólo funcionará

cuando tenga conexión con un servidor adecuado.

3.5. FUNDAMENTOS

Es complejo instalar y mantener equipos de trabajo separados, además los usuarios

han disfrutado de una capacidad casi ilimitada tanto para instalar como para borrar

software. Debido a esto, los departamentos corporativos de tecnología de

información y los usuarios han usado Terminal Services o Presentation Server de

Citrix para proporcionar un entorno de escritorio estable y simple, pudiendo los

usuario estar usando tanto un PC de escritorio como un cliente ligero.

La virtualización del escritorio proporciona muchas de las ventajas de un servidor

de terminales, si es configurado por los administradores de sistemas pueden

proporcionar a los usuarios mucha más flexibilidad, por ejemplo, cada uno puede

tener permitido instalar y configurar sus propias aplicaciones. Los usuarios

también disponen de la capacidad de acceder a sus escritorios virtuales basados en

servidor desde otras localizaciones.

3.6. INFRAESTRUCTURA DE ESCRITORIO VIRTUAL (VDI)

La Infraestructura de escritorio virtual (Virtual Desktop Infrastructure o VDI) es un

modelo arquitectónico emergente donde los sistemas operativos del cliente se

ejecutan en máquinas virtuales (VM) basadas en servidor en el centro de datos e

interactúan con los dispositivos de cliente de los usuarios, como las computadoras

personales o clientes ligeros. Tal como el escritorio remoto de terminal services,

VDI ofrece a TI la capacidad de centralizar el escritorio de un usuario, en vez de

una sesión de servidor; sin embargo se virtualiza todo el entorno del cliente dentro

del hipervisor basado en servidor. Con VDI, el usuario puede adquirir una

experiencia de escritorio rica e individualizada con un total control administrativo

de escritorios y aplicaciones. Sin embargo, aunque esta arquitectura es flexible, se

Page 56: VIRTUALIZACION final.doc

requieren considerablemente muchos más recursos de hardware de servidor que en

los enfoques de escritorio remoto de terminal.

VDI es más adecuado para trabajadores contratados y extranjeros, para usuarios

que necesitan acceso a su entorno de trabajo desde cualquier lugar, inclusive desde

una computadora personal que no pertenezca a la compañía, como así también para

clientes empresariales con una estrategia centralizada de escritorios para los

trabajadores de oficina.

Figura 26: Infraestructura de Virtualización de escritorios

3.7. ARQUITECTURA TÉCNICA

Hemos visto que la virtualización de escritorios consiste en ejecutar el escritorio

en un sistema distinto del que utiliza el usuario. Ello nos lleva a distinguir

directamente dos capas diferenciadas, el dispositivo de acceso (el equipo físico

donde “teclea” el usuario) y el servidor de escritorio, el equipo central que ejecuta

el software de escritorio (Windows, Gnome, KDE, etc). Cada una de estas dos

capas puede tratarse de forma independiente y podemos encontrar distintas

combinaciones con soluciones variadas en cada una de ellas. Estrictamente, al

menos conceptualmente, las aplicaciones se ejecutan en una tercera capa, los

servidores de aplicaciones. En muchos casos, sin embargo, los servidores de

Page 57: VIRTUALIZACION final.doc

escritorios también ejecutan aplicaciones (por ejemplo, las ofimáticas), aunque

esto no siempre es así.

Los dispositivos de acceso pueden tener también una tecnología totalmente

distinta a los propios escritorios: así, por ejemplo, podemos acceder a escritorios

Windows desde Thin Clients basados en Linux. El usuario final tendrá la

experiencia de que su dispositivo es un PC con Windows, pero en realidad estará

ejecutando Linux en un dispositivo de acceso sin que él lo note.

Un punto importante es la forma de comunicación entre los dispositivos de acceso

y los servidores de escritorio. Vamos a utilizar protocolos especiales en función,

básicamente, del tipo de escritorio que utilicemos. Así por ejemplo si queremos

tener escritorios Windows utilizaremos el protocolo RDP y si queremos escritorios

Linux el protocolo X Window. Aunque también tenemos otras opciones, que

elegiremos en función de las prestaciones y entornos en los que queramos

funcionar, como ICA, NX o VNC por ejemplo.

El modelo de virtualización de escritorios nos permite que los escritorios se

ejecuten en servidores virtualizados, pero eso no es imprescindible. De hecho en

los sistemas más simples los escritorios se pueden ejecutar en los tradicionales

servidores de terminales, ya sean Windows, Citrix o Linux. Esa tecnologías nos

permiten ya tener varios usuarios ejecutando su escritorio personalizado en un

sistema central. Ese sistema central estará ubicado, generalmente, en nuestro

centro de datos, pero cada vez son más comunes también las soluciones de hosting

para esos sistemas.

De hecho vamos a encontrar tres tecnologías básicas en los servidores de

escritorio: la ya mencionada de servidores de terminales, la de servidores con

“blades”, en la que cada "blade" ejecuta el escritorio de un usuario y la de

servidores virtuales, en la que los escritorios se ejecutan en máquinas virtuales, ya

sea de modo personalizado (un escritorio para cada usuario) o en modo pool

(varios usuarios comparten un modelo de escritorio genérico). Esta última

tecnología de escritorios virtuales y virtualizados a la vez es la más sofisticada y la

Page 58: VIRTUALIZACION final.doc

que proporciona mayores beneficios, pero en muchos casos las otras tecnologías

también son perfectamente aplicables y económicamente preferibles.

Otro componente que podemos necesitar en una plataforma VDI es el “broker”.

Un broker, en su versión más simple, es un componente de software que pone en

contacto el usuario que quiere utilizar una plataforma VDI con el escritorio virtual

que debe utilizar. Así, ene esencia, el cometido del broker es identificar el usuario

y, en función de los parámetros que se hayan configurado para ese usuario,

conectarlo con el servidor de escritorio que le corresponda.

En las plataformas más sofisticadas, sin embargo, el broker puede realizar más

funciones. Así, por ejemplo, puede encargarse también (u ordenar a algún otro

software) que arranque una máquina virtual para el escritorio del usuario o

encargarse de validar el usuario en un entorno de Single Sign On.

3.8. EL DISEÑO DE LA INFRAESTRUCTURA

Como vemos una solución de escritorios virtuales puede requerir una arquitectura

compleja, por lo que antes de lanzarse a su puesta en marcha es necesario realizar

un diseño, precedido de una fase en la que establezcamos claramente las

especificaciones y prestaciones que vamos a exigir de la plataforma.

Figura 27: Solución de virtualización de escritorios

Page 59: VIRTUALIZACION final.doc

En muchos casos la aproximación a una solución de escritorios virtuales no se

aborda con rigor y parece ser que lo único importante es dimensionar los

servidores para que tengan el rendimiento correcto, dejando de lado el resto de

aspectos. Hemos visto muchas propuestas de este tipo en las que ni tan sólo se

habla de la arquitectura, componentes software o requisitos funcionales. La

posterior puesta en marcha de estas soluciones “pobremente” diseñadas frustran al

equipo de IT responsable de su funcionamiento, ya que no se recogen todos los

beneficios que la arquitectura podría proporcionar. No se trata de virtualizar

escritorios porque sí, se trata de virtualizar porque deseamos obtener mejores

prestaciones y reducir los costes de administración.

Para ello es necesario diseñar cada capa de la arquitectura para que cumpla su

función al menor coste posible, con un conocimiento y experiencia de lo que existe

en el mercado y lo que es apropiado para cada caso. Un buen diseño debe

responder por lo menos a las siguientes preguntas:

Respecto los dispositivos de acceso, ¿Reconvertimos los PC actuales en Thin

Clients? ¿Adquirimos Thin Clients tradicionales, con software en PROM, o

utilizamos una solución flexible, con software en streaming? ¿Utilizamos Thin

Clients con prestaciones especiales, como por ejemplo SunRay? ¿Queremos

que los usuarios puedan acceder desde su casa, desde un cibercafé, en roaming?

Respecto a los servidores de escritorio, ¿optamos por una solución de Terminal

Server, blades o máquinas virtuales? ¿Qué tecnología de escritorio utilizamos,

Windows, Linux o mixta en función de las necesidades de los usuarios? ¿Qué

alta disponibilidad queremos? ¿Qué rendimientos esperamos?

Respecto al acceso remoto, ¿Necesitamos conectar usuarios de oficinas remotas?

¿Queremos poder conectarnos desde Internet de modo seguro? ¿Queremos dar

acceso a través de redes móviles?

Si utilizamos máquinas virtuales, ¿qué tecnología implantamos, VMWare, Xen,

VirtualBox, ...? ¿Vamos a necesitar un sistema de gestión específico para los

virtualizadores?

Respecto a aspectos de gestión y administración, ¿Cómo vamos a gestionar los

escritorios? ¿vamos a implantar pools, escritorios personales o ambos?

¿Necesitaremos un broker? ¿Qué queremos que haga el broker? ¿necesitamos

Page 60: VIRTUALIZACION final.doc

algún sistema de gestión como View de VMWare, Xendesktop, o algún otro

más económico?

Una vez tengamos claro el diseño de la arquitectura software podremos plantearnos

el dimensionamiento del resto de componentes: el número y tamaño de los

servidores en función del número de usuarios, prestaciones y redundancia; la

verificación de la capacidad de las redes internas y externas; los sistemas de

almacenamiento y backup; y los otros componentes que puedan ser necesarios en

función de las especificaciones del proyecto y diseño de la arquitectura software.

Es importante señalar que el dispositivo de acceso sólo necesita una potencia

mínima, con capacidad para manejar tan sólo el software de conexión. Puede ser

un dispositivo simple y barato, con poca memoria y poca necesidad de CPU. Ello

permite que sean dispositivos de muy poco consumo y sin disco o ventiladores, lo

que los hace además silenciosos y más fiables. Para el usuario este dispositivo se

comporta como un terminal transparente y, si se ha configurado para ello, puede ni

tan sólo ser consciente de que las aplicaciones se están ejecutando en otro equipo.

Muchas veces cuando un PC queda obsoleto puede reconvertirse en Thin Client,

alargando su vida útil. En el caso extremo, incluso un PC con una CPU 486 podría

funcionar perfectamente como Thin Client.

3.9. BENEFICIOS

Al igual que cualquier otra tecnología, la virtualización de escritorios proporciona

una serie de beneficios clave que hace que esta tecnología sea la elegida por un

gran número de usuarios:

a) AUMENTA LA SEGURIDAD DE LOS ESCRITORIOS Y

DISMINUYE LOS COSTOS DE SOPORTE.

Las organizaciones tienen una gran cantidad de problemas otorgando permisos

a los usuarios de sus equipos informáticos. Resulta complicado otorgar los

mínimos permisos posibles y ofrecer a los usuarios un entorno de trabajo

flexible con todas las funcionalidades que requieren para realizar su trabajo,

sobre todo a aquellos usuarios que viajan. La virtualización del escritorio

posibilita centralizar los escritorios en servidores centrales y gestionar dichos

escritorios individualmente de manera remota. Esto provee a los usuarios una

Page 61: VIRTUALIZACION final.doc

experiencia de escritorio completa y permite al personal de IT gestionar los

escritorios virtualmente en lugar de físicamente. Disminuye radicalmente el

coste de mantenimiento de los escritorios ya que no permites a sus usuarios

modificar nada del Sistema Operativo, principal causa de los problemas en las

organizaciones.

b) REDUCE LOS COSTOS GENERALES DE HARDWARE

La virtualización de escritorio implica que usted no tiene que tener equipos de

última tecnología, por que todas las aplicaciones del escritorio son ejecutadas

centralmente en un servidor remoto. Esto significa que los equipos que los

usuarios están utilizando para conectarse al servidor tienen un periodo de vida

mayor. Estos costes pueden reducirse aún más si para acceder a los escritorios

virtuales utilizamos clientes ligeros, que son mucho menos costosos que los

PC tradicionales.

c) ASEGURAR LA CONTINUIDAD DEL NEGOCIO

Un estudio reciente indica que la gran mayoría de las organizaciones no tienen

planes de continuidad del negocio actuales. El estudio se basa en una encuesta

realizada a 100 administradores de IT de Pymes del Reino Unido (empresas

con 30-500 empleados) llevada a cabo por ICM Investigación. La encuesta

sugiere que ante la posibilidad de un fallo en el transporte público o desastre

en el lugar de trabajo, muchas empresas no estarían en condiciones reabrir el

negocio, mientras que los usuarios de la virtualización de escritorios serían

capaces de ofrecer a sus usuarios una clave personal para acceder a sus

escritorios desde cualquier ubicación.

d) ALTERNATIVA ECOLÓGICA

Los escritorios virtuales almacenados en el servidor central son una alternativa

ecológica a los PC tradicionales. Un estudio realizado en 2008 por The

Climate Group indica que los PC consumen alrededor de tres veces más

energía que el centro de datos. Uno de los mayores beneficios de la

virtualización de servidores es el ahorro de energía que se produce cuando

varios servidores a baja utilización ejecutando aplicaciones se combinan en

una única pieza física de hardware.

e) MEJORAR LA SEGURIDAD DE LOS DATOS

La virtualización de escritorio hace que todos los datos de los usuarios de los

escritorios, y por lo tanto de las organizaciones, se almacenen centralmente en

Page 62: VIRTUALIZACION final.doc

los servidores, absolutamente nada se almacena a nivel local. Por lo que si el

empleado pierde o le roban el portátil, no se pierden los datos y tampoco

dichos datos pasan a manos peligrosas.

3.10. VENTAJAS

El modelo de virtualización de escritorios ofrece ventajas palpables sobre la

arquitectura tradicional de disponer de un PC completo en el puesto de trabajo de

cada usuario, con su propio sistema operativo, aplicaciones y necesidad de gestión

(antivirus, parches, instalación de aplicaciones, reparaciones, etc). El precio de

adquisición del hardware también se puede reducir, ya que aunque un equipo que

pueda utilizarse como servidor de escritorios tiene un coste más alto que un PC

ordinario puede dar servicio a varias decenas de usuarios y su potencia se

aprovecha mejor al ser un recurso compartido. Adicionalmente se aumenta la

seguridad de los datos, ya que es fácil realizar backup de toda la información en el

centro de datos.

Las principales ventajas son las siguientes:

Implementación instantánea de nuevos escritorios.

Prácticamente cero tiempo de inactividad en caso de fallos de hardware.

Reducción significativa del coste de los nuevos despliegues.

Sólida capacidad de gestión de la imagen del escritorio.

El ciclo de actualización de los PC pasa a ampliarse a 5-6 años o más.

Escritorios existentes incluyen múltiples monitores, audio/video bidireccional,

streaming de video, soporte a los puertos USB, etc.

Capacidad de acceso a los usuarios de empresas a sus escritorios virtuales desde

cualquier PC, incluida el PC de la casa del empleado.

Recursos a medida de las necesidades del escritorio.

Múltiples escritorios bajo demanda.

Libre provisión de equipos de sobremesa (controlada por las políticas de cada

corporación).

3.11. DESVENTAJAS

La arquitectura, sin embargo, también tiene algunas limitaciones, que pueden no

hacerla adecuada para algunos usuarios concretos. Por ejemplo:

Page 63: VIRTUALIZACION final.doc

Los usuarios pierden autonomía sobre sus equipos, por lo que pueden

presentarse ciertas reticencias si están acostumbrados a instalar aplicaciones y

almacenar datos privados (“No puedo pasar las fotos a mi computador”)

Peor soporte para impresoras y periféricos que estén conectados al computador.

La arquitectura prácticamente exige que las impresoras se conecten

directamente a la red y no a los equipos de los usuarios.

Las aplicaciones multimedia con uso intensivo de video en alta resolución

pueden no tener un buen rendimiento. Si es necesario ejecutar aplicaciones

multimedia con video en alta resolución puede ser necesario que los

dispositivos de acceso decodifiquen el video localmente, lo que añade cierta

complejidad al sistema y exige dispositivos de mayor potencia.

Dependencia del sistema a la disponibilidad de los servidores de escritorio y

infraestructura de red. Es necesario contemplar algún nivel de redundancia para

ambos subsistemas si queremos garantizar el uptime.

Cierta necesidad de formación en los técnicos que deban desplegar y administrar

la infraestructura. La administración de una infraestructura para escritorios

virtuales requiere ciertos conocimientos específicos y en algunos casos algunos

cambios en los modos de trabajo y procedimientos operativos.

3.12. LA INDUSTRIA DE LA VIRTUALIZACIÓN DE ESCRITORIO.

Según Gartner Inc. el mercado del escritorio virtual alojado en servidores (HVD)

aumentará hasta conseguir los 49 millones de unidades en el 2013, frente a más de

500.000 unidades en 2009. Los ingresos mundiales del sector pasarán a ser de

alrededor de $1.3 billones a $1.5 billones en 2009, y esto corresponde a menos del

1% del mercado de PC de todo el mundo profesional. El informe de Gartner

“Emerging Technology Analysis: Hosted Virtual Desktops” también indican que

mientras que en las empresas el gasto en hardware disminuirá, éstos requerirán

mas servidores, ancho de banda y software para soportar nuevas arquitecturas.

Gartner calcula que aproximadamente el 15% de los actuales profesionales de todo

el mundo desplazarían el PC tradicional hacia HVDs en 2014, lo que equivale a

cerca de 66 millones de dispositivos conectados. Los EE.UU. alcanzaría el doble

de la media de todo el mundo con más de 18 millones de dispositivos conectados.

Tras un primer comienzo lento, el mercado del HVDs se acelerará en 2010 y 2011.

Page 64: VIRTUALIZACION final.doc

A pesar de las nuevas mejoras en el rendimiento y la capacidad de gestión que se

espera de HVDs en 2009, la actual recesión económica que inhiba la adopción de

HVDs a corto plazo, porque requieren grandes despliegues en las inversiones

iniciales en infraestructura de red y el servidor. Debido a los recortes

presupuestarios actuales, se espera que las implementaciones HVD previstas se

retrasen a 2010 y 2011.

Page 65: VIRTUALIZACION final.doc

CAPITULO IV

VIRTUALBOX

4.1. VirtualBox

VirtualBox es un programa que permite crear máquinas virtuales. Originalmente fue

desarrollado por la empresa Innotek, que actualmente es propiedad de la empresa

Sun.

VirtualBox puede ejecutarse en multitud de sistemas operativos anfitriones como,

por ejemplo, Windows, OS X, Linux y Solaris. La lista completa de sistemas

operativos huésped con soporte se puede consultar en:

http://www.VirtualBox.org/wiki/Guest_OSes e incluye, entre otros, Linux,

Windows, Solaris, FreeBSD, Open BSD y MS-DOS. La virtualización de los

sistemas operativos es transparente, es decir, no hace falta modificar el sistema

operativo huésped para virtualizarlo.

4.2. LICENCIAS DE VIRTUALBOX

Actualmente existen dos versiones del programa VirtualBox: VirtualBox versión

propietaria y VirtualBox Open Source Edition, llamada VirtualBox OSE.

La versión propietaria se distribuye como un programa binario ejecutable con una

licencia comercial que es gratuita para uso personal, educativo o de evaluación

Page 66: VIRTUALIZACION final.doc

según se recoge en la documentación de licencia en

http://www.virtualbox.org/wiki/Licensing_FAQ.

La versión privada se puede descargar desde http://www.VirtualBox.org/. La

versión Open Source de VirtualBox se distribuye conforme a la licencia GPL. Esta

versión libre es equivalente a la versión privada, pero algunas funciones de la

versión privada no estén presentes en la versión OSE. Por ejemplo, la versión libre

no implementa el controlador USB ni el SATA. La versión libre viene incluida en

Ubuntu Linux. Los binarios para Windows se pueden descargar desde

http://vboxwin32.sourceforge.net/, pero no se actualizan tan rápidamente como la

versión propietaria.

4.3. TÉCNICAS DE VIRTUALIZACIÓN

VirtualBox permite que las instrucciones de la máquina virtual se ejecuten en el

procesador de la máquina real, excepto aquellas que puedan interferir en el

funcionamiento de la máquina real. Por ejemplo, cuando la máquina virtual ejecuta

instrucciones que escriben información en el disco duro, el programa VirtualBox

toma el control de las instrucciones y realiza la escritura en un disco virtual que,

generalmente, es un archivo.

Para realizar el proceso de virtualización, VirtualBox utiliza dos tipos de técnicas:

técnicas por software y técnicas por hardware:

a) Virtualización por software

Las técnicas de virtualización por software posibilitan la virtualización en todo

tipo de PC, antiguos y nuevos, pero las máquinas virtuales son lentas y necesita

de más tiempo de microprocesador.

b) Virtualización por hardware

Las técnicas de virtualización por hardware aceleran la ejecución del huésped,

pero sólo funcionan con microprocesadores modernos. En el caso de

microprocesadores Intel, la virtualización por hardware se denomina VT-x y en

el caso de AMD, se denomina AMD-V. En la mayoría de computadores, la

virtualización por hardware se debe habilitar en la BIOS.

Page 67: VIRTUALIZACION final.doc

En algunos casos será necesario consultar el manual del microprocesador de la

PC para más información. La paginación anidada (nested paging) es una técnica

de virtualización por hardware que puede mejorar la gestión de la memoria. Los

usuarios pueden habilitar o deshabilitar manualmente ambas opciones. En el

caso de emular un microprocesador con arquitectura de 64 bits o bien en el caso

de simular más de una CPU en la maquina virtual, la aceleración por hardware

deberá estar activada.

VirtualBox puede ejecutar como huésped, además de Windows y Linux, otros

sistemas operativos como Open-Solaris, OpenBSD, OS/2, Syllable, ReactOS,

SkyOS y Haiku.

4.4. CONFIGURACIÓN DE LA RED EN LA MÁQUINA HUÉSPED DE

VIRTUALBOX

En las máquinas huésped de VirtualBox se pueden instalar hasta ocho tarjetas de red

virtuales. VirtualBox emula cinco tipos diferentes de tarjeta de red virtual.

Cuando el usuario crea una nueva máquina huésped y elije el sistema operativo que

contendrá, VirtualBox le asigna automáticamente una tarjeta de red compatible en

modo NAT. Los modos de funcionamiento de una tarjeta de red virtual son los

siguientes:

No conectado: en este modo, la tarjeta virtual existe en el huésped, pero está

configurada como si no tuviera ningún cable conectado.

NAT: NAT (siglas de Network Address Translation) es el modo por defecto de

la tarjeta de red virtual. Este modo permite al huésped navegar por Internet,

descargar ficheros y leer el correo electrónico sin necesidad de configurar el

sistema operativo huésped. En este modo, la máquina virtual puede conectarse a

otras redes mediante un router virtual proporcionado por VirtualBox.

Dicho router sirve direcciones DHCP del tipo 10.0.x.0/24 donde x=2 para la

primera tarjeta de red, x=3 para la segunda tarjeta de red, etc. En el caso de una

única tarjeta de red, el router tiene como puerta de enlace la dirección 10.0.2.2,

como servidor DNS la dirección 10.0.2.3 y la primera dirección DHCP asignada

es la 10.0.2.15. La arrancada por el método PXE es compatiblecon el modo

NAT.

Page 68: VIRTUALIZACION final.doc

Como desventaja, en este modo, los comandos que envían paquetes ICMP como

ping o traceroute pueden no funcionar correctamente y, en principio, la máquina

virtual no es accesible desde Internet.

Adaptador puente (Bridge): en este modo, se crea una tarjeta de red virtual en

el anfitrión que intercepta el tráfico de red y puede inyectar paquetes en la red,

de manera que el huésped se configura como si estuviera conectado por un cable

a la tarjeta de red virtual del anfitrión.

Red Interna: en este modo, se crea una red virtual visible entre las máquinas

virtuales, pero invisible al anfitrión o a máquinas externas a la red.

Adaptador Sólo-Anfitrión: en este modo se crea una tarjeta de red virtual en el

anfitrión que puede conectarse con las máquinas virtuales sin necesitar que el

anfitrión tenga una tarjeta de red.

4.5. INSTALACIÓN DE VIRTUALBOX

a) INSTALACIÓN DE VIRTUALBOX EN WINDOWS

Después de descargar el programa en formato binario, ejecute el fichero

ejecutable con un doble clic.

Figura 28.

Page 69: VIRTUALIZACION final.doc

Lea y acepte la licencia marcando la opción I accept the terms in the License

Agreement.

Figura 29.

Seleccione la ruta del directorio donde se instalará el programa:

Figura 30.

Page 70: VIRTUALIZACION final.doc

Cree los accesos directos al programa:

Figura 31.

El siguiente aviso alerta de que la instalación de VirtualBox desconectará el

computador temporalmente de la red. Para continuar la instalación, pulse el

botón Yes y a continuación el botón Install.

Figura 32.

Page 71: VIRTUALIZACION final.doc

Durante la instalación aparecerán avisos como el siguiente donde se alerta al

usuario de que la instalación no ha superado la prueba del logotipo de

Windows. Esto es debido a que el hardware virtual instalado no incluye una

firma digital que indica que ha superado los procedimientos de prueba del

sistema operativo. Continúe la instalación con el botón Continuar.

Figura 33.

Pulse el botón Finish para acabar la instalación:

Figura 34.

Page 72: VIRTUALIZACION final.doc

b) INSTALACIÓN DE VIRTUALBOX EN UBUNTU

Ejecute desde la consola:

sudo gedit /etc/apt/sources.list

y añada la línea:

deb http://download.virtualbox.org/virtualbox/debian jaunty non-free

Actualice los paquetes:

sudo apt-get update;apt-get upgrade

Añada la firma de los paquetes:

wget –q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc

-O- | sudo apt-key add –

Instale Virtualbox:

sudo apt-get install dkms virtualbox-3.0

Una vez instalado, el programa se ejecuta desde el menú principal de Gnome

con las opciones Aplicaciones->Accesorios->VirtualBox

4.6. CASO PRÁCTICO: CREACIÓN DE UNA MÁQUINA VIRTUAL PARA

INSTALAR UBUNTU 9.04

Cuando se crea una máquina virtual y se selecciona el sistema operativo que se

desea instalar, VirtualBox asignará de forma automática los requisitos

recomendados de memoria, disco duro y otras configuraciones El objetivo de la

práctica consiste en crear una máquina virtual para instalar Ubuntu 9.04 desde una

imagen del CD autónomo de instalación en formato ISO.

Para crear una máquina virtual, ejecute VirtualBox y seleccione en el menú del

programa la opción Máquina -> Nueva. Pulse el botón Siguiente para continuar.

Page 73: VIRTUALIZACION final.doc

Figura 35.

Seleccione el nombre de la máquina virtual, el tipo de sistema operativo huésped

Linux y la versión Ubuntu . Pulse Siguiente para continuar.

Figura 36.

Seleccione 512 MB de memoria para el sistema operativo huésped. Recuerde que la

cantidad asignada será a cuenta de la memoria del sistema operativo anfitrión. Pulse

Siguiente para continuar.

Page 74: VIRTUALIZACION final.doc

Figura 37.

A continuación, cree un fichero que será el disco duro virtual del sistema operativo

huésped. En este caso, asigne 20 GB al disco duro virtual . Pulse el botón Nuevo

para continuar.

Figura 38.

Un nuevo asistente aparecerá para ayudar a crear el disco duro virtual. Pulse

Siguiente para continuar.

Page 75: VIRTUALIZACION final.doc

Figura 39.

El disco duro virtual puede ser de dos tipos:

Dynamic Expanded Storage: en este caso, el tamaño del disco duro virtual

ocupa poco espacio y va creciendo dinámicamente hasta el límite del tamaño

asignado conforme crecen los ficheros del Sistema Operativo Huésped. Este

método tiene la ventaja de que el disco duro virtual ocupa el espacio necesario

en el disco duro y el tamaño del fichero crece si se necesita. Como

inconveniente, la creación de ficheros en el disco virtual es lenta.

Fixed Storage: en este caso, se crea un fichero del mismo tamaño que el disco

duro virtual. Este método tiene la ventaja de que el acceso al disco duro virtual

es rápido, pero como inconveniente, ocupa más espacio.

Seleccione el método Dynamic Expanded Storage.

Page 76: VIRTUALIZACION final.doc

Figura 40.

VirtualBox crea máquinas virtuales con soporte de USB 2.0, iSCSI, ethernet a

Gigabit y controladores SATA.

En Location, seleccione el nombre del fichero que contendrá el disco duro virtual.

En el campo Size, marque 20 GiB como el tamaño máximo del disco duro virtual.

Es recomendable no utilizar espacios en el campo Location. Utilice el símbolo de

subrayado o el guión para separar palabras

Figura 41.

Page 77: VIRTUALIZACION final.doc

Finalice el asistente de creación de discos duros con la opción Terminar.

Figura 42.

Ahora ya está configurado el disco duro virtual. Pulse Siguiente para continuar.

Figura 43.

Finalice el asistente de creación de máquinas virtuales con la opción Terminar.

Page 78: VIRTUALIZACION final.doc

Figura 44.

a) ASISTENTE PARA LA INSTALACIÓN DE UN SISTEMA

OPERATIVO HUÉSPED.

Una vez creada la máquina virtual, se le deberá instalar un sistema operativo

para que sea funcional. Para ello, utilice en el menú de VirtualBox la opción

Máquina e Iniciar.

Figura 45.

Como es la primera vez que se inicia la máquina virtual, se ejecutará un asistente

que ayudará a configurar el dispositivo que se utilizará para instalar el sistema

Page 79: VIRTUALIZACION final.doc

operativo huésped. Para este ejemplo, seleccione una imagen en formato ISO del

CDROM de instalación del sistema operativo Ubuntu. Pulse el botón en forma

de carpeta

Figura 46.

Pulse sobre el icono Agregar y navegue por el disco duro y seleccione el fichero

en formato ISO que contiene una copia del sistema operativo Ubuntu.

Figura 47.

Page 80: VIRTUALIZACION final.doc

Una vez seleccionado el fichero en formato ISO, pulse el botón Siguiente.

Figura 48.

Un fichero ISO es un archivo que, según el estándar ISO 9660 de la

Organización Internacional para la Estandarización, almacena una imagen exacta

de un sistema de ficheros de un disco óptico como un CD o un DVD. El

asistente avisará que cuando se cierre la máquina virtual, el dispositivo de

arrancada se desmontará automáticamente. Deberá desmontar el dispositivo de

arrancada una vez instalado el sistema operativo para que la secuencia de

instalación no se vuelva a ejecutar. Pulse el botón Terminar.

Figura 49.

Page 81: VIRTUALIZACION final.doc

A continuación, el sistema operativo huésped se instalará como si se tratase de

un sistema operativo real.

Figura 50.

4.7. INSTALACIÓN DE CONTROLADORES DE DISPOSITIVOS EN

HUÉSPEDES

Después de instalar el sistema operativo huésped, se deben instalar una serie de

programas llamados drivers o controladores para interactuar con los periféricos

virtuales, como por ejemplo, la tarjeta de red virtual. Los controladores para las

máquinas virtuales vienen incluidos en un CDROM virtual que puede montarse en

el huésped con la opción Dispositivos ->Instalar Guest Additions (Aplicaciones del

huésped).

a) INSTALACIÓN DE CONTROLADORES DE DISPOSITIVOS EN UN

HUÉSPED UBUNTU

En el caso de un huésped Ubuntu, aparecerá en el escritorio el CDROM virtual,

dentro del cual ejecutaremos el fichero autorun.sh:

Page 82: VIRTUALIZACION final.doc

Figura 51.

Seleccione la opción Ejecutar en un terminal e introduzca la contraseña de

superusuario:

Figura 52.

Finalmente, apague la máquina huésped. La próxima vez que inicie el sistema,

los controladores de dispositivo se ejecutaran automáticamente.

b) INSTALACIÓN DE CONTROLADORES DE DISPOSITIVOS EN UN

HUÉSPED WINDOWS

La instalación de los controladores en un huésped Windows preguntará al

usuario si desea instalar los dispositivos virtuales. Pulse el botón Instalar

Figura 53.

Page 83: VIRTUALIZACION final.doc

COMBINACIONES DE TECLAS ESPECIALES

Algunas combinaciones de teclas especiales afectan al funcionamiento de los

sistemas operativos y la pulsación de dichas teclas en el sistema operativo

huésped puede provocar efectos no deseados en el sistema operativo

anfitrión. La Tecla Anfitrión en VirtualBox es la tecla CTRL derecha.

Las siguientes combinaciones de teclas realizan envíos de teclas especiales al

huésped:

- Tecla anfitrión + Del: envía Ctrl+Alt+Del al sistema operativo huésped.

Esta combinación de teclas apaga o inicia la sesión en Windows.

- Tecla anfitrión + Backspace: envía Ctrl+Alt+Backspace al sistema

operativo huésped. Esta combinación de teclas reinicia el modo gráfico

en Linux.

- Tecla anfitrión + Fx: siendo Fx una tecla de función, envía Ctrl+Alt+Fx

al sistema operativo huésped. Esta combinación de teclas cambia entre

las terminales de Linux.

OPCIONES ESPECIALES DE VIRTUALBOX

VirtualBox proporciona las siguientes opciones especiales:

- Modo Fluído o Seamless Mode: este modo de funcionamiento permite

ver únicamente la ventana activa del huésped en el anfitrión. Para activar

o desactivar este modo, pulse simultáneamente la Tecla Anfitrión y la

letra L.

4.8. CONFIGURACIÓN DE LAS MÁQUINAS VIRTUALES

Una vez creada una máquina virtual con VirtualBox, se puede cambiar su

configuración mediante la opción del menú MáquinaéConfiguración o bien

utilizando el icono con la etiqueta Configuración de la barra de iconos.

Page 84: VIRTUALIZACION final.doc

Figura 54.

Las diferentes configuraciones de dispositivos y carpetas se muestran en el panel

izquierdo y en el panel derecho se muestran las diferentes opciones organizadas en

pestañas. En la siguiente sección se explicarán los parámetros de configuración.

Figura 55.

Page 85: VIRTUALIZACION final.doc

a) CONFIGURACIÓN GENERAL

Figura 56.

La configuración del sistema se configura en las siguientes pestañas:

Básico:

- Name: nombre de la máquina virtual

- Sistema Operativo: nombre del sistemaoperativo huésped. Por ejemplo:

Linux, Windows, Solaris, etc.

- Versión: versión del sistema operativo. Por ejemplo: Debian, Ubuntu,

Red Hat, etc.

Avanzado:

- Snapshot Folder: nombre de la carpeta donde se guardarán las

instantáneas de la máquina virtual.

- Shared Clipboard: método para compartir el portapapeles entre el

sistema operativo anfitrión y el sistema operativo huésped.

Por defecto es Bidireccional, de manera que se puede copiar y pegar

texto entre el sistema operativo huésped y el anfitrión. Esta característica

sólo se puede utilizar si el sistema operativo anfitrión tiene instaladas las

Aplicaciones del Huésped.

- Removable Media: con esta opción activa, VirtualBox recuerda que

elementos están montados y los vuelve a montar cuando se reinicia la

máquina virtual.

Page 86: VIRTUALIZACION final.doc

- Mini ToolBar: esta opción configura el modo de visualización de la

tabla de herramientas de VirtualBox cuando la máquina virtual ocupa la

pantalla completamente o si se ejecuta en modo Fluido.

Figura 57.

- Descripción: permite al usuario escribir una descripción de la máquina

virtual.

b) CONFIGURACIÓN DEL SISTEMA

Motherboard:

- Base Memory: controla de cuanta memoria dispondrá el huésped.

- Boot Order: configura el orden de arrancada de los dispositivos.

- Extended Features: configura la activación de ACPI (Advanced

Configuration Power management Interface) y IO APIC. Estas opciones

no se deben deshabilitar después de instalar un huésped Windows.

Processor:

- Processor: permite definir entre 1 y 32 CPU virtuales en el huésped.

- Habilitar PAE/NX: PAE (Physical Address Extension) es una opción de

la CPU que permite a un microprocesador de 32 bits direccionar más de

4 GiB de RAM mediante una técnica consistente en utilizar 36 bits para

direccionar la memoria. Algunos sistemas operativos, como Ubuntu

Server, necesitan tener activada esta opción.

-

Page 87: VIRTUALIZACION final.doc

Acceleration:

- Habilitar VT-x/AMD-V: esta opción permite utilizar la virtualización

por hardware si están disponibles en el microprocesador.

- Enable Nested Paging: permite utilizar el método de paginación anidada

si está disponible.

Figura 58.

c) CONFIGURACIÓN DE LA PANTALLA

Video:

- Video Memory: controla la cantidad de memoria de vídeo de la máquina

virtual.

- Enable 3D Acceleration: habilita la aceleración 3D. Esta característica

sólo se puede utilizar si el anfitrión tiene instaladas las Aplicaciones del

Huésped.

- Remote Display: esta opción permite controlar el huésped remotamente

mediante un cliente RDP (Remote Desktop Protocol).

Figura 59.

Page 88: VIRTUALIZACION final.doc

d) CONFIGURACIÓN DE LOS DISCOS DUROS

IDE Controller Type: permite configurar el tipo de controlador IDE.

Enable Additional Controler: permite añadir otros controladores de disco

SATA o SCSI.

Attachments: permite añadir o eliminar discos de la máquina virtual.

Figura 60.

Los discos se gestionan mediante el Manejador de Medios Virtuales pulsando el

tercer icono (Seleccionar disco duro). Mediante este gestor se puede crear un

nuevo disco, agregarlo en la lista de disponibles, eliminarlo o liberarlo. Esta

última opción se refiere a desconectar el disco duro virtual de su huésped

asociado.

Figura 61.

Page 89: VIRTUALIZACION final.doc

e) CONFIGURACIÓN DE LOS DISPOSITIVOS ÓPTICOS

Monta la unidad de CD/DVD: con esta opción seleccionada, la unidad

óptica física se montará en el huésped o bién se montará un archivo imagen

de un CD/DVD en formato ISO. En el caso de que la unidad óptica sea

física, con el parámetro Habilitar Passthrough puede utilizar la grabadora

óptica del anfitrión. Para gestionar las imágenes de CD/DVD, utilice el

Manejador de Medios Virtuales.

Figura 62.

f) CONFIGURACIÓN DE LOS DISQUETES

Con esta acción activada, podrá gestionar los diquetes reales o virtuales con el

Manejador de Medios Virtuales.

Figura 63.

Page 90: VIRTUALIZACION final.doc

g) CONFIGURACIÓN DE LOS DISPOSITIVOS DE AUDIO

Esta opción permite configurar que controlador de audio del anfitrión se

comunicará con el huésped, así como el tipo de controlador de audio del

huésped.

Figura 64.

h) CONFIGURACIÓN DE LA RED

Esta opción permite configurar hasta cuatro adaptadores de red en el huésped.

Las redes en las que se encuentran las máquinas virtuales son privadas e internas

e invisibles para el anfitrión.

Adapter type: define el tipo de tarjeta de red virtual del huésped.

Attached to: configura el modo en que el adaptador de la máquina huésped

se conecta a una red.

Botón de MAC : permite generar una nueva MAC para identificar la

tarjeta de red.

Figura 65.

Page 91: VIRTUALIZACION final.doc

i) CONFIGURACIÓN DE LOS PUERTOS SERIE

Esta opción permite habilitar los puertos serie en la máquina virtual huésped.

Figura 66.

j) CONFIGURACIÓN DE LOS DISPOSITIVOS USB

Con esta acción activada, la máquina virtual puede acceder a los dispositivos

USB seleccionados mediante el Filtro de Dispositivos. Para que los dispositivos

USB funcionen más rápidamente y si la máquina real da soporte a la conexión

USB 2.0, es conveniente activar la opción Enable USB 2.0(EHCI) Controller.

Figura 67.

k) CONFIGURACIÓN DE LOS DIRECTORIOS COMPARTIDOS

Esta opción permite compartir un directorio en el anfitrión para ser accedido por

el huésped. Esta característica sólo se puede utilizar si el huésped tiene

Page 92: VIRTUALIZACION final.doc

instaladas las Aplicaciones del Huésped. Supondremos en este ejemplo que la

carpeta del anfitrión se llama documentos2010. Para acceder a la carpeta desde

un huésped Windows como la unidad W:, ejecute: net use w: \\vboxsvr\

documentos2010

Para acceder a la carpeta desde un huésped Linux y montarla en /mnt, ejecute:

mount -t vboxsf documentos2010 /mnt

Figura 68.

l) GESTIÓN DE LA MÁQUINA VIRTUAL

Una vez instalado el sistema operativo huésped, Virtualbox permite gestionar las

siguientes opciones:

Menú Máquina:

Figura 69.

Page 93: VIRTUALIZACION final.doc

- Modos de vídeo: modo de pantalla completa, modo fluído,

autodimensionar o ajustar el tamaño de la ventana.

Por defecto, la pantalla de la máquina virtual huésped se autodimensiona

cuando se cambia el tamaño de la ventana.

- Inhabilitar la Integración del Raton: con las Aplicaciones del

huésped instaladas, el ratón se comparte entre el anfitrión y el huésped.

Si no están instaladas, el usuario debe cambiar el control del ratón de

forma manual con la Tecla Anfitrión.

- Insertar combinaciones de teclas: envía combinaciones de teclas

especiales al huésped.

- Tomar instantánea: para la máquina virtual y realiza una copia de la

máquina en el estado actual para que, posteriormente, se pueda continuar

ejecutando el sistema a partir del instante en que se ha tomado.

- Diálogo de Información de Sesión: muestra información sobre el uso

del hardware de la sesión actual.

Figura 70.

Page 94: VIRTUALIZACION final.doc

Menú Dispositivos: Este menú permite gestionar los dispositivos de la

máquina virtual e instalar las Aplicaciones del huésped.

Figura 71.

4.9. DISTRIBUCIÓN DE IMÁGENES DE DISCO

Virtualbox asigna un identificador a cada imagen de disco que queda almacenado en

la propia imagen. Como resultado, no se pueden tener dos imágenes con el mismo

identificador en la lista del Manejador de Medios Virtuales.

a) CASO PRÁCTICO: GENERACIÓN DE IMÁGENES

COMPRIMIDAS

Las imágenes dinámicas de discos virtuales crecen conforme se instalan

aplicaciones en el sistema operativo huésped, pero la imagen dinámica no

decrece, ya que si se crea un fichero en la máquina virtual y después se borra, el

sistema operativo marca el espacio donde estaba el fichero como utilizable, pero

no borra la información que había.

El objetivo de la práctica consiste en comprimir tanto como sea posible un disco

virtual dinámico original.vdi de 20 Gib para poder enviarlo por la red de forma

rápida. Para ello, generaremos un disco duro virtual minimizado.vdi que

contendrá sólo los sectores utilizados del disco virtual original.vdi y, finalmente,

comprimiremos el fichero resultante con 7zip.

Llenar de zeros los sectores no utilizados

Page 95: VIRTUALIZACION final.doc

Primeramente, se debe llenar de ceros los sectores de disco no utilizado. De

esta manera, Virtualbox detectará dichos sectores no utilizados y los

eliminará.

En el caso de que el huésped sea Windows, desfragmente el disco duro y

descargue el programa sdelete de:

http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx

y descomprímalo en c:\sdelete

A continuación, ejecute:

c:\sdelete -c C:

Y apague el huésped.

En el caso de que el huésped sea Linux, el programa zerofree llena de ceros

los sectores no utilizados de las particiones en formato ext2 y ext3 del disco

duro.

Para instalar zerofree, abra la consola desde el menú principal de Gnome,

seleccionando las opciones Aplicaciones -> Accesorios -> Terminal e instale

el paquete zerofree:

$ sudo apt-get install zerofree

A continuación, para ver que particiones están montadas con el formato ext2

o ext3, ejecute:

$ mount|grep ext

El resultado del anterior comando mostrará el nombre de la partición.

/dev/sda1 on / type ext3 (rw,relatime)

En este ejemplo, la partición /dev/sda1 está en formato ext3. Si la partición

delsu sistema operativo huésped no es /dev/sda1, sustituya /dev/sda1 por su

partición. Para ejecutar el sistema operativo en modo monousuario, de

Page 96: VIRTUALIZACION final.doc

manera que no habrá otros procesos escribiendo al disco duro mientras se

llenan de ceros los sectores no utilizados, ejecute:

$ sudo init 1

Y seleccione la opción con las flechas la opción root Drop to root shell

prompt y con la tecla tabulador y Enter seleccione Ok. A continuación,

monte el sistema de ficheros en modo lectura con la orden:

$ sudo mount -n -o remount,ro -t ext3 /dev/sda1 /

Ejecute zerofree para llenar de ceros los sectores no utilizados:

$ sudo zerofree /dev/sda1

Finalmente, apague el huésped:

$ sudo init 0

Desde el Manejador de medios, libere el disco original.vdi y elimínelo con el

botón Eliminar

Figura 72.

A continuación, con el botón Keep, bórrelo de la lista de discos del

Manejador de medios, pero no lo elimine del disco duro.

Page 97: VIRTUALIZACION final.doc

Figura 73.

Para crear la nueva imagen compactada, si su huésped es Windows, ejecute

desde la consola:

set path=%path%;%VBOX_INSTALL_PATH%

cd %HOMEPATH%\.VirtualBox\HardDisks

VboxManage clonehd original.vdi minimizado.vdi

Si su huésped es Linux, ejecute:

cd ~\.VirtualBox\HardDisks

VboxManage clonehd original.vdi minimizado.vdi

Finalmente, comprima la imagen minimizado.vdi con un compresor como

7zip para reducir su tamaño y hacer más fácil su distribución.

4.10. PRUEBAS DE RENDIMIENTO DE LA MÁQUINA REAL Y LA

MÁQUINA VIRTUAL

Para comparar el rendimiento del hardware, se utilizan programas que realizan

pruebas de rendimiento llamadas, en inglés, benchmark. Las pruebas de

rendimiento se realizan, sobretodo, para comparar la relación velocidad/precio

de diferente hardware.

Hardinfo es un programa que realiza benchmarks en Linux. Una vez instalado,

desde el menú principal de Gnome, seleccione Sistema -> Preferencias ->

System Profiler and Bechmark.

Page 98: VIRTUALIZACION final.doc

El programa muestra el hardware del computador realiza diferentes tipos de

pruebas de rendimiento de la CPU:

Figura 74.

El programa permite generar un informe en HTML del hardware del computador

y de las pruebas de rendimiento mediante el icono Generate Report.