Está en la página 1de 99

INTRODUCCION

En informtica, virtualizacin es un trmino amplio que se refiere a la abstraccin de los


recursos de una computadora. Este trmino es bastante antiguo: viene siendo usado
desde antes de 1960, y ha sido aplicado a diferentes aspectos y mbitos de la
informtica, desde sistemas computacionales completos hasta capacidades o
componentes individuales. El tema en comn de todas las tecnologas de virtualizacin
es la de ocultar los detalles tcnicos a travs de la encapsulacin. La virtualizacin crea
un interfaz externo que esconde una implementacin subyacente mediante la
combinacin de recursos en locaciones fsicas diferentes, o mediante la simplificacin
del sistema de control. Un reciente desarrollo de nuevas plataformas y tecnologas de
virtualizacin han hecho que se vuelva a prestar atencin a este maduro concepto. De
modo similar al uso de trminos como "abstraccin" y "orientacin a objetos",
virtualizacin es usado en muchos contextos diferentes. Suele dividirse en dos
categoras principales:

Virtualizacin de plataforma que involucra la simulacin de mquinas virtuales.

Virtualizacin de recursos que involucra la simulacin de recursos combinados,


fragmentados o simples.

Asimismo, el trmino virtualizacin 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 automvil moderno
hace ms que solo aumentar el flujo del combustible hacia el motor; y el sistema de
vuelos por cables (fly by wire) presenta un avin virtual simplificado que tiene muy
poco que ver con la implementacin fsica.
En este trabajo tratamos de recopilar toda la informacin necesaria sobre virtualizacin,
profundizando aspectos internos del sistema, soporte de hardware y casos de uso.
Creemos que ste es un tema muy importante en la formacin profesional de los
egresados de la carrera profesional de Computacin e Informtica. Al final podremos
evaluar las distintas implementaciones de virtualizacin determinando en cada caso
posibles modificaciones o soluciones ptimas para diferentes necesidades.

En el trabajo se darn algunos ejemplos de virtualizacin en distintas plataformas,


virtualizaciones tanto desde Windows como desde Linux, usando alguna de las
plataformas de virtualizacin 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 anfitrin como para el invitado.

CAPITULO I
VIRTUALIZACION

1.1. DEFINICION GENERAL


En trminos tcnicos de computacin, la virtualizacin es un medio para crear una
versin 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 ms entornos de ejecucin. Tambin se le conoce como la habilidad de
tener varios sistemas operativos funcionando al mismo tiempo en un mismo
computador o servidor.

Figura 1.: Virtualizacin

Virtualizacin es el concepto que describe la habilidad de tener varios sistemas


operativos funcionando al mismo tiempo en un mismo computador.
Virtualizacin es una tecnologa 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 imgenes.

Figura 2: Windows vista en vista

Figura 3: Windows XP en Linux

Figura 4: Windows XP en Mac


1.2. DEFINICIN TCNICA DE VIRTUALIZACIN
Virtualizacin es el concepto que describe como en un solo computador fsico 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 estn compartiendo recursos con otros sistemas operativos.
Para lograr esto son necesarios los siguientes componentes:

Un computador fsico o CPU o unidad fsica de hardware.

De acuerdo al tipo de virtualizacin, la segunda capa es un sistema operativo


o un hipervisor que va instalado como anfitrin 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.: Virtualizacin

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


el hardware o la parte fsica del computador (CPU, Memoria, Tarjeta de red o NIC
y Disco Duro), sobre esa capa fsica va una capa de software que es el que
coordina el acceso a las partes fsicas del computador, esta capa es el hipervisor o
un sistema operativo como Windows o Linux que actan como anfitrin.
Dentro del hipervisor o el contenedor que est en un sistema operativo anfitrin
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 fsicos que tiene el
computador.
1.3. CONCEPTOS BSICOS
a) HYPERVISOR
En los aos 60, IBM llamaba al sistema operativo supervisor. Por esto, a
aquellos con capacidad de correr otros sistemas operativos sobre ellos los llam
hypervisors, terminologa que persiste en la actualidad. Al hypervisor tambin
se lo denomina sistema operativo host.
b) MAQUINAS VIRTUALES
Las mquinas 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 ejecucin de cdigo portable en distintas arquitecturas
(esto se conoce como virtualizacin a nivel de aplicacin). Un intento similar
consiste en la traduccin de instrucciones al nivel de la CPU, tal como lo
realizan los procesadores Crusoe.
c) ANFITRIN E INVITADO
Los dos conceptos ms importantes para entender qu es la virtualizacin son
los de anfitrin e invitado. Ambos conceptos se refieren a nuestro sistema
operativo, y por lo tanto deberamos hablar de sistema operativo anfitrin y
sistema invitado.

El anfitrin es el computador en el cual instalamos nuestro programa de


virtualizacin y que asignar o prestar determinados recursos de hardware
a la mquina virtual que creemos.

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


programa de virtualizacin y al cual hemos asignado determinados recursos
para funcionar.

d) VIRTUALIZADOR
Un virtualizador es, por su parte, un software que permite crear mquinas
virtuales dentro de una mquina fsica. La principal diferencia con un emulador
es que no traduce instrucciones sino que las ejecuta directamente, con lo cul no
es posible virtualizar un guest diseado 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 ejecutndose en
ella, dado que traduce cada instruccin de la mquina husped a una instruccin
vlida para la arquitectura del host. Por ejemplo, un emulador permitira
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 modificacin) 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 ms 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 ms de 40 aos, mucho antes de que se inventara Linux, IBM tena un
problema. El nuevo System/360 funcionaba de un modo totalmente distinto al del
anticuado 7070. Para facilitar la migracin de los clientes potenciales, IBM quera
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 combinacin de software y una extensin de hardware especial. La
solucin consista en la ejecucin y monitorizacin paso a paso de la aplicacin
antigua convirtiendo sus comandos en otros que el nuevo System /360 pudiera
entender. De este modo, el nuevo computador se comportara exactamente igual que
su predecesor. Este sencillo juego de manos permita 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.

Probablemente IBM ha sido quin ms ha contribuido al desarrollo de las mquinas


virtuales, as se tiene el CP-40, desarrollado para un versin modificada del IBM
360/40; el CP-67, desarrollado para el IBM 360/67, el famoso VM/370, y muchos
ms. Tpicamente las mquinas virtuales de IBM eran copias idnticas del
hardware. Un componente llamado Virtual Machine Monitor (VMM) corra
directamente en el hardware real. Luego mltiples mquinas virtuales podan
crearse va el VMM, y cada instancia de ellas poda correr su propio sistema. La
oferta actual del VM de IBM es considerada una de las plataformas ms respetadas
y robustas. Con posterioridad al desarrollo de la mquinas virtuales ha ocurrido: La
vitualizacin 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 tecnologa se
ha desplazado a los Open Systems, por ejemplo los servidores SUN E10K
1.5. TCNICAS DE VIRTUALIZACIN
Las tcnicas de virtualizacin, surgidas en el mbito de los mainframes durante los
aos 70 para la optimizacin de los, por aquel entonces, muy escasos recursos
informticos, estn experimentando un resurgimiento en la actualizad motivado
principalmente por la situacin actual del hardware, que es cada vez ms potente
(en trminos de CPU, memoria y espacio de almacenamiento) y a la vez ms
barato. No en vano, la virtualizacin est considerada una de las tecnologas
estratgicas actuales, con un mayor impacto en los prximos aos.
Las tcnicas de virtualizacin generales son:
a)

EMULACION
El mtodo de virtualizacin con el que todos estamos ms familiarizados es la
emulacin. 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 emulacin se basa en
crear mquinas virtuales que emulan el hardware de una o varias plataformas
hardware distintas. Este tipo de virtualizacin es la ms costosa y la menos
eficiente, ya que obliga a simular completamente el comportamiento de la

plataforma hardware a emular e implica tambin que cada instruccin que se


ejecute en estas plataformas sea traducida al hardware real.

Figura 6: Emulacin
Sin embargo la emulacin tiene caractersticas interesantes, como poder ejecutar
un sistema operativo diseado 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 trmino se denominan aquellas soluciones que permiten ejecutar
sistemas operativos husped (Guest), sin tener que modificarlos, sobre un
sistema anfitrin (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 husped 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 modificacin sobre
la plataforma, aunque como inconveniente frente a la emulacin, el sistema
operativo debe estar soportado en la arquitectura virtualizada.

Figura 7: Virtualizacin completa

En lo que respecta al rendimiento, ste es significativamente mayor que en la


emulacin, pero menor que en una plataforma nativa, debido a la
monitorizacin y la mediacin del hypervisor. Sin embargo, recientes
incorporaciones tcnicas en las plataformas x86 hechas por Intel y AMD,
como son Intel VT y AMD-V, han permitido que soluciones basadas en la
virtualizacin completa se acerquen prcticamente al rendimiento nativo.
Hay que tener en cuenta tambin que la virtualizacin completa no se refiere a
todo el conjunto de hardware disponible en un equipo, sino a sus componentes
principales, bsicamente el procesador y memoria. De esta forma, otros
perifricos como tarjetas grficas, de red o de sonido, no se virtualizan. Las
mquinas husped no disponen de los mismos dispositivos que el anfitrin,
sino de otros virtuales genricos. Por ejemplo, si se dispone de una tarjeta
nVidia GeForce en el anfitrin, los equipos husped no vern esta tarjeta sino
una genrica Cirrus.
Aqu podemos hablar entonces de dos estrategias para la virtualizacin
completa:
1) Virtualizacin completa con traduccin binaria: esta tcnica traduce las
instrucciones del kernel del sistema operativo virtualizado mientras que
ejecuta directamente las instrucciones de las aplicaciones de usuario. Este
tipo de virtualizacin es muy eficiente y tiene la ventaja de que puede
llevarse a cabo en cualquier hardware.
2) Virtualizacin completa asistida por hardware: en este el propio
hardware provee la tecnologa para que las mquinas virtuales puedan
ejecutar el sistema operativo en el nivel privilegiado que utilizara si
estuviera instalado fsicamente. En otras palabras, lo que antes se haca con
una traduccin binaria ahora se ejecuta directamente. Lgicamente, la
performance en los procesadores modernos es mayor con este mtodo. Su
desventaja es obvia: el hardware que se utilice debe tener incorporada la
tecnologa de virtualizacin.
c)

PARAVIRTUALIZACION
La paravirtualizacin surgi como una forma de mejorar la eficiencia de las
mquinas virtuales y acercarlo al rendimiento nativo. Para ello se basa en que

