1. Conceptos Generales de Virtualización de Sistemas,
Centros de Datos y de Puestos de Trabajo
INTRODUCCIÓN A LA VIRTUALIZACIÓN
Una manera típica de definir una virtualización o v11n (es habitual encontrar dicha expresión en la literatura técnica) es
el de una abstracción software de algún sistema (software, hardware o ambos). Así, asociados e a este términos
encontramos otros como:
Hypervisor, Host o VMM (Virtual Machine Monitor): sistema sobre el cual funcionan las distintas
representaciones virtuales.
Máquina Virtual, Guest o VM (Virtual Machine): cada una de las representaciones virtuales (abstracciones) de
un sistema. Estas, a su vez pueden ser:
o De Sistema: aquellas que se ejecutan paralelamente sobre el host, por lo general emulando una
máquina completa. Un ejemplo serían tecnologías como VMWare o VirtualPC.
o De Proceso: aquellas que se ejecutan como procesos únicos dentro del host, por lo general teniendo
como objetivo la ejecución independiente de la plataforma de una o más aplicaciones. Ejemplos de esto
son JVM (Java Virtual Machine) o CLR (Common Language Runtime).
El procedimiento se puede reducir esquemáticamente a lo siguiente: el host gestiona los recursos básicos del conjunto
de máquinas virtuales (CPU, Almacenamiento –primario y secundario-, E/S y flujo de red) emulando el comportamiento
de un sistema físico real, de manera que los guests desconocen que son eso, representaciones virtuales ejecutándose en
un entorno “emulado”.
Aunque la virtualización está de moda en la informática comercial a día de hoy, en realidad es uno de los conceptos más
antiguos manejados en la misma. Este término se remonta cincuenta años atrás, a la década de los 1960s cuando, por
motivos físicos (el enorme espacio ocupado por los equipos) y económicos (elevados precio y coste de mantenimiento
de las máquinas) empresas como IBM pusieron a disposición de sus clientes espacios particionados gestionados por un
sistema operativo único en los cuales ellos podían instalar el software (sistema operativo y aplicaciones) deseado.
En la actualidad el concepto va mucho más allá, y la virtualización se ha ganado un sitio como disciplina per se dentro de
la informática que tiene numerosas ramificaciones entre las que destacamos su aplicación en los ámbitos de: sistemas
cliente/servidor (en ambos lados), centros de proceso de datos (CPD), redes y programación multiplataforma. La
virtualización aporta considerables ventajas en cuanto a portabilidad, mantenimiento, compatibilidad, seguridad,
escalabilidad, etc.
Así pues, en el uso de máquinas virtuales, encontramos una serie de ventajas, como son:
Reducen los costes de compra y mantenimiento de las máquinas virtualizadas.
Posibilidad de crear sistemas de hardware específicos.
Uso de sistemas operativos pre-instalados y pre-configurados.
Simplificación de los procesos de copia de seguridad.
Eliminación de gran parte de los problemas asociados al hardware dedicado.
1
2. Una clasificación típica de las soluciones por virtualización es la que tiene en cuenta el objeto o finalidad de la máquina
virtual1:
Virtualización de plataforma.
Virtualización de recursos.
Virtualización de aplicaciones.
Virtualización de escritorio.
VIRTUALIZACIÓN DE PLATAFORMA
La virtualización de plataforma o virtualización de sistema es aquella en la que el guest es una máquina completa, es
decir, representa tanto la estructura de hardware empleada2 como el sistema operativo y las aplicaciones que pueda
haber instaladas en él. De este modo se consigue que un mismo host pueda albergar diferentes guest compartiendo los
recursos del primero sin ellos saberlo, esto es, cada guest creerá que posee el uso de los recursos en exclusiva, cuando
en realidad son compartidos en régimen de pseudoparalelismo.
Es muy habitual encontrar este tipo de virtualización en arquitecturas cliente-servidor en las que se posee una única
máquina servidor que provee de diversos servicios a su red. Así, no es raro el crear máquinas virtuales específicas para
cada servicio (por ejemplo, un guest para el DNS, otro para seguridad, otro para bases de datos…), de manera que
simplifiquemos tareas como la automatización de los procesos de copia de seguridad o la compatibilización de servicios.
También dentro de la propia virtualización de plataforma podemos distinguir una serie de subcategorías o variantes, de
las cuales destacaremos:
Sistemas Operativos Invitados: en el host existe una aplicación específica que emula entornos de hardware
completos (o implementa traducciones del juego de instrucciones de los mismos) sobre la cual corren los
diferentes guest. Ejemplos típicos de esto son VMWare Workstation y VirtualBox.
Emuladores: similar al caso anterior, pero sólo con la función de emulación, lo que limita los sistemas
operativos soportados. Como ejemplo citaremos VirtualPC y DOSBox.
Virtualización Completa y Paravirtualización: se basan, con pequeñas diferencias entre ellas, en la adición de
una capa intermedia entre host y guests que emula al propio hardware subyacente, de manera que se mejora el
tratamiento de errores, aunque a costa de cierta pérdida de rendimiento. Ejemplo de estos modelos es
VMWare Server.
Virtualización a Nivel Sistema Operativo: no emplea capas intermedias, sino que simplemente separa los
distintos servidores existentes en un mismo sistema operativo. Como ejemplo podemos citar OpenVZ.
Virtualización a Nivel Kernel: se basa en la modificación del núcleo de un sistema operativo (normalmente de
tipo Linux) para que pueda ejecutar paralelamente distintas imágenes de sistemas operativos con sus recursos
virtualizados. Quizás el ejemplo más conocido sea User-Mode Linux.
1
Las categorías de esta clasificación no son excluyentes entre sí, es decir, un guest puede virtualizar una aplicación y al
mismo tiempo un recurso empleado por ésta.
2
Esta definición no tiene unos límites claros, en algunos entornos de virtualización de plataformas el hardware forma
parte del hypervisor, no de la máquina virtual.
2
3. VIRTUALIZACIÓN DE RECURSOS
En esta variante lo que se representa de manera virtual es algún recurso (o conjunto de éstos) por lo general de tipo
hardware: un dispositivo de almacenamiento, una tarjeta de red, etc. Además de las evidentes posibilidades de cara a la
realización de pruebas, este tipo de virtualización se emplea para facilitar el uso compartido de recursos y la
deslocalización de los mismos.
Entre las aplicaciones más destacables de esta variante encontramos:
Encapsulación u Ocultación: se virtualiza un recurso para dotarlo de una interfaz más simple que aquella que
posee por defecto. Ejemplo de esto son las aplicaciones que emulan una interfaz de red en modo visual.
Memoria Virtual: es éste un mecanismo habitual de la mayoría de sistemas operativos modernos, consistente
en “engañar” al sistema haciéndole creer que tiene más espacio disponible en memoria principal del que hay,
cuando en realidad es almacenamiento secundario lo que se está utilizando. Ejemplo de esto es el mecanismo
de swapping propio de los sistemas operativos GNU/Linux.
Virtualización de Almacenamiento: consiste en la abstracción del almacenamiento físico, de manera que es
representado por un almacén lógico que actúa de interfaz de acceso al primero. Esto permite no sólo el poseer
un medio común de comunicación, sino también la deslocalización de los almacenes de información, haciendo
creer a los sistemas que éstos son locales cuando realmente pueden estar ubicados en un sitio remoto.
Ejemplos típicos serían RAID (Redundant Array of Independent Disks), SAN (Storage Area Network) e NAS
(Network-Attached Storage).
Virtualización de Red: se basa en la creación de espacios de red virtuales dentro de otros reales que pueden o
no ser accesibles entre sí. No es raro que vaya asociado a otros tipos de virtualización, como la de plataforma.
Algún ejemplo de esta variante son el mecanismo de subnetting propio de las redes TCP/IP o las VPN (Virtual
Private Network).
Otras Virtualizaciones de Hardware: como las asociadas a dispositivos de E/S o memoria.
VIRTUALIZACIÓN DE APLICACIONES
El mecanismo de virtualización de aplicaciones se basa en el “engaño” de la aplicación guest (a virtualizar) y el sistema
host, de manera que la primera crea que está trabajando de manera nativa contra un sistema conocido, cuando en
realidad lo está haciendo contra uno diferente. Su aplicación más evidente y habitual es el ámbito multiplataforma.
Podemos diferenciar dos subtipos según el alcance de la virtualización:
Virtualización Limitada: aquella en la que se modifican las aplicaciones para eliminar en la medida de lo posible
su dependencia del sistema operativo. Es común encontrarlo en aplicaciones portables, es decir, aplicaciones
que originalmente requieren instalación (es decir, integración con el sistema operativo objetivo) que son
modificadas para que puedan funcionar sin ella, normalmente desde un dispositivo de almacenamiento
extraíble.
Virtualización Completa: este tipo de virtualización emplea una aplicación intermedia que actúa como traductor
entre la aplicación guest y el sistema host, permitiendo un nivel de abstracción mucho más profundo. Dentro de
ella diferenciamos:
o Multiplataforma: posibilita la correcta ejecución de aplicaciones con independencia de la arquitectura
del hardware y el sistema operativo del host. El enfoque habitual consiste en una pre-compilación de la
aplicación guest de manera que, en vez de generarse un fichero binario (ejecutable), se genera un
3
4. fichero objeto que será interpretado por la capa intermedia. Ejemplos muy extendidos son la JVM (Java
Virtual Machine), CLR (Common Language Runtime) o las versiones modernas de Wine.
o Simulación o Emulación: se basa en la imitación del funcionamiento de un API (Application
Programming Interface), de manera que se puedan ejecutar aplicaciones nativas de ese API en otro
entorno. Ejemplos de esto son Zebra, Cedega y las primeras versiones de Wine.
VIRTUALIZACIÓN DE ESCRITORIO
La forma más típica de virtualización de escritorio es aquella en la que se deslocaliza todo o parte del escritorio/carpeta
del usuario, lo que puede implicar el traslado de aplicaciones, ficheros de configuración y ficheros de datos. Esto
permite que el usuario pueda acceder desde diferentes dispositivos conservando todo o parte de su escritorio/carpeta.
Esta tecnología, que hasta hace unos años se limitaba casi exclusivamente al ámbito empresarial y a las grandes redes
privadas, ha hallado un importante hueco con la deslocalización “a la nube” que tan en boga está en estos días. Así, no
es raro encontrar servicios de escritorio remoto en la mayoría de sistemas operativos más populares (Windows, Linux,
MacOS).
Entre sus ventajas podemos destacar:
Mejora de la Seguridad: el tener un servidor de escritorios nos permite centralizar las políticas de seguridad
sobre los mismos, lo que redunda en la fortaleza de las mismas.
Disminución de los Costes de Soporte: al guardar los datos de los usuarios (e incluso sus aplicaciones) en un
servidor, podemos reducir el tamaño del almacenamiento local en las máquinas cliente, o incluso hacerlo nulo
es decir, utilizar terminales de texto o estaciones gráficas.
Reducción de los Costes de Hardware: dado que, normalmente en este tipo de enfoques, es el servidor quien
ejecuta las aplicaciones del cliente y, por tanto, quién sufre la carga de trabajo, podemos reducir el hardware
empleado en el resto de máquinas con el ahorro que ello supone.
Mejora de las Políticas de Copia de Seguridad: al estar los escritorios centralizados, la política de copias de
seguridad se simplifica, así como se mejora la velocidad de respuesta ante contingencias que impliquen pérdida
de datos.
Simplificación de las Instalaciones y Configuraciones: se pueden emplear escritorios “genéricos” con
determinadas aplicaciones pre-instaladas y pre-configuradas de manera que, al crear un nuevo usuario,
únicamente haya que clonar uno de estos escritorios y asignárselo.
Ampliación de la Vida Útil del Hardware: al reducir las necesidades de hardware en las máquinas cliente
también se amplía el tiempo que estos pueden ser utilizados antes de considerarse obsoletos.
Paralelismo: en algunos entornos de virtualización de este tipo, los usuarios pueden poseer y utilizar varios
escritorios simultáneamente.
VIRTUALIZACIÓN DE LOS CENTROS DE DATOS
La virtualización, desde el punto de vista comercial, puede entenderse como una manera de proveer de servicios siendo,
como ya mencionamos, una de las formas más antiguas de virtualización la que se relaciona con los CPD (Centros de
Procesamiento de Datos). El aumento, en tamaño y especialmente en complejidad, de los CPD modernos hace que cada
día más organizaciones se decanten por contratar un servicio de virtualización y así delegar la tarea de gestión de su
CPD a otra compañía.
4
5. Desde el punto de vista funcional, probablemente, la cualidad que más beneficiada se ve en la virtualización de un CPD
sea la compartición de recursos. Veámoslo de la siguiente manera: si nosotros disponemos de dos máquinas servidor,
corriendo diferentes servidores (de aplicación) virtualizados y en una de las máquinas esos recursos se hacen
insuficientes, siempre tenemos la posibilidad de portar ese guest a un entorno menos cargado, como por ejemplo
nuestra otra máquina servidor, antes de plantearnos una ampliación del sistema. No sólo eso, sino que además
repercutimos directamente en el consumo eléctrico de las máquinas: dos máquinas que mueven 5 servidores virtuales
cada una consumen menos que 10 máquinas independientes corriendo un servidor cada una. A ese mecanismo en el
cual una única máquina física ejecuta varios servidores virtualizados se le llama consolidación de servidores.
Así, virtualizar un CPD puede ser una tarea integral o parcial, es decir, podemos decidir desplazarlo de manera completa
a un entorno virtual, de manera que tanto las máquinas servidor como los servidores de aplicaciones sean guests de uno
o varios host; o podemos virtualizar únicamente aquellas partes para las cuales el proceso nos suponga un verdadero
ahorro. Sea cual sea el enfoque escogido, podemos inferir las siguientes ventajas al separar cada función (o funciones
semejantes) en distintos guests:
Mejora del Aislamiento: minimizamos casi totalmente la posibilidad de propagación de errores.
Seguridad Individualizada: cada guest puede tener un nivel de accesos completamente diferente.
Flexibilización de las Necesidades de Hardware: podemos crear cada guest con unas cualidades específicas.
Agilización de los Procesos de Configuración e Instalación: más simple que en una máquina física.
Portabilidad: como ya mencionamos, los guest pueden ser movidos de un entorno a otro sin mayores
complicaciones.
VIRTUALIZACIÓN DE PUESTOS DE TRABAJO
Podemos considerar como virtualización de puestos de trabajo a aquellos procesos de virtualización centrados en
entornos de acceso público o compartido, como por ejemplo: una estación en la cual los usuarios se conecten a la
administración pública; o un equipo que es utilizado por varias personas de la misma compañía. Es común, por ejemplo,
cuando se implanta un esquema de virtualización de este tipo, el utilizar una máquina virtual que actúe como servidor
de escritorios de usuario, a su vez virtualizados.
De manera semejante a lo que ocurre con los CPD, y puede que incluso a una escala todavía más grande, los equipos
personales o “puestos de trabajo” vienen sufriendo, en los últimos años, la revolución de las virtualizaciones a gran
escala. Cada vez son más empresas las que deciden implantar esquemas de virtualización de escritorios, entornos
multiplataforma, almacenamiento distribuido, etc. Todo ello en el marco del Cloud-Computing (informática “en la
nube”). Las empresas desarrolladoras de software están al tanto de este cambio y han cambiado su política, definiendo
nuevos tipos de licencias para máquinas virtuales, con el fin de explotar este nuevo campo y facilitar la transición de sus
clientes al mismo.
VENTAJAS Y DESVENTAJAS DE LA VIRTUALIZACIÓN
Ya desde un punto de vista más global, y tras haber visto las tecnologías y ámbitos de virtualización más comunes,
podemos deducir una serie de ventajas y desventajas, algunas de las cuales ya hemos mencionado con anterioridad:
Ventajas
Ayuda a resolver el problema de la infrautilización del hardware, especialmente en los servidores mediante
consolidación de servidores.
5
6. Mejora en el aprovechamiento y uso de los almacenes de datos, gracias a la virtualización de almacenamiento.
Reducción del consumo energético de funcionamiento de las máquinas (principalmente las de tipo servidor).
Reducción de los costes de administración, ya sea por delegar en empresas de servicios nuestros servidores
virtualizados, o por aprovechar las ventajas de dichas tecnologías en los procedimientos de instalación y
configuración.
Mejora de la respuesta ante contingencias ya sea por simplificación de las tareas de copia de seguridad
(creación, mantenimiento y restauración), por la reducción de los tiempos de parada y arranque; o por el uso de
sistemas redundantes.
Reducción de los costes de adquisición del hardware ya por un mejor aprovechamiento de los servidores, o por
la reducción de requisitos en las máquinas cliente.
Posibilidad de ampliar o reducir el sistema informático con mayor facilidad, es decir, mejorar su escalabilidad.
En caso de actualización de sistemas y/o aplicaciones se puede mantener un entorno virtual que aporte
retrocompatibilidad entre los nuevos elementos y los antiguos.
Simplificación de los procesos de pruebas y depuración.
Aumento de la seguridad en general ya por la posibilidad de aplicar protocolos centralizados, como por poder
aplicar políticas distintas a cada guest.
Impacto positivo muy notable en el uso docente, ya que permite enseñar y guiar los procedimientos de
instalación, configuración, administración y recuperación de sistemas críticos sin necesidad de trabajar sobre los
elementos físicos.
Portabilidad y facilidad de migración a nuevas arquitecturas de hardware y/o sistemas operativos.
Redistribución dinámica y automatizada de los recursos y de las colas asociadas a los mismos, de manera que
podamos desviar el uso de los mismos a uno u otro sistema en función de las necesidades puntuales de la
organización.
Desventajas
Se produce una pérdida de rendimiento en la ejecución de máquinas virtuales con respecto a las máquinas
físicas, ya que a su carga original de funcionamiento hay que añadir la aplicación que realiza la traducción en el
host.
Se dificulta la configuración del servidor compartido cuando el nivel de consolidación es muy elevado.
Se producen problemas de compatibilidad de hardware en las máquinas cliente cuando el host no es capaz de
comunicarse correctamente con el mismo.
Obsolescencia del hardware virtual, lo que hace necesario mantener convenientemente actualizados nuestros
host si queremos asegurar el correcto funcionamiento y retrocompatibilidad de los guest.
La aceleración de vídeo por hardware y en general la computación gráfica siguen siendo una de las asignaturas
pendientes de las virtualizaciones.
Problemas con las licencias, muchos fabricantes no distribuyen licencias específicas para entornos virtuales o,
directamente no los soportan.
Dependencia del host: si éste falla, todos los guest alojados en él fallan también; e incluso si no se producen
fallos, la estabilidad de las máquinas virtuales dependerá de la de la máquina anfitrión, en la que influirán la
arquitectura y sistema operativo seleccionados, así como la configuración y carga de trabajo de la misma.
La portabilidad de los guest está condicionada al software de virtualización que utilicemos, lo que también
implica una cierta dependencia del software escogido.
Costoso establecimiento de control de recursos: el hecho de que las máquinas guest compartan recursos, si
bien es una ventaja, también puede suponer un problema cuando la competencia entre ellos sea muy elevada,
ya que puede reducir el rendimiento del sistema global.
6
7. La compartición de una interfaz de red, en un servidor, por distintos guest puede producir congestión de red.
Aumenta la complejidad de determinados aspectos relacionados con la administración, como por ejemplo,
controlar que guests están funcionando y cuándo lo hacen.
7