los sistemas virtualizados (husped) 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 husped y anfitrin colaboran en la tarea.
La paravirtualizacin (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 relacin directa entre cmo se escribe el kernel del
sistema operativo y cmo virtualiza la capa de virtualizacin. Realmente la
Paravirtualizacin no es virtualizacin pura, sino ms bien una colaboracin
entre la capa de virtualizacin 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 virtualizacin, 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 cdigo ni opera igual que si corriera en
hardware real.

Figura 8: Paravirtualizacin
Este sistema tiene varias ventajas, entre ellas la poca carga que le da al
procesador al no tener que tener una capa completa de virtualizacin 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 fsica es posible manejar todos los accesorios que maneja el sistema

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


puede ser usada por dos programas diferentes de esta forma enva y recibe
informacin 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 cdigo del sistema operativo y le agrega algunas
lneas, as es como ya se puede imaginar solo sistemas operativos como Linux
o BSD al cualquiera de cdigo abierto pueden ser usados. Windows no es una
opcin en este caso, pues Bill Gates jams permitira que alguien manipule su
cdigo. La buena noticia es que Intel y AMD estn 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 AMDV.
El software de paravirtualizacin mas conocido es Xen que se ofrece como
software libre, este es desarrollado por una compaa llamada XenSource. Esta
aplicacin la podemos encontrar gratis en algunas distribuciones de Linux
como Fedora, Red Hat, Suse, Debian o Ubuntu. Tambin Microsoft con su
nuevo HyperV soporta paravirtualizacin.
La figura siguiente muestra la arquitectura de la paravirtualizacin.

Figura 9: Arquitectura de la paravirtualizacin

Uno de los componentes ms destacados de esta familia es Xen. Permite


paravirtualizacin utilizando sistemas operativos modificados, y virtualizacin
completa sobre procesadores con tecnologa Intel-VT o AMD-V.
1.6. SOPORTE HARDWARE PARA LA VIRTUALIZACIN COMPLETA Y LA
PARAVIRTUALIZACIN EN PCs.
Para construir una mquina virtual tenemos que asignar determinados recursos de
hardware, que por lo general son espacio en disco duro, memoria RAM o nmero
de procesadores que el anfitrin cede al invitado. Adems lo normal es que
tengamos que indicar el tipo de sistema operativo que queremos alojar en esta
mquina virtual, especificando si es Windows o una distribucin de Linux.
Cuando tengamos nuestra mquina 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, instalacin de software adicional, etc. Por lo tanto tambin son
susceptibles de ser atacados por malware como cualquier otro computador. Por
todas estas caractersticas que hemos comentado tendramos que decir que para que
la virtualizacin funcione aceptablemente bien se necesitarn 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
mononcleo y 1 GB de memoria RAM ser complicado ceder recursos para el
invitado. Funcionar pero la experiencia sera mejor con procesadores multincleo
y ms capacidad de memoria. Respecto al disco duro, no sera tan importante
porque podemos ceder el espacio en un disco duro externo sin problemas.
Intel est produciendo una nueva tecnologa de virtualizacin que soportar
hipervisores en dos de sus arquitecturas, tanto en x86 (VT-x) como en Itanium (VTi). VT-x soporta dos nuevos modos de operacin, 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 tambin permite cierta flexibilidad al
definir las instrucciones que provocan que una VM (sistema operativo hospedado)

retorne al VMM y almacene el estado del procesador. Tambin se han aadido otras
capacidades, consulte la seccin recursos.
AMD est produciendo la tecnologa Pacifica en la que el hardware asiste a la
virtualizacin. Entre otras cosas, Pacifica mantiene un bloque de control para los
sistemas operativos hospedados que se guarda con la ejecucin de instrucciones
especiales. La instruccin VMRUN permite a una mquina virtual (y sus sistema
operativo hospedado asociado) ejecutarse hasta que el VMM recupere el control (lo
que tambin es configurable). Las opciones de configuracin permiten que el VMM
adapte los privilegios de cada uno de los huspedes. Pacifica tambin compensa la
traduccin de direcciones con unidades de gestin de memoria (MMU) para el
anfitrin y los huspedes. Estas nuevas tecnologas pueden utilizarse en varias de
las tcnicas de virtualizacin que se han discutido, como Xen, VMware, User-mode
Linux y otras.
1.7. TIPOS DE VIRTUALIZACIN
La virtualizacin tiene mltiples usos y de acuerdo a estos podemos determinar que
tipo de virtualizacin es. Los ms comunes de forma muy general son la
virtualizacin de servidores, virtualizacin de clientes y virtualizacin de
almacenamiento de datos o por que no llamarlo virtualizacin de discos duros, esta
divisin no es definitiva y otras personas podran darle otra forma de dividir los
tipos de virtualizacin pero definitivamente estos son los mas comunes. Por lo que,
vamos a clasificarlos en tres grandes grupos: Virtualizacin de plataforma,
Virtualizacin de los recursos y Otros Tipos de virtualizacin.
a) VIRTUALIZACIN DE PLATAFORMA
Abstraccin de todos los recursos de computacin de un husped dentro de un
anfitrin (host). Esta involucra la simulacin de mquinas virtuales. La
virtualizacin de plataforma es llevada a cabo en una plataforma de hardware
mediante un software host (anfitrin, un programa de control) que simula un
entorno computacional (mquina 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 autnoma.

Tpicamente muchas mquinas virtuales son simuladas en una mquina fsica


dada. Para que el sistema operativo guest funcione, la simulacin debe ser lo
suficientemente robusta como para soportar todas las interfaces externas de los
sistemas guest, las cuales pueden incluir (dependiendo del tipo de virtualizacin)
los drivers de hardware.
Dentro de la virtualizacin de plataforma podemos considerar los siguientes
subtipos:

EMULACIN O SIMULACIN.
La mquina 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 creacin de software para nuevos
procesadores antes de que estuvieran fsicamente disponibles. Por ejemplo
Bochs, PearPC, Qemu sin aceleracin, y el emulador Hercules. La emulacin
es puesta en prctica utilizando una variedad de tcnicas, desde state
machines hasta el uso de la recopilacin dinmica 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 desglosmoslo un poco.
El software de virtualizacin 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: Emulacin De Hardware

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


luego se instala el software de emulacin de hardware que una vez instalado
y configurado queda listo para instalar otro sistema operativo invitado, esto
se hace a travs del software de virtualizacin en vez de instalarse
directamente en el computador anfitrin quien configura el contenedor o lo
que conocemos como la maquina virtual. Despus de esto la instalacin del
nuevo sistema operativo invitado se hace igual que como si lo estuviramos
haciendo en un computador nuevo. Algunos de estos programas son
completamente gratis y muy fciles 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 tambin tiene un Virtual Server, Para Mac existe
el Parallels de SWsoft o el Fusion de VMware.

VIRTUALIZACIN NATIVA Y VIRTUALIZACIN COMPLETA.


La mquina virtual simula un hardware suficiente para permitir un sistema
operativo guest sin modificar (uno diseado para la misma CPU) para
correr de forma aislada. Tpicamente, muchas instancias pueden correr al
mismo tiempo. Este enfoque fue el pionero en 1966 con CP-40 y CP67/CMS, predecesores de la familia de mquinas virtuales de IBM. Algunos
ejemplos: VMware Workstation, VMware Server, Parallels Desktop, Adeos,
Mac-on-Linux, Win4BSD, Win4Lin Pro y z/VM.

VIRTUALIZACIN PARCIAL (Incluido el llamado address space


virtualization).
La mquina virtual simula mltiples 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 categora de mquina virtual, histricamente ste fue un
importante acercamiento, y fue usado en sistemas como CTSS, el
experimental IBM M44/44X, y podra decirse que en sistemas como
OS/VS1, OS/VS2 y MVS.

PARAVIRTUALIZACIN.
La mquina virtual no necesariamente simula un hardware, en cambio ofrece
un API especial que solo puede usarse mediante la modificacin del sistema
operativo guest. La llamada del sistema al hypervisor tiene el nombre de
hypercall en Xen y Parallels Workstation; est implementada va el
hardware instruction DIAG (diagnose) en el CMS de VM en el caso de
IBM (este fue el origen del trmino hypervisor). Ejemplo: VMware ESX
Server, Win4Lin 9x y z/VM.

VIRTUALIZACIN A NIVEL DEL SISTEMA OPERATIVO.


Virtualizar un servidor fsico a nivel del sistema operativo permitiendo
mltiples servidores virtuales aislados y seguros correr en un solo servidor
fsico. 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 autnomo. 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 tambin es conocida como virtualizacin en contenedores pues los
SO invitados estn contenidos en una especie de caja que le permita trabajar
de forma casi independiente, claro todo esto basado en la disponibilidad del
SO anfitrin 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, tambin reduce los costos de licencias pues con un solo
sistema operativo se pueden montar el anfitrin y todas sus maquinas
virtuales.
Algunas de las compaas mas importantes en esta franja de la virtualizacin
son por supuesto VMware con VMware server, Sun como parte del sistema
operativo Solaris, SWsoft quien ofrece la versin comercial de Virtuozzo, y
Microsoft con su nuevo HyperV.

VIRTUALIZACIN DE APLICACIONES.
Consiste en el hecho de correr una desktop o una aplicacin de server
localmente, usando los recursos locales, en una mquina virtual apropiada.
Esto contrasta con correr la aplicacin como un software local convencional
(software que fueron instalados en el sistema). Semejantes aplicaciones
virtuales corren en un pequeo 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 acta como una capa entre la aplicacin 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 metodologa de
virtualizacin es claramente diferente a las anteriores; solo una pequea lnea
divisoria los separa de entornos de mquinas virtuales como Smalltalk,
FORTH, Tel, P-code).

Figura 11: Virtualizacin de Aplicaciones


b) VIRTUALIZACIN DE RECURSOS
Permite la agrupacin de diversos dispositivos dando la idea de ser uno slo, o la
particin de un dispositivo en varios de forma virtual. Se origin a base de la
virtualizacin de plataforma, definindose como la abstraccin de los recursos
especficos de un sistema, es decir, como capacidad de espacio usado. De esta
forma, se podr simular los recursos de una computadora o mquina, de modo

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


(VNP), etc. Este tipo de virtualizacin 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 mltiples dispositivos.

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


gran disco lgico.

SAN (Storage Area Network): simula dispositivos de almacenamiento


locales a partir de dispositivos remotos.

Virtualizacin de almacenamiento: Que es la virtualizacin del


almacenamiento fsico al almacenamiento lgico.

Virtualizacin de Redes y equipamiento de redes: Se utilizan para


trabajar mltiples enlaces combinados mientras ofrecen un enlace nico
y con mayor amplitud de banda

VNP (Red Privada Virtual): Vendra a ser la extensin de una red local
a Internet

CLUSTER: combinan mltiples computadoras en una gran megacomputadora. 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 mltiples recursos de manera que cada uno sea
independiente:
-

Particin de disco duro: De esta manera podemos tener cada espacio


virtual de manera especfica para cada funcin.

Particin de ancho de banda: As, podremos dividir la conexin en


varias multiconexiones virtuales.

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

c) OTROS TIPOS DE VIRTUALIZACIN

VIRTUALIZACIN DE CLIENTES
Clientes son aquellos computadores de escritorio, porttiles o terminales que
se conectan a uno o varios servidores para hacer el trabajo que necesitan,

esta idea es muy popular en las compaas, relacionado a arquitectura cliente


servidor.
Virtualizacin de clientes es la virtualizacin que se produce en maquinas
que se conectan a los servidores para realizar su trabajo, sea en clientes. La
razn del porque se podra virtualizar clientes es muy sencilla, imagnese una
compaa 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 autorizacin. Pues si no tiene unas restricciones fuertes
montadas en el sistema la otra opcin seria ir de computador en computador
y hacer lo que tiene que hacer. Ahora imagine que en su compaa usan
virtualizacin de clientes (Citrix o algo parecido) pues lo nico que usted
tiene que hacer es ir al servidor o los servidores donde estn 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 asla 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 tecnologa es aislar los programas entre si
para que no se afecten los unos a los otros y obviamente por seguridad, pues
de esta forma ningn programa puede comprometer la seguridad del sistema
operativo o crear o copiar virus. Algunos de las compaas que proporcionan
este tipo de tecnologa son Altiris con su SVS, Thinstall o SoftGrid de
Microsoft.

PRESENTACIN DE PROGRAMAS EN TIEMPO REAL.


Es cuando un programa funciona en el cliente a travs de un contenedor que
asla completamente el programa de los recursos de su PC y que permita que
el programa corra en un servidor o sitio remoto y que bsicamente usted solo

puede interactuar con el programa a travs del teclado y el mouse. Esta


forma de virtualizacin soluciona el problema de tener un programa
actualizado con la ltima versin 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 solucin muy buena en ambientes de
oficina donde el trfico de la red es en su mayora interno y los clientes
siempre estn conectados. Algunos ejemplos de esta forma de virtualizacin
es Citrix con su Presentation Server.

VIRTUALIZACIN DE SERVIDORES.
Esta es probablemente el tipo de virtualizacin mas usado en todo el mundo,
y es por las ventajas que genera el virtualizar un servidor en ahorro de
energa, de espacio y en facilidad de administracin de menos servidores
fsicos, de esto hablaremos en Razones para virtualizar. Para esto no hay
definicin especifica que sea diferente de las antes planteadas, pues
virtualizacin de servidores es como su nombre lo indica la virtualizacin 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 VIRTUALIZACIN


Los usos ms comunes son:
a)

CONSOLIDACIN DE SERVIDORES.
Se ocupa de la tecnologa de virtualizacin para consolidar muchos servidoresen
uno o pocos servidores virtuales. De este modo el servidor fsico es
transformado en una mquina virtual anfitrin residente en una mquina virtual
del sistema principal, Eso es conocido tambin como Physical-to-Virtual o
transformacin P2V. En la prctica esto permite administrar varios servidores
fsicos como si fueran uno solo.

b)

RECUPERACIN DE FALLAS DISASTER RECOVERY.


Las mquinas virtuales pueden utilizarse como ambientes de respaldo en vivo
-hot standby- para los servidores de produccin fsicos. Esto permite cambiar la
filosofa clsica del Backup-and-Restore por medio de la capacidad de hacer
boot de los respaldos imgenes en las mquinas virtuales que estn en vivo,

posibilitando que stas tomen la carga del servidor de produccin 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 autorizacin 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 desafo tcnico.

d)

LEGACY APPLICATIONS.
La operacin de estas aplicaciones puede ser muy bien atendida por mquinas
virtuales. Es comn que muchas de estas aplicaciones legacy no puedan
funcionar en los procesadores y sistemas operativos actuales. Y, an si pueden
hacerlo terminan subutilizndolos de manera que la virtualizacin termina
siendo una muy buena alternativa.

e)

AMBIENTES PARA PRUEBAS SANDBOXES.


Las mquinas virtuales pueden usarse para generar ambientes seguros, aislados
para probar aplicaciones o sistemas nuevos cuyo comportamiento est recin
conocindose. Estos ambientes se pueden crear dinmicamente, segn sean las
necesidades del software que se necesita probar.

f)

INFRAESTRUCTURA VIRTUAL
Una infraestructura virtual consiste en el mapping dinmico de recursos fsicos
en funcin de las necesidades de la empresa. Una mquina virtual representa los
recursos fsicos de un nico computador, mientras que una infraestructura virtual
representa los recursos fsicos 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 virtualizacin de todos los


computadores x86.

Un conjunto de servicios de infraestructura de sistemas distribuida basada en


la virtualizacin, como gestin de recursos, para optimizar los recursos
disponibles entre las mquinas virtuales.

Soluciones de automatizacin que proporcionen capacidades especiales para


optimizar un proceso de TI concreto, como provisioning o recuperacin ante
desastres. Mediante la separacin de la totalidad del entorno de software de
su infraestructura de hardware subyacente, la virtualizacin hace posible la
reunin de varios servidores, estructuras de almacenamiento y redes en pools
compartidos de recursos que se pueden asignar de forma dinmica, segura y
fiable a las aplicaciones segn sea necesario. Este enfoque innovador permite
a las organizaciones crear una infraestructura informtica con altos niveles
de utilizacin, disponibilidad, automatizacin y flexibilidad utilizando
componentes bsicos de servidores econmicos y estndar del sector.

Figura 12: Vitualizacin de Infraestructura


Las soluciones de infraestructura virtual son ideales para entornos de produccin
en parte debido a que se ejecutan en servidores y escritorios estndar de la
industria y son compatibles con una amplia gama de sistemas operativos y
entornos de aplicacin, as como de infraestructuras de red y almacenamiento.

Se han diseado las soluciones para que funcionen de manera independiente del
hardware y del sistema operativo y poder brindar a los clientes amplias
posibilidades de eleccin de plataforma. Como resultado, son soluciones que
proporcionan un punto de integracin clave para los proveedores de hardware y
gestin de infraestructuras de cara a ofrecer un valor nico y aplicable por igual
en todos los entornos de aplicacin y sistemas operativos.
Las empresas que han adoptado estas soluciones de infraestructura virtual nos
han comunicado unos clarsimos resultados positivos, entre ellos:

ndices de utilizacin del 60 al 80% para servidores x86 (frente al 5 a 15%


en hardware no virtualizado)

Capacidad para el provisioning de nuevas aplicaciones en cuestin de


minutos, en lugar de das o semanas

85% de mejora en tiempo de recuperacin de paradas imprevistas

1.9. VENTAJAS DE LA VIRTUALIZACION


Desde una perspectiva de negocio, hay muchas razones para utilizar virtualizacin.
La mayora estn relacionadas con la consolidacin de servidores. Simple, si se
puede virtualizar un nmero de sistemas infrautilizados en un solo servidor, habr
ahorro de energa, espacio, capacidad de refrigeracin y administracin ya que
tendremos menos servidores. Como puede ser difcil determinar el grado de
utilizacin de un servidor, las tecnologas de virtualizacin soportan la migracin en
directo. La migracin 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 virtualizacin tambin es importante para los desarrolladores. El ncleo Linux
ocupa un solo espacio de direcciones, lo que significa que un fallo en el ncleo o en
cualquier driver provoca la cada del sistema operativo completo. La virtualizacin
supone que puedes ejecutar varios sistemas operativos, y si uno cae debido a un
fallo, el hipervisor y el resto de sistemas operativos continuarn funcionando. Esto
puede hacer que depurar el ncleo sea una tarea ms parecida a depurar
aplicaciones en el espacio del usuario.

La principal ventaja viene dada por el hecho de que en un nico equipo es posible
ejecutar numerosas mquinas virtuales, algo que antes habra requerido numerosos
equipos, produciendo:

Reduccin de espacio fsico ocupado.

Reduccin de consumo elctrico.

Reduccin 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
dems. Con las mquinas virtuales es posible pensar una mquina por servicio
(o agrupando por tipos de servicios).

Facilidad de administracin: al reducir la cantidad de equipos a administrar se


facilita el trabajo en este aspecto.

Mayor disponibilidad: con servidores fsicos cualquier cambio de hardware


requera apagar la mquina y con ella dar de baja los servicios para realizar el
mantenimiento. Con las mquinas 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 mquinas virtuales en ningn momento.

Mejora en la tolerancia a fallos: replicar una mquina virtual es mucho ms


sencillo que replicar una mquina fsica. An ms, es mucho ms econmico
tener dos mquinas virtuales exactamente idnticas encendidas todo el tiempo
que dos mquinas fsicas.

1.10. PLATAFORMAS DE VIRTUALIZACIN


Existen numerosas plataformas para virtualizar. Los ms populares de ellos son:

KVM: utiliza virtualizacin 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 virtualizacin completa eligiendo traduccin
binaria o asistida por hardware.

VMware: VMware es quiz el producto con ms experiencia y madurez en


el mercado. Tiene muchsimas versiones diferentes que soportan mltiples

tcnicas de virtualizacin. Entre ellas, la gama ESX instala directamente el


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 paravirtualizacin y virtualizacin


completa por hardware. Es un muy buen producto muy popular entre los
usuarios de Linux, sobre todo en plataformas de paravirtualizacin. Tambin
es Open Source.

1.11.

OTROS PRODUCTOS Y TECNOLOGAS

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 ms nuevo para la arquitectura


z/Architecture de 64 bits.

z/VM proporciona virtualizacin completa con asistencia de hardware y


soporta un amplio abanico de sistemas operativos, incluido Linux.

User-mode

Linux

es

otra

solucin

de

fuente

abierta

para

la

paravirtualizacin. Cada sistema operativo huesped se ejecuta como un


proceso del sistema operativo anfitrion.

coLinux, o Cooperative Linux, es una solucin de virtualizacin que permite


a dos sistemas operativos compartir de forma cooperativa el hardware
subyacente.

Linux-Vserver es una solucin de virtualizacin a nivel de sistema operativo


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

OpenVZ es una solucin de virtualizacin a nivel de sistema operativo que


soporta puntos de control y migracin de VPSs sobre la marcha.

Linux KVM es la primera tecnologia de virtualizacin que ha sido capaz de


integrarse en la lnea principal de produccin del ncleo Linux. Con solo un
mdulo del ncleo, un ncleo Linux que se ejecute sobre hardware con

soporte para la virtualizacin es capaz de actuar como hipervisor y soportar


sistemas operativos Linux y Windows sin modificar como huespedes.

Order the SEK for Linux, dos DVDs con las ltimas versiones de evaluacin
de software de IBM para Linux: DB2, Lotus, Rational, Tivoli y WebSphere.

Virtual Linux IES Puig Castellar

CAPITULO II
MAQUINAS VIRTUALES
2.1. LAS MAQUINAS VIRTUALES
En informtica una mquina 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 mquina
fsica". La acepcin del trmino actualmente incluye a mquinas virtuales que no
tienen ninguna equivalencia directa con ningn hardware real.
Una caracterstica esencial de las mquinas virtuales es que los procesos que
ejecutan estn limitados por los recursos y abstracciones proporcionados por ellas.
Estos procesos no pueden escaparse de esta "computadora virtual".
Uno de los usos domsticos ms extendidos de las mquinas 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.

Figura 13: Arquitectura tpica de una mquina virtual.


2.2. TIPOS DE MQUINAS VIRTUALES
Las mquinas virtuales se pueden clasificar en dos grandes categoras segn su
funcionalidad y su grado de equivalencia a una verdadera mquina.

Mquinas virtuales de sistema (en ingls System Virtual Machine)

Mquinas virtuales de proceso (en ingls Process Virtual Machine)

a) MQUINAS VIRTUALES DE SISTEMA


Las mquinas virtuales de alivio sistema, tambin llamadas mquinas virtuales
de hardware, permiten a la mquina fsica subyacente multiplexarse entre
varias mquinas virtuales, cada una ejecutando su propio sistema operativo. A
la capa de software que permite la virtualizacin se la llama monitor de
mquina virtual o "hypervisor". Un monitor de mquina 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 mquinas


virtuales de sistema ms populares.

APLICACIONES

DE

LAS

MQUINAS

VIRTUALES

DE

SISTEMA
-

Varios sistemas operativos distintos pueden coexistir sobre la misma


computadora, en slido aislamiento el uno del otro, por ejemplo para
probar un sistema operativo nuevo sin necesidad de instalarlo
directamente.

La mquina virtual puede proporcionar una arquitectura de


instrucciones (ISA) que sea algo distinta de la verdadera mquina. Es
decir, podemos simular hardware.

Varias mquinas 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 mquina de
manera completamente aislada y compartiendo los recursos de una
nica computadora. La consolidacin 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 virtualizacin es una excelente opcin hoy da, ya que las


mquinas actuales (Laptops, desktops, servidores) en la mayora de
los casos estn 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 mquinas en una ya
existente permite un ahorro considerable de los costos asociados
(energa, mantenimiento, espacio, etc).

b) MQUINAS VIRTUALES DE PROCESO


Una mquina virtual de proceso, a veces llamada "mquina virtual de
aplicacin", se ejecuta como un proceso normal dentro de un sistema operativo
y soporta un solo proceso. La mquina se inicia automticamente 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 ejecucin independiente de la
plataforma de hardware y del sistema operativo, que oculte los detalles de la

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


misma forma sobre cualquier plataforma.
El ejemplo ms conocido actualmente de este tipo de mquina virtual es la
mquina virtual de Java. Otra mquina virtual muy conocida es la del entorno
.Net de Microsoft que se llama "Common Language Runtime".

Figura 15: Funcionamiento de la mquina virtual de Java, una


de las mquinas virtuales de proceso ms populares.
2.3. INCONVENIENTES DE LAS MQUINAS VIRTUALES

Una de las razones del porque las mquinas virtuales, no son la panacea de la
computacin, es que agregan gran complejidad al sistema en tiempo de
ejecucin. La principal desventaja de las mquina virtual, es que en la
aplicacin 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 mquina virtual, poseen una desventaja es que


efectivamente son ms lentos que los lenguajes completamente compilados,
debido a la sobrecarga que genera tener una capa de software intermedia entre
la aplicacin y el hardware de la computadora, sin embargo, Esta desventaja
no es demasiado crtica.

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. TCNICAS PARA LA CREACIN DE MAQUINAS VIRTUALES


a)

EMULACIN DEL HARDWARE SUBYACENTE (EJECUCIN


NATIVA)
Esta tcnica se suele llamar virtualizacin 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 mquina virtual puede ejecutar cualquier sistema operativo soportado por
el hardware subyacente. As los usuarios pueden ejecutar dos o ms sistemas
operativos distintos simultneamente en computadoras "privadas" virtuales.

Figura 16: Arquitectura de Monitor de tipo I.

Figura 17: Arquitectura de Monitor de tipo II.


El sistema pionero que utiliz este concepto fue la CP-40, la primera versin
(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 mquina virtual VM.
Actualmente tanto Intel como AMD han introducido prestaciones a sus
procesadores x86 para permitir la virtualizacin de hardware.
b)

EMULACIN DE UN SISTEMA NO NATIVO


Las mquinas virtuales tambin 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 teora
no soportan. Algunas mquinas virtuales emulan hardware que slo existe
como una especificacin. Por ejemplo:

La mquina virtual P-Code que permita a los programadores de Pascal


crear aplicaciones que se ejecutasen sobre cualquier computadora con esta
mquina virtual correctamente instalada.

La mquina virtual de Java.

La mquina virtual del entorno .NET.

Open Firmware

Esta tcnica permite que cualquier computadora pueda ejecutar software


escrito para la mquina virtual. Slo la mquina virtual en s misma debe ser
portada a cada una de las plataformas de hardware.
c)

VIRTUALIZACIN A NIVEL DE SISTEMA OPERATIVO


Esta tcnica 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 acta como si realmente
existiesen varios servidores ejecutndose en varias mquinas distintas. Dos
ejemplos son las zonas de Solaris (Solaris Zones) y la tcnica de Micro
Partioning de AIX.

2.5. MQUINAS VIRTUALES DE PROCESO

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

EiffelStudiopara el lenguaje de programacin Eiffel

Lenguaje de programacin 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

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 pequeos

Warren Abstract Machine - Prolog, CSC GraphTalk

Z-machine - Z-Code

Zend Engine - PHP

2.6. MQUINAS VIRTUALES DE SISTEMA

VThere (de Sentillion, Inc.)

ATL (A MTL Virtual Machine)

Bochs emulador de PC x86 y AMD64, porttil 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 machineAn introduction

Microsoft Virtual PC y Microsoft Virtual Server

OKL4

Parallels Workstation, virtualizacin de x86 para ejecutar sistemas operativos

Parallels Desktop for Mac, virtualizacin de x86 para ejecutar mquinas


virtuales en Mac OS X

QEMU, muy popular en entornos Linux

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. MQUINAS VIRTUALES A NIVEL DE SISTEMA OPERATIVO

OpenVZ

Virtuozzo

FreeVPS

Linux-VServer

FreeBSD Jails

Solaris Containers

AIX Workload Partitions

2.8. LA MQUINA VIRTUAL DE JAVA COMO EJEMPLO DE UNA MV


La MV de Java es una mquina 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 mtodo. Los bytecodes son instrucciones para la MV, que tiene
algunos registros de variables locales y una pila para la evaluacin de expresiones.

Las primeras variables locales son inicializadas con los parmetros 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.

Figura 18: Ejecucin de un programa Java


El lenguaje Java es a la vez compilado e interpretado. Con el compilador se
convierte el cdigo fuente que reside en archivos cuya extensin es .java, a un
conjunto de instrucciones que recibe el nombre de bytecodes que se guardan en un
archivo cuya extensin es .class. Estas instrucciones son independientes del tipo
de computador. El intrprete ejecuta cada una de estas instrucciones en un
computador especfico (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 intrprete Java es una implementacin de la Mquina 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 implementacin de la JVM. Por ejemplo, el mismo programa Java puede
correr en Windows 98, Solaris, Macintosh, etc.
Java es, por tanto, algo ms que un lenguaje, ya que la palabra Java se refiere a
dos cosas inseparables: el lenguaje que nos sirve para crear programas y la

Mquina Virtual Java que sirve para ejecutarlos. Como vemos en la figura, el API
de Java y la Mquina Virtual Java forman una capa intermedia (Java platform) que
asla el programa Java de las especificidades del hardware (hardware-based
platform).

Figura 19: Arquitectura de la VM de Java


a)

PROPIEDADES DEL LENGUAJE JAVA


Se dice que el cdigo 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 modificacin.

Java es un lenguaje

dinmico, debido a que las clases son cargadas en el momento en que son
necesitadas (dinmicamente), ya sea del sistema de archivos local o desde
algn sitio de la red mediante algn protocolo URL. Java tiene la capacidad
de aumentar su sistema de tipos de datos dinmicamente o en tiempo de
ejecucin. Este "enlace tardo" (late-binding) significa que los programas slo
crecen al tamao 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 estticos de "enlace temprano" o en
tiempo de compilacin (early-binding) como C o C++.
Debido a que Java naci en la era post-Internet, fue diseado 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 daos en los sistemas,
sobre los que ejecuta la implantacin de la Mquina Virtual Java. El lenguaje
Java no est diseado solamente para crear applets que corren en la ventana

del navegador. Java es un lenguaje de propsito general, de alto nivel, y


orientado a objetos.
Los tipos de programas ms comunes que se pueden hacer con Java son los
applets (se ejecutan en el navegador de la mquina cliente) y las aplicaciones
(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 ncleo 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)

Internacionalizacin

Seguridad

Componentes (JavaBeans)

Persistencia (Object serialization)

Conexin a bases de datos (JDBC)

Java proporciona tambin extensiones, por ejemplo define un API para 3D,
para los servidores, telefona, reconocimiento de voz, etc.
b)

LA MQUINA VIRTUAL JAVA


La Mquina Virtual Java (JVM) es el entorno en el que se ejecutan los
programas Java, su misin 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 intrprete
Java especfico ejecuta las instrucciones que se guardan en los archivos cuya
extensin 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 husped para ciertas funciones, como los accesos a los
dispositivos

Vigilar el cumplimiento de las normas de seguridad de las aplicaciones


Java

Esta ltima tarea, es una de las ms importantes que realiza la JVM. Adems,
las propias especificaciones del lenguaje Java contribuyen extraordinariamente
a este objetivo:

Las referencias a arrays son verificadas en el momento de la ejecucin del


programa.

No hay manera de manipular de forma directa los punteros.

La JVM gestiona automticamente 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 pgina web con un applet,
pone en marcha la JVM y proporciona la informacin 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 cdigo
vlido y no malicioso. Finalmente, se ejecuta el applet.

Figura 20: La Mquina Virtual Implementada para una


variedad de plataformas.
c)

ARQUITECTURA DE LA PLATAFORMA JAVA (SISTEMA EN


TIEMPO DE EJECUCIN)
Sun utiliza el trmino "Mquina Virtual Java", para referirse a la
especificacin abstracta de una mquina de software para ejecutar programas
Java. La especificacin de esta mquina virtual, define elementos como el
formato de los archivos de clases de Java (.class), as como la semntica de
cada una de las instrucciones que componen el conjunto de instrucciones de la
mquina virtual.
A las implantaciones de esta especificacin se les conocen como "Sistemas en
Tiempo de Ejecucin Java". En la figura 2 se puede observar los componentes
tpicos de un sistema de tiempo de ejecucin.
Ejemplos de Sistemas de tiempo de ejecucin son el Navegador de Nestcape,
el Explorador de Microsoft y el programa Java (incluido en el JDK). Un
sistema de tiempo de ejecucin incluye tpicamente:

Motor de ejecucin. El procesador virtual que se encarga de ejecutar el


cdigo (bytecode), generado por algn compilador de Java o por algn
ensamblador del procesador virtual Java.

Manejador de memoria. Encargado de obtener memoria para las nuevas


instancias de objetos, arreglos, etctera, y realizar tareas de recoleccin de
basura.

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


atrapar excepciones.

Soporte de mtodos nativos. Encargado de llamar mtodos de C++ o


funciones de C, desde mtodos Java y viceversa.

Interfaz multihilos. Encargada de proporcionar el soporte para hilos y


monitores.

Cargador de clases. Su funcin es cargar dinmicamente 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.

Figura 21: Arquitectura del Sistema de Tiempo de Ejecucin Java.


Adicionalmente, existe un conjunto de clases Java estndar, fuertemente
ligadas a la implantacin 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 actan 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

que

independientemente del hardware o sistema operativo sobre el que se est


trabajando, la mquina virtual Java oculta todas estas diferencias.
A continuacin describiremos con mayor detalle cada uno de estos elementos.

MOTOR DE EJECUCIN

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


contenidas en los cdigos de operacin (bytecodes) que implementan los
mtodos Java. En las versiones iniciales de Sun, el motor de ejecucin
consista de un interprete de cdigos de operacin. En las versiones ms
avanzadas de nuestros das, se utiliza la tecnologa de "generacin de
cdigo justo en el momento" (Just-in-Time code generation), en dnde las
instrucciones que implementan a los mtodos, se convierten en cdigo
nativo que se ejecuta directamente en la mquina sobre la que se subyace.
El cdigo nativo se genera nicamente la primera vez que se ejecuta el
cdigo de operacin 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 tpicos como
los aritmticos, los de control de flujo, de acceso a memoria, a la pila,
etctera. Una de las caractersticas ms significativas del conjunto de
instrucciones del procesador virtual Java, es que estn basadas en la pila y
utilizan "posiciones de memoria" numeradas, en lugar de registros. Esto es
hasta cierto punto lgico, debido a que la mquina virtual est pensada
para correr sobre sistemas con procesadores sustancialmente diferentes. Es
difcil hacer suposiciones sobre el nmero o tipo de registros que estos
pudiesen tener. Esta caracterstica 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 cdigo optimizado para la
plataforma particular sobre la que se est trabajando, haciendo uso de los
registros, etctera.
Varias de las instrucciones que componen el conjunto de instrucciones del
procesador virtual de Java, son bastante ms complejas que las que se
pueden encontrar en procesadores comunes. Ejemplo de ello, tenemos las

casi 20 instrucciones para realizar operaciones, tales como invocar


mtodos 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 proyeccin a sus respectivas
instrucciones, sobre el conjunto de instrucciones del procesador de la
mquina, implicar a varias decenas de esas instrucciones.

EL VERIFICADOR DE JAVA
Como hemos mencionado anteriormente, una de las principales razones
para utilizar una mquina virtual, es agregar elementos de seguridad a
nuestro sistema, por lo que si un intrprete falla o se comporta de manera
aleatoria, debido a cdigo mal formado, es un problema muy serio. La
solucin trivial a este problema sera incluir cdigo encargado de capturar
errores y verificar que el cdigo sea correcto. Es evidente que la principal
desventaja de esta solucin, es que volveremos a caer en un sistema
sumamente seguro, pero altamente ineficiente. Los diseadores de Java
tomaron otro camino. Cuando estaban diseando el conjunto de
instrucciones para la mquina virtual de Java, tenan 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 fcilmente
verificable.
En Java, justo despus de que se obtiene una clase del sistema de archivos
o de Internet, la mquina 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 nmero
mgico (0xCAFEBABE) y que todos los registros que contiene el archivo
tengan la longitud correcta, pero an ms importante, comprueba que todos
los cdigos de operacin 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 ejecucin y slo sobre
clases que el mismo sistema decida. Por lo comn, las clases verificadas
son las provenientes de Internet.

An en nuestros das, los cargadores de clases comerciales tienen varios


defectos, por lo que la construccin de mejores verificadores sigue siendo
un problema abierto. Por ejemplo, Karsten Sohr, en septiembre de 1999
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 "administracin
automtica del almacenamiento" (automatic storage management), en el
que el sistema en tiempo de ejecucin de Java mantiene un seguimiento de
los objetos. En el momento que no estn siendo referenciados por alguien,
automticamente se libera la memoria asociada con ellos. Existen muchas
maneras de implementar recolectores de basura, entre ellas tenemos:
- Contabilizar referencias. La mquina virtual Java asocia un contador a
cada instancia de un objeto, donde se refleja el nmero de referencias
hacia l. Cuando este contador es 0, la memoria asociada al objeto es
susceptible de ser liberada. An cuando este algoritmo es muy sencillo
y de bajo costo (en trminos computacionales), presenta problemas con
estructuras de datos circulares.
- Marcar e intercambiar (Mark-and-Sweep). Este es el esquema ms
comn para implementar el manejo de almacenamiento automtico.
Consiste en almacenar los objetos en un montculo (heap) de un
tamao considerable y marcar peridicamente (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
montn alterno, donde los objetos que no han sido marcados, son
movidos peridicamente. Una vez en el montculo 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 montculo, que
contiene nicamente objetos que estn siendo utilizados.

ADMINISTRADOR DE ERRORES Y EXCEPCIONES


Las excepciones son la manera como Java indica que ha ocurrido algo
"extrao" durante la ejecucin de un programa Java. Comnmente las
excepciones son generadas y lanzadas por el sistema, cuando uno de estos
eventos ocurre. De la misma manera, los mtodos tienen la capacidad de
lanzar excepciones, utilizando la instruccin 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

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 excepcin, el sistema de tiempo de ejecucin de
Java, y en particular el manejador (handler) de errores y excepciones,
busca un manejador para esa excepcin, comenzando por el mtodo que la
origin y despus hacia abajo en la pila de llamadas. Cuando se encuentra
un manejador, ste atrapa la excepcin y se ejecuta el cdigo asociado con
dicho manejador. Lo que ocurre despus depende del cdigo del
manejador, pero en general, puede suceder que:

Se utilice un goto para continuar con la ejecucin del mtodo original

Su utilice un return para salir del mtodo

Se utilice athrow para lanzar otra excepcin

En el caso que no se encuentre un manejador para alguna excepcin


previamente lanzada, se ejecuta el manejador del sistema, cuya accin
tpica es imprimir un mensaje de error y terminar la ejecucin del
programa.

SOPORTE PARA MTODOS NATIVOS

Las clases en Java pueden contener mtodos que no estn implementados


por cdigos de operacin (bytecode) Java, sino por algn otro lenguaje
compilado en cdigo nativo y almacenado en bibliotecas de enlace
dinmico, como las DLL de Windows o las bibliotecas compartidas SO de
Solaris.
El sistema de tiempo de ejecucin incluye el cdigo necesario para cargar
dinmicamente y ejecutar el cdigo nativo que implementa estos mtodos.
Una vez que se enlaza el mdulo que contiene el cdigo que implementa
dicho mtodo, el procesador virtual atrapa las llamadas a ste y se encarga
de invocarlo. Este proceso incluye la modificacin de los argumentos de la
llamada, para adecuarlos al formato que requiere el cdigo nativo, as
como transferirle el control de la ejecucin. Cuando el cdigo nativo
termina, el mdulo de soporte para mtodos nativos se encarga de
recuperar lo resultados y de adecuarlos al formato de la mquina virtual
Java. De manera anloga, el mdulo de soporte para cdigo nativo se
encarga de canalizar una llamada a un mtodo escrito en Java, hecha desde
un procedimiento o mtodo nativo.

INTERFAZ DE HILOS
Java es un lenguaje que permite la ejecucin concurrente de varios hilos de
ejecucin, es decir, el sistema de tiempo de ejecucin de Java tiene la
posibilidad de crear ms 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 mquina virtual Java, slo
existen dos directamente relacionadas con los hilos, monitorenter y
monitorexit, que sirven para definir secciones de cdigo, que deben
ejecutarse en exclusin mutua. El resto del soporte de los hilos se realiza
atrapando

llamadas

los

java.lang.Thread.

CARGADOR DE CLASES

mtodos

pertenecientes

la

clase

Los programas Java estn completamente estructurados en clases. Por lo


tanto, una funcin muy importante del sistema en tiempo de ejecucin, es
cargar, enlazar e inicializar clases dinmicamente, de forma que sea
posible instalar componentes de software en tiempo de ejecucin. El
proceso de cargado de las clases se realiza sobre demanda, hasta el ltimo
momento posible.
La Mquina Virtual Java utiliza dos mecanismos para cargar las clases. El
primero consiste en un cargador de clases del sistema, cuya funcin es
cargar todas las clases estndar de Java, as como la clase cuyo nombre es
estrada va la lnea 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
localizacin remota de donde se cargarn 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 aplicacin.
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 ejecucin
Java tiene la capacidad de definir sus propias polticas de seguridad, mediante
la implantacin de un "administrador de seguridad" (security manager), cuya
funcin es proteger al sistema de tiempo de ejecucin, definiendo el mbito de
cada programa Java en cuanto a las capacidades de acceder a ciertos recursos,
etctera.

Figura 22: Modelo de seguridad del JDK 1.0.


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 ejecucin muy restrictivo para cdigo 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 cdigo 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 comunicacin. Mientras, el
cdigo 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 mquina implementa otros mecanismos de
seguridad, desde el nivel de lenguaje de programacin, como la verificacin
estricta de tipos de datos, manejo automtico de la memoria, recoleccin
automtica de basura, verificacin de los lmites de las cadenas y arreglos,
etctera. Todo con el fin de obtener, de una manera relativamente fcil, cdigo
"seguro". En segunda instancia, los compiladores y los verificadores de cdigo
intentan asegurar que slo se ejecuten cdigos de ejecucin (bytecodes) Java,
con la estructura correcta y no maliciosos. Asimismo, analizamos cmo 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 ejecucin y el
administrador de seguridad (Security Manager), que es implementado por la
clase java.lang.SecurityManager, que permite a las implantaciones incorporar
polticas de seguridad. De esta manera, es posible para las aplicaciones
determinar si una operacin es insegura o contraviene las polticas de
seguridad, antes de ejecutarla.

Figura 23: Modelo de seguridad del JDK 1.1.


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 cdigo obtenido
del sistema de archivos. Los applets firmados, junto con la firma, se envan en
un archivo de formato JAR (Java Archive). En este modelo de applets sin
firma, continan 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
restriccin, se elimin la idea de que el cdigo proveniente del sistema de
archivo local siempre es confiable, etctera.

Figura 24: Modelo de seguridad de Java 2.

CAPITULO III
VIRTUALIZACION DE ESCRITORIOS
3.1. INTRODUCCIN
La virtualizacin de escritorio es un trmino relativamente nuevo, introducido en
la dcada de los 90, que describe el proceso de separacin entre el escritorio, que
engloba los datos y programas que utilizan los usuarios para trabajar, de la
mquina fsica. 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 porttil 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 porttil, PC, smartphone o cliente ligero.
La experiencia que tendr el usuario est orientada para que sea idntica a la de un
PC estndar, pero desde un dispositivo de cliente ligero o similar, y desde la
misma oficina o remotamente.
Muchas soluciones comerciales tambin agregan la capacidad de conmutar
algunas sesiones de cliente entrantes (usando un software de rompimiento de
conexin) en direccin a sistemas de escritorio compartido tradicionales como el

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


blade, o incluso computadores de escritorio fsicos e individuales no usados.
3.2. DEFINICION DE VIRTUALIZACION DE ESCRITORIO
La virtualizacin 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
fsicamente. 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 conexin de red entre el equipo del usuario y ese servidor.
El escritorio virtualizado estar almacenado tambin 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 aproximacin 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 gestin 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
sincronizacin 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 genricamente como VDI (Virtual desktop infrastructure), aunque el
nombre es un poco engaoso. Cuando se habla de VDI enseguida pensamos en
virtualizacin de servidores, hipervisores, etc. En realidad en su opcin ms
simple es posible virtualizar escritorios sin software de virtualizacin, como
vamos a ver.

3.3. DEFINICIN TCNICA DE VIRTUALIZACIN DE ESCRITORIO


La virtualizacin de escritorio consiste en ejecutar nuestro inicio de sesin no en
nuestro computador como venimos haciendo habitualmente sino que se ejecuta en
el servidor y se muestra en el terminal del usuario.
La virtualizacin de escritorio es encapsular y entregar bien el acceso a la
totalidad de un entorno de un sistema de informacin 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. Tambin puede tener como base un sistema operativo totalmente
diferente.
La virtualizacin de escritorio es el uso de mquinas virtuales para permitir que
los mltiples 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
geogrficamente dispersos y estar conectados al equipo central mediante una red
de rea local (LAN), una red de rea extensa (WAN) o mediante Internet.
La virtualizacin de escritorio ofrece ventajas con respecto al modelo tradicional,
en el que cada computador funciona como una unidad completa y autnoma con
su propio sistema operativo, perifricos y aplicaciones. En general los gastos se
reducen porque los recursos pueden ser compartidos y se asignan a los usuarios en
funcin de sus necesidades. La integridad de la informacin 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 reduccin del
nmero total de los programas almacenados en los equipos.
A pesar de la distribucin de los recursos, todos los usuarios pueden personalizar y
modificar sus equipos de escritorio para satisfacer sus necesidades especficas. De
esta manera, la virtualizacin de escritorio ofrece una mayor flexibilidad en
comparacin con la paradigma cliente / servidor.

Las limitaciones que tiene la virtualizacin de escritorios son los riesgos de


seguridad que se generan si la red no est bien gestionada, conlleva una prdida de
autonoma y privacidad del usuario, los desafos en la creacin y el mantenimiento
de los controladores para las impresoras y otros perifricos, dificultad en la gestin
de complejas aplicaciones como las multimedia y problemas de mantenimiento de
direcciones de los usuarios de mquinas virtuales en correspondencia con los del
centro de datos.
3.4. EL ESCRITORIO COMO UN SERVICIO
El escritorio como un servicio es la disposicin de la virtualizacin de escritorio
como un servicio; "transformando los escritorios en servidor de nube" (cloud
service). Hay varias "soluciones diferentes" basadas en la "ejecucin local (o
distribuida) y otras basadas en la ejecucin 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 especficamente para
realizar esa tarea. Las rdenes del usuario se transmiten al servidor a travs de la
red, y el servidor enva de vuelta los resultados de las acciones. Segn 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
trfico de la red.

Figura 25: Virtualizacin de Escritorio

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 diseado para esta tarea, al cual
conectar un monitor, un teclado, y un ratn, y con los cules usar la terminal
como si se tratase de un computador completo. Esta terminal slo funcionar
cuando tenga conexin con un servidor adecuado.
3.5. FUNDAMENTOS
Es complejo instalar y mantener equipos de trabajo separados, adems los usuarios
han disfrutado de una capacidad casi ilimitada tanto para instalar como para borrar
software. Debido a esto, los departamentos corporativos de tecnologa de
informacin 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 virtualizacin 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 ms flexibilidad, por ejemplo, cada uno puede
tener permitido instalar y configurar sus propias aplicaciones. Los usuarios
tambin 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 arquitectnico emergente donde los sistemas operativos del cliente se
ejecutan en mquinas virtuales (VM) basadas en servidor en el centro de datos e
interactan 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 sesin 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

requieren considerablemente muchos ms recursos de hardware de servidor que en


los enfoques de escritorio remoto de terminal.
VDI es ms 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 compaa, como as tambin para
clientes empresariales con una estrategia centralizada de escritorios para los
trabajadores de oficina.

Figura 26: Infraestructura de Virtualizacin de escritorios


3.7. ARQUITECTURA TCNICA
Hemos visto que la virtualizacin 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 fsico
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

escritorios tambin ejecutan aplicaciones (por ejemplo, las ofimticas), aunque


esto no siempre es as.
Los dispositivos de acceso pueden tener tambin una tecnologa 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 comunicacin entre los dispositivos de acceso
y los servidores de escritorio. Vamos a utilizar protocolos especiales en funcin,
bsicamente, 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 tambin tenemos otras opciones, que
elegiremos en funcin de las prestaciones y entornos en los que queramos
funcionar, como ICA, NX o VNC por ejemplo.
El modelo de virtualizacin de escritorios nos permite que los escritorios se
ejecuten en servidores virtualizados, pero eso no es imprescindible. De hecho en
los sistemas ms simples los escritorios se pueden ejecutar en los tradicionales
servidores de terminales, ya sean Windows, Citrix o Linux. Esa tecnologas 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 ms comunes tambin las soluciones de hosting
para esos sistemas.
De hecho vamos a encontrar tres tecnologas bsicas 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 mquinas virtuales, ya
sea de modo personalizado (un escritorio para cada usuario) o en modo pool
(varios usuarios comparten un modelo de escritorio genrico). Esta ltima
tecnologa de escritorios virtuales y virtualizados a la vez es la ms sofisticada y la

que proporciona mayores beneficios, pero en muchos casos las otras tecnologas
tambin son perfectamente aplicables y econmicamente preferibles.
Otro componente que podemos necesitar en una plataforma VDI es el broker.
Un broker, en su versin ms 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 funcin de los parmetros que se hayan configurado para ese usuario,
conectarlo con el servidor de escritorio que le corresponda.

En las plataformas ms sofisticadas, sin embargo, el broker puede realizar ms


funciones. As, por ejemplo, puede encargarse tambin (u ordenar a algn otro
software) que arranque una mquina virtual para el escritorio del usuario o
encargarse de validar el usuario en un entorno de Single Sign On.
3.8. EL DISEO DE LA INFRAESTRUCTURA
Como vemos una solucin de escritorios virtuales puede requerir una arquitectura
compleja, por lo que antes de lanzarse a su puesta en marcha es necesario realizar
un diseo, precedido de una fase en la que establezcamos claramente las
especificaciones y prestaciones que vamos a exigir de la plataforma.

Figura 27: Solucin de virtualizacin de escritorios

En muchos casos la aproximacin a una solucin 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 slo se
habla de la arquitectura, componentes software o requisitos funcionales. La
posterior puesta en marcha de estas soluciones pobremente diseadas frustran al
equipo de IT responsable de su funcionamiento, ya que no se recogen todos los
beneficios que la arquitectura podra proporcionar. No se trata de virtualizar
escritorios porque s, se trata de virtualizar porque deseamos obtener mejores
prestaciones y reducir los costes de administracin.
Para ello es necesario disear cada capa de la arquitectura para que cumpla su
funcin 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 diseo 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 solucin 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 solucin de Terminal


Server, blades o mquinas virtuales? Qu tecnologa de escritorio utilizamos,
Windows, Linux o mixta en funcin 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 travs de redes mviles?

Si utilizamos mquinas virtuales, qu tecnologa implantamos, VMWare, Xen,


VirtualBox, ...? Vamos a necesitar un sistema de gestin especfico para los
virtualizadores?

Respecto a aspectos de gestin y administracin, Cmo vamos a gestionar los


escritorios? vamos a implantar pools, escritorios personales o ambos?
Necesitaremos un broker? Qu queremos que haga el broker? necesitamos

algn sistema de gestin como View de VMWare, Xendesktop, o algn otro


ms econmico?
Una vez tengamos claro el diseo de la arquitectura software podremos plantearnos
el dimensionamiento del resto de componentes: el nmero y tamao de los
servidores en funcin del nmero de usuarios, prestaciones y redundancia; la
verificacin de la capacidad de las redes internas y externas; los sistemas de
almacenamiento y backup; y los otros componentes que puedan ser necesarios en
funcin de las especificaciones del proyecto y diseo de la arquitectura software.
Es importante sealar que el dispositivo de acceso slo necesita una potencia
mnima, con capacidad para manejar tan slo el software de conexin. 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 adems silenciosos y ms fiables. Para el usuario este dispositivo se
comporta como un terminal transparente y, si se ha configurado para ello, puede ni
tan slo ser consciente de que las aplicaciones se estn 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 podra
funcionar perfectamente como Thin Client.
3.9. BENEFICIOS
Al igual que cualquier otra tecnologa, la virtualizacin de escritorios proporciona
una serie de beneficios clave que hace que esta tecnologa sea la elegida por un
gran nmero 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 informticos. Resulta complicado otorgar los
mnimos 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 virtualizacin del escritorio
posibilita centralizar los escritorios en servidores centrales y gestionar dichos
escritorios individualmente de manera remota. Esto provee a los usuarios una

experiencia de escritorio completa y permite al personal de IT gestionar los


escritorios virtualmente en lugar de fsicamente. 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 virtualizacin de escritorio implica que usted no tiene que tener equipos de
ltima tecnologa, por que todas las aplicaciones del escritorio son ejecutadas
centralmente en un servidor remoto. Esto significa que los equipos que los
usuarios estn utilizando para conectarse al servidor tienen un periodo de vida
mayor. Estos costes pueden reducirse an ms 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 mayora 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 Investigacin. La encuesta
sugiere que ante la posibilidad de un fallo en el transporte pblico o desastre
en el lugar de trabajo, muchas empresas no estaran en condiciones reabrir el
negocio, mientras que los usuarios de la virtualizacin de escritorios seran
capaces de ofrecer a sus usuarios una clave personal para acceder a sus
escritorios desde cualquier ubicacin.

d)

ALTERNATIVA ECOLGICA
Los escritorios virtuales almacenados en el servidor central son una alternativa
ecolgica a los PC tradicionales. Un estudio realizado en 2008 por The
Climate Group indica que los PC consumen alrededor de tres veces ms
energa que el centro de datos. Uno de los mayores beneficios de la
virtualizacin de servidores es el ahorro de energa que se produce cuando
varios servidores a baja utilizacin ejecutando aplicaciones se combinan en
una nica pieza fsica de hardware.

e)

MEJORAR LA SEGURIDAD DE LOS DATOS


La virtualizacin de escritorio hace que todos los datos de los usuarios de los
escritorios, y por lo tanto de las organizaciones, se almacenen centralmente en

los servidores, absolutamente nada se almacena a nivel local. Por lo que si el


empleado pierde o le roban el porttil, no se pierden los datos y tampoco
dichos datos pasan a manos peligrosas.
3.10.

VENTAJAS
El modelo de virtualizacin 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 gestin
(antivirus, parches, instalacin de aplicaciones, reparaciones, etc). El precio de
adquisicin del hardware tambin se puede reducir, ya que aunque un equipo que
pueda utilizarse como servidor de escritorios tiene un coste ms 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 fcil realizar backup de toda la informacin en el
centro de datos.
Las principales ventajas son las siguientes:

Implementacin instantnea de nuevos escritorios.

Prcticamente cero tiempo de inactividad en caso de fallos de hardware.

Reduccin significativa del coste de los nuevos despliegues.

Slida capacidad de gestin de la imagen del escritorio.

El ciclo de actualizacin de los PC pasa a ampliarse a 5-6 aos o ms.

Escritorios existentes incluyen mltiples 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.

Mltiples escritorios bajo demanda.

Libre provisin de equipos de sobremesa (controlada por las polticas de cada


corporacin).

3.11. DESVENTAJAS

La arquitectura, sin embargo, tambin tiene algunas limitaciones, que pueden no


hacerla adecuada para algunos usuarios concretos. Por ejemplo:

Los usuarios pierden autonoma sobre sus equipos, por lo que pueden
presentarse ciertas reticencias si estn acostumbrados a instalar aplicaciones y
almacenar datos privados (No puedo pasar las fotos a mi computador)

Peor soporte para impresoras y perifricos que estn conectados al computador.


La arquitectura prcticamente 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 resolucin


pueden no tener un buen rendimiento. Si es necesario ejecutar aplicaciones
multimedia con video en alta resolucin puede ser necesario que los
dispositivos de acceso decodifiquen el video localmente, lo que aade 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 algn nivel de redundancia para
ambos subsistemas si queremos garantizar el uptime.

Cierta necesidad de formacin en los tcnicos que deban desplegar y administrar


la infraestructura. La administracin de una infraestructura para escritorios
virtuales requiere ciertos conocimientos especficos y en algunos casos algunos
cambios en los modos de trabajo y procedimientos operativos.

3.12.

LA INDUSTRIA DE LA VIRTUALIZACIN DE ESCRITORIO.


Segn Gartner Inc. el mercado del escritorio virtual alojado en servidores (HVD)
aumentar hasta conseguir los 49 millones de unidades en el 2013, frente a ms de
500.000 unidades en 2009. Los ingresos mundiales del sector pasarn 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 tambin indican que
mientras que en las empresas el gasto en hardware disminuir, stos requerirn
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 desplazaran el PC tradicional hacia HVDs en 2014, lo que equivale a
cerca de 66 millones de dispositivos conectados. Los EE.UU. alcanzara el doble

de la media de todo el mundo con ms de 18 millones de dispositivos conectados.


Tras un primer comienzo lento, el mercado del HVDs se acelerar en 2010 y 2011.
A pesar de las nuevas mejoras en el rendimiento y la capacidad de gestin que se
espera de HVDs en 2009, la actual recesin econmica que inhiba la adopcin 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.

CAPITULO IV
VIRTUALBOX
4.1.

VirtualBox
VirtualBox es un programa que permite crear mquinas 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

husped

con

soporte

http://www.VirtualBox.org/wiki/Guest_OSes

se
e

puede

incluye,

entre

consultar
otros,

en:
Linux,

Windows, Solaris, FreeBSD, Open BSD y MS-DOS. La virtualizacin de los


sistemas operativos es transparente, es decir, no hace falta modificar el sistema
operativo husped para virtualizarlo.
4.2.

LICENCIAS DE VIRTUALBOX
Actualmente existen dos versiones del programa VirtualBox: VirtualBox versin
propietaria y VirtualBox Open Source Edition, llamada VirtualBox OSE.
La versin propietaria se distribuye como un programa binario ejecutable con una
licencia comercial que es gratuita para uso personal, educativo o de evaluacin

segn

se

recoge

en

la

documentacin

de

licencia

en

http://www.virtualbox.org/wiki/Licensing_FAQ.
La versin privada se puede descargar desde http://www.VirtualBox.org/. La versin
Open Source de VirtualBox se distribuye conforme a la licencia GPL. Esta versin
libre es equivalente a la versin privada, pero algunas funciones de la versin
privada no estn presentes en la versin OSE. Por ejemplo, la versin libre no
implementa el controlador USB ni el SATA. La versin libre viene incluida en
Ubuntu Linux. Los binarios para Windows se pueden descargar desde
http://vboxwin32.sourceforge.net/, pero no se actualizan tan rpidamente como la
versin propietaria.
4.3.

TCNICAS DE VIRTUALIZACIN
VirtualBox permite que las instrucciones de la mquina virtual se ejecuten en el
procesador de la mquina real, excepto aquellas que puedan interferir en el
funcionamiento de la mquina real. Por ejemplo, cuando la mquina virtual ejecuta
instrucciones que escriben informacin 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 virtualizacin, VirtualBox utiliza dos tipos de tcnicas:
tcnicas por software y tcnicas por hardware:
a) Virtualizacin por software
Las tcnicas de virtualizacin por software posibilitan la virtualizacin en todo
tipo de PC, antiguos y nuevos, pero las mquinas virtuales son lentas y necesita
de ms tiempo de microprocesador.
b) Virtualizacin por hardware
Las tcnicas de virtualizacin por hardware aceleran la ejecucin del husped,
pero slo funcionan con microprocesadores modernos. En el caso de
microprocesadores Intel, la virtualizacin por hardware se denomina VT-x y en
el caso de AMD, se denomina AMD-V. En la mayora de computadores, la
virtualizacin por hardware se debe habilitar en la BIOS.

En algunos casos ser necesario consultar el manual del microprocesador de la


PC para ms informacin. La paginacin anidada (nested paging) es una tcnica
de virtualizacin por hardware que puede mejorar la gestin 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 ms de una CPU en la maquina virtual, la aceleracin por hardware
deber estar activada.
VirtualBox puede ejecutar como husped, adems de Windows y Linux, otros
sistemas operativos como Open-Solaris, OpenBSD, OS/2, Syllable, ReactOS,
SkyOS y Haiku.
4.4.

CONFIGURACIN DE LA RED EN LA MQUINA HUSPED DE


VIRTUALBOX
En las mquinas husped 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 mquina husped y elije el sistema operativo que
contendr, VirtualBox le asigna automticamente 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 husped, pero est


configurada como si no tuviera ningn cable conectado.

NAT: NAT (siglas de Network Address Translation) es el modo por defecto de la


tarjeta de red virtual. Este modo permite al husped navegar por Internet,
descargar ficheros y leer el correo electrnico sin necesidad de configurar el
sistema operativo husped. En este modo, la mquina 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 direccin 10.0.2.2,
como servidor DNS la direccin 10.0.2.3 y la primera direccin DHCP asignada
es la 10.0.2.15. La arrancada por el mtodo PXE es compatiblecon el modo
NAT.

Como desventaja, en este modo, los comandos que envan paquetes ICMP como
ping o traceroute pueden no funcionar correctamente y, en principio, la mquina
virtual no es accesible desde Internet.

Adaptador puente (Bridge): en este modo, se crea una tarjeta de red virtual en
el anfitrin que intercepta el trfico de red y puede inyectar paquetes en la red,
de manera que el husped se configura como si estuviera conectado por un cable
a la tarjeta de red virtual del anfitrin.

Red Interna: en este modo, se crea una red virtual visible entre las mquinas
virtuales, pero invisible al anfitrin o a mquinas externas a la red.

Adaptador Slo-Anfitrin: en este modo se crea una tarjeta de red virtual en el


anfitrin que puede conectarse con las mquinas virtuales sin necesitar que el
anfitrin tenga una tarjeta de red.

4.5.

INSTALACIN DE VIRTUALBOX
a) INSTALACIN DE VIRTUALBOX EN WINDOWS
Despus de descargar el programa en formato binario, ejecute el fichero
ejecutable con un doble clic.

Figura 28.

Lea y acepte la licencia marcando la opcin I accept the terms in the License
Agreement.

Figura 29.
Seleccione la ruta del directorio donde se instalar el programa:

Figura 30.

Cree los accesos directos al programa:

Figura 31.
El siguiente aviso alerta de que la instalacin de VirtualBox desconectar el
computador temporalmente de la red. Para continuar la instalacin, pulse el
botn Yes y a continuacin el botn Install.

Figura 32.

Durante la instalacin aparecern avisos como el siguiente donde se alerta al


usuario de que la instalacin 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. Contine la instalacin con el botn Continuar.

Figura 33.
Pulse el botn Finish para acabar la instalacin:

Figura 34.

b) INSTALACIN DE VIRTUALBOX EN UBUNTU


Ejecute desde la consola:
sudo gedit /etc/apt/sources.list
y aada la lnea:
deb http://download.virtualbox.org/virtualbox/debian jaunty non-free
Actualice los paquetes:
sudo apt-get update;apt-get upgrade
Aada 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 PRCTICO: CREACIN DE UNA MQUINA VIRTUAL PARA


INSTALAR UBUNTU 9.04
Cuando se crea una mquina virtual y se selecciona el sistema operativo que se
desea instalar, VirtualBox

asignar

de forma

automtica

los

requisitos

recomendados de memoria, disco duro y otras configuraciones El objetivo de la


prctica consiste en crear una mquina virtual para instalar Ubuntu 9.04 desde una
imagen del CD autnomo de instalacin en formato ISO.
Para crear una mquina virtual, ejecute VirtualBox y seleccione en el men del
programa la opcin Mquina -> Nueva. Pulse el botn Siguiente para continuar.

Figura 35.
Seleccione el nombre de la mquina virtual, el tipo de sistema operativo husped
Linux y la versin Ubuntu . Pulse Siguiente para continuar.

Figura 36.
Seleccione 512 MB de memoria para el sistema operativo husped. Recuerde que la
cantidad asignada ser a cuenta de la memoria del sistema operativo anfitrin. Pulse
Siguiente para continuar.

Figura 37.
A continuacin, cree un fichero que ser el disco duro virtual del sistema operativo
husped. En este caso, asigne 20 GB al disco duro virtual . Pulse el botn Nuevo
para continuar.

Figura 38.
Un nuevo asistente aparecer para ayudar a crear el disco duro virtual. Pulse
Siguiente para continuar.

Figura 39.
El disco duro virtual puede ser de dos tipos:

Dynamic Expanded Storage: en este caso, el tamao del disco duro virtual
ocupa poco espacio y va creciendo dinmicamente hasta el lmite del tamao
asignado conforme crecen los ficheros del Sistema Operativo Husped. Este
mtodo tiene la ventaja de que el disco duro virtual ocupa el espacio necesario
en el disco duro y el tamao del fichero crece si se necesita. Como
inconveniente, la creacin de ficheros en el disco virtual es lenta.

Fixed Storage: en este caso, se crea un fichero del mismo tamao que el disco
duro virtual. Este mtodo tiene la ventaja de que el acceso al disco duro virtual
es rpido, pero como inconveniente, ocupa ms espacio.

Seleccione el mtodo Dynamic Expanded Storage.

Figura 40.
VirtualBox crea mquinas 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 tamao mximo del disco duro virtual.
Es recomendable no utilizar espacios en el campo Location. Utilice el smbolo de
subrayado o el guin para separar palabras

Figura 41.

Finalice el asistente de creacin de discos duros con la opcin Terminar.

Figura 42.
Ahora ya est configurado el disco duro virtual. Pulse Siguiente para continuar.

Figura 43.
Finalice el asistente de creacin de mquinas virtuales con la opcin Terminar.

Figura 44.
a)

ASISTENTE PARA LA INSTALACIN DE UN SISTEMA


OPERATIVO HUSPED.
Una vez creada la mquina virtual, se le deber instalar un sistema operativo
para que sea funcional. Para ello, utilice en el men de VirtualBox la opcin
Mquina e Iniciar.

Figura 45.
Como es la primera vez que se inicia la mquina virtual, se ejecutar un asistente
que ayudar a configurar el dispositivo que se utilizar para instalar el sistema

operativo husped. Para este ejemplo, seleccione una imagen en formato ISO del
CDROM de instalacin del sistema operativo Ubuntu. Pulse el botn 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.
Una vez seleccionado el fichero en formato ISO, pulse el botn Siguiente.

Figura 48.
Un fichero ISO es un archivo que, segn el estndar ISO 9660 de la
Organizacin Internacional para la Estandarizacin, 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 mquina virtual, el dispositivo de
arrancada se desmontar automticamente. Deber desmontar el dispositivo de
arrancada una vez instalado el sistema operativo para que la secuencia de
instalacin no se vuelva a ejecutar. Pulse el botn Terminar.

Figura 49.
A continuacin, el sistema operativo husped se instalar como si se tratase de
un sistema operativo real.

Figura 50.
4.7.

INSTALACIN

DE CONTROLADORES

DE

DISPOSITIVOS

EN

HUSPEDES
Despus de instalar el sistema operativo husped, se deben instalar una serie de
programas llamados drivers o controladores para interactuar con los perifricos
virtuales, como por ejemplo, la tarjeta de red virtual. Los controladores para las
mquinas virtuales vienen incluidos en un CDROM virtual que puede montarse en
el husped con la opcin Dispositivos ->Instalar Guest Additions (Aplicaciones del
husped).
a) INSTALACIN DE CONTROLADORES DE DISPOSITIVOS EN UN
HUSPED UBUNTU
En el caso de un husped Ubuntu, aparecer en el escritorio el CDROM virtual,
dentro del cual ejecutaremos el fichero autorun.sh:

Figura 51.
Seleccione la opcin Ejecutar en un terminal e introduzca la contrasea de
superusuario:

Figura 52.
Finalmente, apague la mquina husped. La prxima vez que inicie el sistema,
los controladores de dispositivo se ejecutaran automticamente.
b) INSTALACIN DE CONTROLADORES DE DISPOSITIVOS EN UN
HUSPED WINDOWS
La instalacin de los controladores en un husped Windows preguntar al
usuario si desea instalar los dispositivos virtuales. Pulse el botn Instalar

Figura 53.

COMBINACIONES DE TECLAS ESPECIALES


Algunas combinaciones de teclas especiales afectan al funcionamiento de los
sistemas operativos y la pulsacin de dichas teclas en el sistema operativo
husped puede provocar efectos no deseados en el sistema operativo
anfitrin. La Tecla Anfitrin en VirtualBox es la tecla CTRL derecha.
Las siguientes combinaciones de teclas realizan envos de teclas especiales al
husped:
-

Tecla anfitrin + Del: enva Ctrl+Alt+Del al sistema operativo husped.


Esta combinacin de teclas apaga o inicia la sesin en Windows.

Tecla anfitrin + Backspace: enva Ctrl+Alt+Backspace al sistema


operativo husped. Esta combinacin de teclas reinicia el modo grfico
en Linux.

Tecla anfitrin + Fx: siendo Fx una tecla de funcin, enva Ctrl+Alt+Fx


al sistema operativo husped. Esta combinacin de teclas cambia entre
las terminales de Linux.

OPCIONES ESPECIALES DE VIRTUALBOX


VirtualBox proporciona las siguientes opciones especiales:
-

Modo Fludo o Seamless Mode: este modo de funcionamiento permite


ver nicamente la ventana activa del husped en el anfitrin. Para activar
o desactivar este modo, pulse simultneamente la Tecla Anfitrin y la
letra L.

4.8.

CONFIGURACIN DE LAS MQUINAS VIRTUALES


Una vez creada una mquina virtual con VirtualBox, se puede cambiar su
configuracin mediante la opcin del men MquinaConfiguracin o bien
utilizando el icono con la etiqueta Configuracin de la barra de iconos.

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
pestaas. En la siguiente seccin se explicarn los parmetros de configuracin.

Figura 55.

a)

CONFIGURACIN GENERAL

Figura 56.
La configuracin del sistema se configura en las siguientes pestaas:

Bsico:
-

Name: nombre de la mquina virtual

Sistema Operativo: nombre del sistemaoperativo husped. Por ejemplo:


Linux, Windows, Solaris, etc.

Versin: versin del sistema operativo. Por ejemplo: Debian, Ubuntu,


Red Hat, etc.

Avanzado:
-

Snapshot Folder: nombre de la carpeta donde se guardarn las


instantneas de la mquina virtual.

Shared Clipboard: mtodo para compartir el portapapeles entre el


sistema operativo anfitrin y el sistema operativo husped.
Por defecto es Bidireccional, de manera que se puede copiar y pegar
texto entre el sistema operativo husped y el anfitrin. Esta caracterstica
slo se puede utilizar si el sistema operativo anfitrin tiene instaladas las
Aplicaciones del Husped.

Removable Media: con esta opcin activa, VirtualBox recuerda que


elementos estn montados y los vuelve a montar cuando se reinicia la
mquina virtual.

Mini ToolBar: esta opcin configura el modo de visualizacin de la


tabla de herramientas de VirtualBox cuando la mquina virtual ocupa la
pantalla completamente o si se ejecuta en modo Fluido.

Figura 57.
-

Descripcin: permite al usuario escribir una descripcin de la mquina


virtual.

b)

CONFIGURACIN DEL SISTEMA

Motherboard:
-

Base Memory: controla de cuanta memoria dispondr el husped.

Boot Order: configura el orden de arrancada de los dispositivos.

Extended Features: configura la activacin de ACPI (Advanced


Configuration Power management Interface) y IO APIC. Estas opciones
no se deben deshabilitar despus de instalar un husped Windows.

Processor:
-

Processor: permite definir entre 1 y 32 CPU virtuales en el husped.

Habilitar PAE/NX: PAE (Physical Address Extension) es una opcin de


la CPU que permite a un microprocesador de 32 bits direccionar ms de
4 GiB de RAM mediante una tcnica consistente en utilizar 36 bits para

direccionar la memoria. Algunos sistemas operativos, como Ubuntu


Server, necesitan tener activada esta opcin.

Acceleration:
-

Habilitar VT-x/AMD-V: esta opcin permite utilizar la virtualizacin


por hardware si estn disponibles en el microprocesador.

Enable Nested Paging: permite utilizar el mtodo de paginacin anidada


si est disponible.

Figura 58.
c)

CONFIGURACIN DE LA PANTALLA

Video:
-

Video Memory: controla la cantidad de memoria de vdeo de la mquina


virtual.

Enable 3D Acceleration: habilita la aceleracin 3D. Esta caracterstica


slo se puede utilizar si el anfitrin tiene instaladas las Aplicaciones del
Husped.

Remote Display: esta opcin permite controlar el husped remotamente


mediante un cliente RDP (Remote Desktop Protocol).

Figura 59.
d)

CONFIGURACIN DE LOS DISCOS DUROS

IDE Controller Type: permite configurar el tipo de controlador IDE.

Enable Additional Controler: permite aadir otros controladores de disco


SATA o SCSI.

Attachments: permite aadir o eliminar discos de la mquina 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 opcin se refiere a desconectar el disco duro virtual de su husped
asociado.

Figura 61.
e)

CONFIGURACIN DE LOS DISPOSITIVOS PTICOS

Monta la unidad de CD/DVD: con esta opcin seleccionada, la unidad


ptica fsica se montar en el husped o bin se montar un archivo imagen
de un CD/DVD en formato ISO. En el caso de que la unidad ptica sea
fsica, con el parmetro Habilitar Passthrough puede utilizar la grabadora
ptica del anfitrin. Para gestionar las imgenes de CD/DVD, utilice el
Manejador de Medios Virtuales.

Figura 62.
f)

CONFIGURACIN DE LOS DISQUETES


Con esta accin activada, podr gestionar los diquetes reales o virtuales con el
Manejador de Medios Virtuales.

Figura 63.
g)

CONFIGURACIN DE LOS DISPOSITIVOS DE AUDIO


Esta opcin permite configurar que controlador de audio del anfitrin se
comunicar con el husped, as como el tipo de controlador de audio del
husped.

Figura 64.
h)

CONFIGURACIN DE LA RED
Esta opcin permite configurar hasta cuatro adaptadores de red en el husped.
Las redes en las que se encuentran las mquinas virtuales son privadas e internas
e invisibles para el anfitrin.

Adapter type: define el tipo de tarjeta de red virtual del husped.

Attached to: configura el modo en que el adaptador de la mquina husped


se conecta a una red.

Botn de MAC

: permite generar una nueva MAC para identificar la

tarjeta de red.

Figura 65.
i)

CONFIGURACIN DE LOS PUERTOS SERIE


Esta opcin permite habilitar los puertos serie en la mquina virtual husped.

Figura 66.
j)

CONFIGURACIN DE LOS DISPOSITIVOS USB


Con esta accin activada, la mquina virtual puede acceder a los dispositivos
USB seleccionados mediante el Filtro de Dispositivos. Para que los dispositivos
USB funcionen ms rpidamente y si la mquina real da soporte a la conexin
USB 2.0, es conveniente activar la opcin Enable USB 2.0(EHCI) Controller.

Figura 67.
k)

CONFIGURACIN DE LOS DIRECTORIOS COMPARTIDOS


Esta opcin permite compartir un directorio en el anfitrin para ser accedido por
el husped. Esta caracterstica slo se puede utilizar si el husped tiene
instaladas las Aplicaciones del Husped. Supondremos en este ejemplo que la
carpeta del anfitrin se llama documentos2010. Para acceder a la carpeta desde
un

husped

Windows

como

la

unidad

W:,

ejecute:

net

use

\\vboxsvr\documentos2010
Para acceder a la carpeta desde un husped Linux y montarla en /mnt, ejecute:
mount -t vboxsf documentos2010 /mnt

Figura 68.
l)

GESTIN DE LA MQUINA VIRTUAL

w:

Una vez instalado el sistema operativo husped, Virtualbox permite gestionar las
siguientes opciones:

Men Mquina:

Figura 69.
-

Modos de vdeo: modo de pantalla completa, modo fludo,


autodimensionar o ajustar el tamao de la ventana.
Por defecto, la pantalla de la mquina virtual husped se autodimensiona
cuando se cambia el tamao de la ventana.

Inhabilitar la Integracin del Raton: con las Aplicaciones del


husped instaladas, el ratn se comparte entre el anfitrin y el husped.
Si no estn instaladas, el usuario debe cambiar el control del ratn de
forma manual con la Tecla Anfitrin.

Insertar combinaciones de teclas: enva combinaciones de teclas


especiales al husped.

Tomar instantnea: para la mquina virtual y realiza una copia de la


mquina en el estado actual para que, posteriormente, se pueda continuar
ejecutando el sistema a partir del instante en que se ha tomado.

Dilogo de Informacin de Sesin: muestra informacin sobre el uso


del hardware de la sesin actual.

Figura 70.

Men Dispositivos: Este men permite gestionar los dispositivos de la


mquina virtual e instalar las Aplicaciones del husped.

Figura 71.
4.9.

DISTRIBUCIN DE IMGENES 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 imgenes con el mismo
identificador en la lista del Manejador de Medios Virtuales.
a)

CASO

PRCTICO:

GENERACIN

DE

IMGENES

COMPRIMIDAS
Las imgenes dinmicas de discos virtuales crecen conforme se instalan
aplicaciones en el sistema operativo husped, pero la imagen dinmica no
decrece, ya que si se crea un fichero en la mquina virtual y despus se borra, el
sistema operativo marca el espacio donde estaba el fichero como utilizable, pero
no borra la informacin que haba.
El objetivo de la prctica consiste en comprimir tanto como sea posible un disco
virtual dinmico original.vdi de 20 Gib para poder enviarlo por la red de forma
rpida. Para ello, generaremos un disco duro virtual minimizado.vdi que
contendr slo los sectores utilizados del disco virtual original.vdi y, finalmente,
comprimiremos el fichero resultante con 7zip.

Llenar de zeros los sectores no utilizados


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 husped sea Windows, desfragmente el disco duro y
descargue el programa sdelete de:
http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx
y descomprmalo en c:\sdelete
A continuacin, ejecute:
c:\sdelete -c C:
Y apague el husped.

En el caso de que el husped 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 continuacin, para ver que particiones estn montadas con el formato ext2
o ext3, ejecute:
$ mount|grep ext
El resultado del anterior comando mostrar el nombre de la particin.
/dev/sda1 on / type ext3 (rw,relatime)
En este ejemplo, la particin /dev/sda1 est en formato ext3. Si la particin
delsu sistema operativo husped no es /dev/sda1, sustituya /dev/sda1 por su
particin. Para ejecutar el sistema operativo en modo monousuario, de
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 opcin con las flechas la opcin root Drop to root shell
prompt y con la tecla tabulador y Enter seleccione Ok. A continuacin,
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 husped:
$ sudo init 0

Desde el Manejador de medios, libere el disco original.vdi y elimnelo con el


botn Eliminar

Figura 72.
A continuacin, con el botn Keep, brrelo de la lista de discos del
Manejador de medios, pero no lo elimine del disco duro.

Figura 73.
Para crear la nueva imagen compactada, si su husped es Windows, ejecute
desde la consola:
set path=%path%;%VBOX_INSTALL_PATH%
cd %HOMEPATH%\.VirtualBox\HardDisks
VboxManage clonehd original.vdi minimizado.vdi
Si su husped 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 tamao y hacer ms fcil su distribucin.
4.10.

PRUEBAS DE RENDIMIENTO DE LA MQUINA REAL Y LA


MQUINA VIRTUAL
Para comparar el rendimiento del hardware, se utilizan programas que realizan
pruebas de rendimiento llamadas, en ingls, benchmark. Las pruebas de
rendimiento se realizan, sobretodo, para comparar la relacin 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.
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.

También podría gustarte