Virtualización

¿Qué sería de la nube sin virtualización? La disposición de recursos virtuales de TI y la consiguiente abstracción respecto de la máquina física sentaron las bases de la era de la computación en la nube. Todas las tecnologías que se usan en el marco de la computación en la nube se basan en la virtualización de los recursos de TI, estos son, hardware, software, memoria y componentes de red. Los procesos y técnicas utilizados en la abstracción de cada uno de estos recursos varían en gran medida. Por ello se presentan a continuación junto a las ventajas e inconvenientes que conllevan, lo que permitirá al lector hacerse una idea de su posible aplicación en el ámbito corporativo.

Qué es la virtualización

El concepto virtualización hace referencia a la abstracción de recursos físicos de TI. A los componentes creados en el marco de la virtualización, que pueden ser tanto se hardware como de software, se les denomina componentes virtuales o lógicos y se podrán usar en las mismas condiciones que sus homólogos físicos.

En la virtualización se crea una capa de abstracción entre los recursos físicos y su equivalente virtual que representa la principal ventaja de este concepto, pues constituye la base de diversos servicios en la nube que cada vez están adquiriendo más importancia en el entorno corporativo. Hay que tener en cuenta, además, que la virtualización se diferencia de la simulación y la emulación, aunque compartan algunas similitudes.

Definición

Mediante virtualización se consigue la abstracción de recursos físicos tales como hardware, software, memoria o componentes de red. El objetivo es poner a disposición estos recursos a nivel virtual para distribuirlos entre los diferentes clientes de forma flexible en función de las necesidades de cada uno. De este modo se garantiza el mejor aprovechamiento de los recursos de TI.

La virtualización: ni simulación ni emulación

En el contexto en el que nos encontramos, es muy frecuente que los términos simulación y emulación sean utilizados como sinónimos de virtualización. No obstante, ninguno de los tres conceptos (virtualización, emulación y simulación) puede utilizarse en lugar de los otros dos, presentando entre ellos diferencias de carácter técnico:

  • Simulación. Con la simulación se consigue reproducir completamente un sistema a través de un software. El adverbio “completamente” en este caso indica que no solo se imitan las funciones en interacción con otros sistemas, sino también todos los componentes del sistema junto a su lógica interna. Por norma general, se recurre a los simuladores cuando se quiere compilar un programa creado para un sistema operativo concreto en otro sistema diferente con el fin de analizarlo, permitiendo, por ejemplo, ejecutar el software de una computadora central antigua en una plataforma de computación actual. Al contrario que la emulación, la simulación no está pensada para la práctica. Un ejemplo muy representativo es el de los simuladores de avión: estos imitan las condiciones que se producen en un avión, pero no llevan a los pilotos a su destino. En el ámbito de la informática el simulador de iPhone en XCode es bastante conocido y puede utilizarse, entre otras cosas, para probar el diseño web móvil en un ordenador.
     
  • Emulación. Mientras que la simulación reproduce un sistema, la emulación dispone las funciones de los componentes de hardware y software, pero no su lógica interna. El objetivo de la emulación es conseguir que el sistema reproducido consiga los mismos resultados que su equivalente original y es por eso que, al contrario que el simulador, un emulador sí permite ejecutar el sistema reproducido. Es decir, hablaríamos de un “emulador de vuelo” si realmente no solo reprodujeran las condiciones, sino que llevara a los pilotos a su destino. Uno de los proyectos de software más prominentes que trata con este concepto es el emulador de Android en eAndroid Studio.

En la práctica se recurre a los simuladores y emuladores en tres escenarios distintos:

  • Se reproduce un entorno de hardware para ejecutar un sistema operativo desarrollado para otra plataforma de procesamiento.
  • Se reproduce un sistema operativo para poder ejecutar aplicaciones que se escribieron para otro sistema.
  • Si lo que se pretende es ejecutar un software que se ha quedado obsoleto, habrá que reproducir el entorno del hardware, dado que los componentes originales ya no están disponibles.

Asimismo, hay que distinguir de estos dos conceptos a las soluciones de software que crean una capa de compatibilidad para remediar los posibles conflictos entre diferentes componentes de software y hardware. Estas soluciones no reproducen un sistema completo, sino solo una parte, por ejemplo, una interfaz. Quizás los ejemplos más destacados son Wine (acrónimo recursivo de Wine is not an emulator) y Cygwin.

Nota

Wine establece una capa de compatibilidad en los sistemas operativos compatibles con POSIX (Linux, Mac, Solaris o BSD) que permite ejecutar programas de Windows. El software se basa en una reconstrucción tenaz del código fuente propietario de Windows. La reconstrucción no se basó en el desmantelamiento del software patentado, sino en la ingeniería inversa en el ámbito de la prueba de caja negra. Así, técnicamente Wine no copia la lógica interna del sistema operativo de Windows en su conjunto, sino solo su API. Wine recibe las llamadas al sistema del software Windows, las transforma sin retrasos en llamadas POSIX y las envía al sistema subyacente.

¿Cómo funciona la virtualización?

Aunque se asemeja en gran medida a la simulación y la emulación, la virtualización se utiliza para un objetivo diferente. Los simuladores y los emuladores implementan un modelo de un sistema informático realizado mediante software que sirve para superar incompatibilidades. El objetivo es ejecutar aplicaciones en un sistema con el que no serían compatibles sin su ayuda. No obstante, este planteamiento presenta dos inconvenientes: por un lado, tanto la emulación como la simulación requieren mucho trabajo en su desarrollo; por el otro, siempre implican una disminución del rendimiento. La virtualización, por el contrario, se concibió para que se requiera la menor simulación o emulación posible. Las tecnologías de virtualización establecen solo una capa que permite proporcionar recursos de TI independientemente de su estructura física.

A continuación se muestra un ejemplo: si un usuario quiere probar en su ordenador Windows 7 una o varias versiones virtuales de Windows 7 recurre a un software de virtualización. Si el mismo usuario quiere iniciar en el mismo ordenador dos versiones virtuales de Ubuntu utilizará un software de virtualización que pueda eliminar mediante la emulación las incompatibilidades entre el sistema Windows y los sistemas Linux que ejecutan en él.

Existen numerosas soluciones de software que se usan en el marco de la virtualización y que contienen emuladores. Es por eso que en la práctica ambos conceptos se solapan.

Formas de virtualización

El término virtualización se acuñó en 1960 y hace referencia a la creación de máquinas virtuales, un concepto de la virtualización de hardware. A día de hoy, en el ámbito de la TI moderna se pueden encontrar diversas formas de virtualización que consiguen la abstracción de recursos de TI como software, memoria, datos o componentes de red. Se puede distinguir entre:

  • virtualización de software,
  • virtualización de hardware,
  • virtualización de almacenamiento,
  • virtualización de datos,
  • virtualización de red.

Virtualización de hardware

Con el término virtualización de hardware se hace referencia a tecnologías que ponen a disposición componentes de hardware a través de un software con independencia de su soporte físico. El ejemplo clásico de la virtualización de hardware es la máquina virtual (MV).

Una máquina virtual es un ordenador virtual que se comporta como uno físico, tanto en lo que respecta al hardware como al sistema operativo. Las máquinas virtuales funcionan como sistemas alojados virtuales en uno o varios sistemas físicos llamados equipos anfitriones o host. En la virtualización de hardware es un hipervisor el que crea la capa de abstracción entre la base física y el sistema virtual.

Nota

Un hipervisor (también Virtual Machine Monitor, VMM) es un software que permite el funcionamiento del sistema huésped en el anfitrión. Se pueden distinguir dos tipos: el hipervisor tipo 1 o hipervisor bare metal se ejecuta en el hardware del sistema anfitrión, mientras que el hipervisor tipo 2, alojado o hosted, se ejecuta en el sistema operativo del anfitrión y utiliza el controlador del dispositivo facilitado por el sistema para acceder al hardware.

Los hipervisores gestionan los recursos de hardware proporcionados por el sistema anfitrión como CPU, RAM, disco duro y periféricos y los comparte con los sistemas alojados que correspondan. Desde el punto de vista técnico este proceso se produce mediante virtualización completa o mediante paravirtualización.

  • Virtualización completa: en este tipo de virtualización el hipervisor simula un entorno completo de hardware para cada máquina virtual. Cada máquina virtual dispone entonces de su propio conjunto de recursos de hardware virtuales asignados por el hipervisor y ejecuta aplicaciones sobre esta base, de modo que el sistema alojado no tiene acceso al hardware físico del sistema anfitrión. Las soluciones de software más conocidas de este tipo de virtualización son Oracle VM VirtualBox, Parallels Workstation, VMware Workstation, Microsoft Hyper-V y Microsoft Virtual Server.
     
  • Paravirtualización: mientras que en la virtualización completa se dispone de un entorno de hardware completo para cada máquina virtual, en la paravirtualización el hipervisor ofrece solo una interfaz de programación (API) a través de la que los sistemas alojados acceden al hardware físico del anfitrión, con lo que el rendimiento mejora. Como requisito se exige que la API integre el kernel del sistema operativo del huésped, es decir, solo se puede “paravirtualizar” sistemas huésped modificados. Los proveedores de sistemas propietarios, como Microsoft Windows, no permiten por norma general este tipo de modificación. Entre los hipervisores que permiten la paravitualización se encuentran Xen y Oracle VM Server for SPARC. El concepto también tiene su aplicación en el sistema operativo para computadoras z/VM de IBM.

Realmente, los usuarios finales no pueden distinguir entre la máquina virtual y el ordenador físico. Se opta así por la virtualización de hardware cuando se trata de proporcionar a diferentes usuarios un sinnúmero de servidores virtuales basados en una plataforma informática potente, lo que constituye la base, por ejemplo, del conocido modelo de hosting compartido.

Nota

En el hosting compartido un proveedor de alojamiento opera una máquina física en un centro de datos optimizado para ello y presenta recursos de hardware virtualizados a sus clientes como sistemas alojados cerrados.

Otro ámbito de aplicación de la virtualización de hardware es el de la consolidación de servidores en el ámbito corporativo. La virtualización se aplica aquí con la intención de aumentar la tasa de ocupación del hardware del servidor. Hay que tener en cuenta que la adquisición de los componentes de hardware, tales como procesadores, es cara, por lo que las empresas evitan una arquitectura de TI en la que se utilice una máquina de cálculo separada para cada aplicación del servidor, impidiendo de este modo que los costosos recursos CPU permanezcan sin usar. En su lugar, los diferentes servidores se operan en una misma plataforma de hardware como sistemas huéspedes separados, lo que reporta tres ventajas:

  • se aprovecha mejor el servidor;
  • la distribución de los medios de almacenamiento es más efectiva;
  • se necesita menos cantidad de energía en el funcionamiento y la refrigeración.

Este método es especialmente eficiente cuando un servidor consolidado trabaja con picos de rendimiento escalonados. Si todos los sistemas alojados utilizasen el hardware de un equipo anfitrión al mismo tiempo, habría que asegurarse de que se dispone de los recursos necesarios para la carga de trabajo correspondiente. De lo contrario se correría el riesgo de que una aplicación que necesita recursos intensivamente afecte negativamente al rendimiento de otras aplicaciones en otras máquinas virtuales del mismo sistema anfitrión.

Hecho

Un campo de aplicación de la virtualización de hardware en el contexto corporativo es la consolidación del servidor. Se habla en este contexto de virtualización de servidores.

En comparación con otros conceptos, la virtualización de hardware se considera más segura. Como cada sistema huésped está aislado en un entorno de hardware virtual, si los hackers se infiltran en uno de ellos o un malware afecta sus funciones, el resto de sistemas huésped del mismo sistema anfitrión no se verán afectados. La excepción la constituyen los posibles ataques en los que los hackers consiguen acceder al sistema anfitrión aprovechando las vulnerabilidades del hipervisor, por lo que se habla entonces de un escape de la máquina virtual. En definitiva, la seguridad del funcionamiento de la máquina de virtualización va a depender del software de virtualización, así como de la rapidez del proveedor para detectar las brechas de seguridad y para cerrarlas.

Recientemente la virtualización de hardware ha encontrado otros competidores debido a otros conceptos de virtualización, lo que se debe principalmente a los gastos de recursos (overhead) de las máquinas virtuales: por ejemplo, la tecnología de contenedores (un tipo de virtualización de software) no utiliza un hipervisor. Es decir, la virtualización se produce a nivel del sistema operativo y las aplicaciones se ejecutan en contenedores aislados, ahorrando muchos más recursos. No obstante, los contendores ofrecen un grado menor de aislamiento que las máquinas virtuales. Con todo, se considera poco probable que una tecnología pueda sustituir a la otra, más bien se recomienda encontrar el concepto de virtualización que mejor se ajusta a las necesidades de cada proyecto.

Ventajas

Inconvenientes

✔ En el ámbito de la consolidación de software se pueden distribuir recursos de hardware de forma dinámica y utilizarlos eficientemente.

✘ La recreación de un entorno de hardware que incluya al sistema operativo produce un gasto de recursos.

✔ Desde el punto de vista del consumo de energía, el hardware consolidado es más eficiente que un ordenador separado.

✘ El rendimiento de una máquina virtual puede verse afectado por otras máquinas virtuales del mismo sistema anfitrión.

✔ Las máquinas virtuales ofrecen (al comparar con otros métodos de virtualización) un alto grado de aislamiento y, por tanto, seguridad en el aislamiento de la carga de trabajo.

Vitualización de software

Se habla de virtualización de software cuando son los componentes de software y no los de hardware los que se virtualizan. Los enfoques principales de este concepto de virtualización son:

  • La virtualización de aplicaciones
  • La virtualización de escritorio
  • La virtualización del sistema operativo

Virtualización de aplicaciones

Por virtualización de aplicaciones (del inglés, application virtualization) se entiende la abstracción de aplicaciones individuales del sistema operativo subyacente. Los sistemas de virtualización de aplicaciones como VMware ThinApp, Microsoft App-V o Citrix XenApp permiten ejecutar los programas en entornos de tiempo de ejecución aislados y distribuirlos en diferentes sistemas sin que sea necesario realizar cambios en el sistema operativo o en el sistema de archivos locales y en el registro correspondiente.

Por ejemplo, con VMware ThinApp se puede convertir a los archivos de paquete de Windows Installer de programas complejos, como pueden ser archivos MSI, en archivos independientes EXE. Estos contienen todas las bibliotecas y los archivos de configuración necesarios para ejecutar la aplicación en cualquier entorno del sistema operativo de Windows.

La virtualización de aplicaciones es apropiada para su uso local, por ejemplo, para proteger el sistema operativo subyacente de código malicioso. Como alternativa, las aplicaciones virtualizadas se pueden poner a disposición de los usuarios en la red a través de un servidor, de forma que los usuarios accedan ellas a través del streaming de aplicaciones. Para ello se copia la aplicación con todas sus dependencias del servidor al dispositivo cliente, donde se ejecuta en un entorno de tiempo de ejecución aislado, por lo que no hay que instalar el software en el sistema de destino. Además, este encapsulamiento de las aplicaciones, incluyendo su entorno de tiempo de ejecución, permite copiar programas en medios de almacenamiento portátiles, como dispositivos USB, y ejecutarlos directamente en ellos.

El objetivo de la virtualización de aplicaciones es desligar a estos programas del sistema operativo en el que subyacen, de modo que puedan portarse fácilmente y gestionarse de forma central. En el ámbito corporativo el concepto es adecuado, por ejemplo, para el aprovisionamiento de aplicaciones de Office.

Ventajas

Inconvenientes

✔ Es posible mantener, gestionar y poner a disposición el software de la aplicación de manera centralizada.

✘ No se pueden virtualizar aquellas aplicaciones integradas en el sistema operativo o que requieren acceso a un controlador de dispositivo específico.

✔ Mediante el aislamiento de aplicaciones se protege al sistema subyacente del código malicioso.

✘ La virtualización de aplicaciones plantea interrogantes sobre las concesiones de licencia.

✔ El software se puede eliminar del sistema sin dejar residuos.

Virtualización de escritorio

La virtualización de escritorio, especialmente útil en el ámbito corporativo, hace referencia a un concepto en el que el entorno de escritorio se gestiona de forma centralizada con acceso a través de una red. En la actualidad, las empresas suelen poner a disposición de los empleados un espacio de trabajo propio, en el que se incluye un ordenador. Cada uno de estos equipos ha de ser configurado y requiere un mantenimiento, aunque gestionarlos de forma local supone mucho trabajo. Para ahorrar en recursos humanos se han llevado a cabo distintos conceptos en torno a la virtualización de escritorio.

La virtualización de escritorio se basa en una estructura cliente-servidor donde la transmisión de datos entre el cliente y el servidor es posible gracias a los protocolos de escritorio remoto. Esta virtualización tiene lugar con la ayuda de la tecnología propietaria de proveedores líderes de soluciones de software como Microsoft, VMware o Citrix. Además, dependiendo de dónde se aplique la potencia de procesamiento para crear un escritorio virtual, se puede diferenciar entre enfoques basados en el cliente y basados en el host.

  • Virtualización de escritorio basada en el host: incluye todos los enfoques en los que los escritorios virtuales se ejecutan directamente en el servidor, es decir, es el hardware del servidor el que proporciona la potencia de cálculo para el entorno de escritorio y la ejecución de aplicaciones. Los usuarios pueden tener acceso a los escritorios virtuales basados en host a través de la red con los dispositivos cliente más comunes, desde equipos completamente equipados u ordenadores notebooks (thick clients o clientes pesados), terminales con un hardware reducido (thin clients o clientes livianos), hasta los dispositivos superreducidos (zero clients), sin olvidar smartphones y tablets. Por norma general se requiere conexión de red. Para implementar este tipo de tecnología se pueden utilizar:
    • Máquinas virtuales basadas en host: cada usuario se conecta al servidor a través de un dispositivo cliente con su propia máquina virtual (VM). Cuando se utilizan las máquinas virtuales basadas en host en el ámbito de la virtualización de escritorio se habla de infraestructura de escritorio virtual (VDI) y se puede distinguir entre una virtualización de escritorio persistente, en la que los usuarios se conectan a la misma VM en cada sesión ofreciéndoles un margen de maniobra individualizado muy amplio, y una no persistente, en la que las máquinas virtuales se van asignando aleatoriamente. Los escritorios virtuales que se crean en este tipo de enfoque se pueden personalizar, al igual que un escritorio local, con todas las opciones definidas por el usuario, así como con opciones de visualización personalizadas.
       
    • Terminal service: cuando el cliente solo se utiliza como dispositivo de visualización para entornos de escritorio alojados de forma centralizada se habla de terminal services o servicios de escritorio remoto, proporcionados por los llamados terminal servers. Este enfoque ofrece a los usuarios un margen de acción reducido, por lo que es apropiado en aquellos casos en los que se requiere un número elevado de espacios de trabajo altamente estandarizados con funciones reducidas. Un ejemplo de aplicación es el comercio al por menor, en el que los clientes livianos permiten a los empleados ver las existencias así como acceder a la información de productos y a los consumidores personalizar y realizar los pedidos.
       
    • Servidor blade: se recurre por norma general a este servidor cuando los usuarios finales quieren tener acceso remoto a un terminal físico independiente. En este caso se trata de un servidor construido en módulos o en un bastidor con varios ordenadores de placa única, a los que se conoce también como blade (“cuchilla”), de modo que cada entorno de escritorio se ejecuta en una cuchilla separada. En el campo de la virtualización de escritorio este enfoque tiene una clara ventaja: cada cuchilla constituye un ordenador independiente pero el conjunto de ellas comparten los servicios del bastidor (electricidad y refrigeración) y se gestionan de forma centralizada.
       
  • Virtualización de escritorio basada en cliente: en este tipo de virtualización es el dispositivo cliente el que debe proporcionar los recursos necesarios para gestionar el entorno de escritorio. Este enfoque requiere un cliente pesado con el hardware adecuado. En la práctica se lleva a cabo gracias a las máquinas virtuales o mediante sistemas operativos que funcionan vía streaming.
    • Máquinas virtuales basadas en el cliente: en este tipo de enfoque el entorno de escritorio se ejecuta en una máquina virtual del dispositivo cliente y, por norma general, se recurre a un hipervisor. Cada escritorio virtual se sincroniza en intervalos regulares gracias a una imagen del sistema operativo en el servidor, lo que permite la gestión centralizada junto a la generación de ciclos de copias de seguridad basadas en imágenes. Otra de las ventajas de este enfoque de virtualización es que las aplicaciones están disponibles también de forma local, incluso cuando la conexión con el servidor se interrumpe.
       
    • Sistema operativo vía streaming: en este enfoque el sistema operativo del entorno de escritorio se ejecuta en el hardware local y es solo el proceso de arranque el que tiene lugar de forma remota mediante una imagen en el servidor. Un sistema operativo vía streaming se presta para aquellos escenarios en los que hay que facilitar grupos de escritorio completos basándose en una imagen de sistema operativo única. Como ventaja, los administradores solo tienen que gestionar una imagen en el servidor para realizar los ajustes en todos aquellos escritorios cuyos sistemas operativos funcionan vía streaming. Además, el streaming funciona sin hipervisor, aunque sí requiere una conexión de red sin interrupciones entre servidor y dispositivo cliente.

La virtualización de escritorio es muy ventajosa sobre todo al permitir una administración centralizada. Además, en los entornos de trabajo estandarizados es posible reducir de forma significativa los costes de gestión y mantenimiento. Sin embargo, no resulta de tanta utilidad en aquellos casos en los que se persiga crear una estructura de TI heterogénea para gran variedad de escritorios.

Las empresas que recurren a la virtualización de escritorio suelen reducir los gastos, más si se utiliza un cliente liviano con el que no solo se minimizan los costes relacionados con la adquisición de hardware, sino también del consumo de energía. Sin olvidar el ahorro que se obtiene al requerir menos licencias de software para reproducir condiciones de trabajo comparables.

Pero no todo es positivo: cuando se hace el cambio a la virtualización de escritorios hay que invertir gran cantidad de recursos del lado del servidor. La virtualización de escritorio exige un servidor potente, además de un amplio ancho de banda para la transmisión de datos en la red, aunque este va a variar en función del enfoque de la virtualización utilizado. Por eso en la práctica este tipo de virtualización solo es rentable a largo plazo.

Ventajas

Inconvenientes

✔ La virtualización de escritorio permite la administración centralizada de entornos de escritorio.

✘ La virtualización de escritorio es adecuada para infraestructuras homogéneas.

✔ Los usuarios pueden acceder a su escritorio virtual desde diferentes dispositivos.

✘ Algunos enfoques exigen una conexión de red constante.

✔ La virtualización de escritorio permite realizar copias de seguridad centralizadas.

✘ Requisitos elevados para el rendimiento en servidores, capacidad de almacenamiento y ancho de red.

✔ Gracias a los clientes livianos se ahorra en costes en lo que respecta a la adquisición y funcionamiento.

Virtualización a nivel del sistema operativo

El concepto de virtualización a nivel del sistema operativo recurre a funciones nativas del kernel de un sistema operativo tipo Unix que permite ejecutar de forma paralela instancias de espacio de usuario, aisladas unas de otras. A diferencia de la virtualización del hardware, en este caso no se simula un sistema operativo completo con kernel incluido. En su lugar, las aplicaciones virtualizadas comparten el núcleo del sistema host a nivel del sistema operativo.

Nota

Por motivos de seguridad, los sistemas operativos modernos distinguen entre dos áreas de almacenamiento virtual: el espacio kernel y el espacio de usuario. Mientras que los procesos que sirven para el funcionamiento del kernel y otros componentes del núcleo se ejecutan en el espacio del kernel, el espacio de usuario está disponible para las aplicaciones de usuario. En los sistemas operativos de tipo Unix es posible ejecutar de forma paralela varias instancias de espacios de usuario virtuales. Esta función es la base de la virtualización a nivel del sistema operativo.

Cada instancia de espacio de usuario presenta un entorno de tiempo de ejecución virtual cerrado que, dependiendo de la tecnología utilizada, se denomina contenedor, partición, motor de virtualización o prisión. Aunque Docker representa el ejemplo más significativo en este ámbito, artk, OpenVZ/Virtuozzo y runC también se consideran buenas alternativas al líder del mercado.

La virtualización de instancias de espacio de usuario tiene lugar gracias a los mecanismos nativos de chroot que ofrecen todos los sistemas operativos tipo Unix. Con el término chroot (abreviatura del término inglés change root) se define la llamada al sistema que permite cambiar el directorio raíz de un proceso en ejecución. Si se han implementado correctamente, los procesos almacenados en un directorio raíz virtual solo pueden acceder a los datos dentro de ese directorio. No obstante, el chroot no basta para encapsular los procesos pues, aunque esta llamada al sistema ofrece funciones de virtualización básica, no fue nunca concebida como un concepto para asegurar procesos. Es por ello que la tecnología de contenedores combina el chroot con otras funciones nativas del kernel como Cgroups y Namespaces para proporcionar un entorno de ejecución aislado con acceso limitado a recursos de hardware.

  • Cgroups: grupos de control para la gestión de recursos que permiten limitar el acceso de los procesos a los recursos de hardware.
  • Namespaces: también conocidos como espacios de nombres, sirven para la identificación de sistemas y procesos, así como de las comunicaciones entre los procesos y los recursos de red. Con los espacios de nombres es posible limitar un proceso y sus hijos a la sección deseada de la capa del sistema subyacente.

Un contenedor de software incluye una aplicación con todas las dependencias, tales son bibliotecas, programas de asistencia o archivos de configuración. Las aplicaciones sometidas a la tecnología de contenedores pueden traspasarse sin más modificaciones de un sistema a otro. El punto fuerte de este enfoque es el despliegue de aplicaciones en red (deployment).

Si se recurre a los contenedores en el ámbito de la arquitectura de microservicios, los usuarios de benefician de una alta escalabilidad. Con el término microservicios se hace referencia a un enfoque para el desarrollo de un software modular. En esta arquitectura se pueden desarrollar aplicaciones complejas combinando procesos independientes, por ejemplo, en un contenedor propio. Se habla entonces de aplicaciones multicontenedor. Además, este tipo de estructura presenta varias ventajas: los microservicios facilitan el despliegue de aplicaciones en un clúster de servidores, pues los procesos en contenedores pueden ejecutarse bien en el mismo sistema o distribuirse en diferentes sistemas. Asimismo, cada microservicio puede escalarse de forma individual, para lo que basta que los usuarios inicien una nueva instancia en un nuevo contenedor.

Un gestor clúster y las herramientas de orquestación sirven para gestionar las arquitecturas de microservicios en el clúster. En el artículo sobre el ecosistema de Docker de la Digital Guide se puede acceder a una selección de las mejores herramientas de contenedores.

En comparación con la virtualización de hardware, la tecnología de contenedores se caracteriza por una reducción mínima de la virtualización pues, entre otras cosas, se elimina el hipervisor. Mientras que las máquinas virtuales requieren la virtualización completa del sistema operativo, la tecnología de contenedores permite ejecutar miles de microservicios en entornos de tiempo de ejecución aislados en un mismo sistema operativo.

Ventajas

Inconvenientes

✔ El concepto de virtualización a nivel del sistema operativo no requiere hipervisor, por lo que se asocia a una virtualización muy reducida.

✘ La virtualización a nivel del sistema operativo está orientada a arquitecturas de microservicios. La tecnología de los contenedores no es tan ventajosa con aplicaciones de estructura monolítica, por ejemplo, en lo que se refiere a escalabilidad.

✔ Cuando se utilizan contenedores para las aplicaciones basadas en la combinación de diferentes microservicios, los usuarios se benefician de una alta escalabilidad.

✘ A diferencia de las máquinas virtuales, los contenedores se ejecutan directamente en el kernel del sistema operativo host, lo que incurre en ciertos requerimientos técnicos. Esta dependencia limita la portabilidad de contenedores, de ahí que los contenedores de Microsoft no se puedan ejecutar en Linux sin emuladores.

✔ La implementación de contenedores no requiere procesos de instalación complejos.

✘ Frente a las máquinas virtuales, los contenedores ofrecen un menor aislamiento. Por tanto, la virtualización de contenedores no es recomendable para implementar planes de seguridad.

✔ No quedan residuos cuando se elimina el software.

✔ Los contenedores “prefabricados” suelen estar disponibles online para las plataformas más importantes.

Virtualización de almacenamiento

La virtualización de almacenamiento, también conocida como almacenamiento definido por software, se trata de un concepto de virtualización que tiene como objetivo la representación virtual de los diversos recursos de almacenamiento de una empresa, tales como discos duros, memorias flash o unidades de cinta, con el objetivo de hacerlos disponibles como un grupo de recursos interrelacionado. Esta solución de virtualización establece una capa de abstracción entre los distintos medios de almacenamiento físicos y el nivel lógico, en el cual se puede gestionar al conjunto de recursos de almacenamiento de forma centralizada a través de software.

Las memorias virtuales también se pueden dividir en partes y asignarse a las aplicaciones seleccionadas. Aunque se trate de datos almacenados mediante virtualización, los usuarios pueden acceder a ellos con la ruta de archivos habitual, incluso si se ha modificado el espacio físico de almacenamiento. Todo ello es posible gracias a una tabla de asignaciones o tabla de mapeo gestionada por el software de virtualización, a lo que se denomina asignación (mapeo) de los medios físicos de almacenamiento en la unidad lógica (en ocasiones también llamadas volúmenes).

Las unidades lógicas no están sujetas a los límites de capacidad física de cada uno de los medios de almacenamientos individuales, esto es, este tipo de virtualización ofrece una mayor flexibilidad en lo que respecta a la asignación de recursos de almacenamiento y permite utilizar el hardware dispuesto para el guardado de datos a pleno rendimiento. Para las empresas esto se traduce en una mayor rentabilidad de la capacidad de almacenamiento del centro de datos.

Normalmente, en el ámbito corporativo se suele recurrir a la virtualización de almacenamiento basada en bloques, en la que los datos se reparten en bloques de igual tamaño. Cada bloque de datos tiene una dirección única que el software de virtualización almacena en la tabla de mapeo, es decir, esta tabla contiene todos los metadatos necesarios para encontrar el espacio de almacenamiento físico de los distintos bloques de datos. Gracias al mapeo es posible gestionar los datos del nivel virtual de forma separada al controlador correspondiente del medio físico de almacenamiento y de este modo reducirlos, duplicarlos o moverlos sin que afecte al medio físico.

En la práctica, en la virtualización de almacenamiento se distinguen tres enfoques distintos:

  • Basada en host
  • Basada en matriz
  • Basada en red

Virtualización de almacenamiento basada en host

Este enfoque de la virtualización de almacenamiento suele combinarse con máquinas virtuales. En este concepto, un sistema anfitrión (o host) presenta a uno o varios sistemas huésped (ver la virtualización de hardware) unidades lógicas virtuales en un nivel de abstracción, que bien se implementan mediante un gestor de volúmenes de sistema operativo interno o un software independiente (hipervisor de almacenamiento). El controlador del dispositivo del sistema host permite tener acceso al hardware (discos duros y otros sistemas de almacenamiento), por encima del cual se encuentra el gestor de volúmenes o hipervisor de almacenamiento como capa de software, que gestiona tanto la entrada y salida (E/S) en la tabla de mapeo, como la búsqueda metadatos.

Las funciones nativas que permiten crear unidades lógicas virtuales están disponibles en todos los sistemas operativos:

  • Windows: Logical Disk Manager (LDM)
  • macOS: CoreStorage (desde OS X Lion)
  • Linux: Logical Volume Manager (LVM)
  • Solaris y FreeBSD: zPools del sistema de archivos Z File Systems (ZFS)

La virtualización de almacenamiento basada en host no requiere hardware adicional, es compatible con cualquier dispositivo de almacenamiento y se puede implementar sin apenas esfuerzo. En comparación con otros conceptos, este enfoque ofrece el mejor rendimiento, ya que cada dispositivo reacciona inmediatamente y, en consecuencia, sin periodo de latencia. No obstante, los usuarios tienen que tener en cuenta que la virtualización de almacenamiento, su optimización y consumo de memoria se limita a cada host.

Virtualización de almacenamiento basada en matriz

Las matrices de discos, dispositivos de almacenamiento masivos con los que se pueden suministrar discos duros en la red, ofrecen también la posibilidad de virtualizar recursos de almacenamiento. Para ello se utilizan los esquemas RAID, siglas de Redundant Array of Independent Disks (matriz redundante de discos independientes), que designan un concepto de almacenamiento de datos en el que varios discos duros físicos se combinan en una plataforma de almacenamiento virtual. El objetivo que persigue este enfoque de virtualización es garantizar la seguridad contra fallos mediante redundancia. Es por ello que los datos se replican en una matriz de discos y se distribuyen en diferentes discos duros.

Consejo

El artículo de la Digital Guide sobre Network Attached Storage (NAS) ofrece más información sobre la matriz de discos y esquemas RAID.

Las matrices de discos más modernas ofrecen la posibilidad de conectarse a otros dispositivos de almacenamiento y, de esta forma, concentrar los recursos de almacenamiento de diferentes matrices de discos a nivel virtual y gestionarlos de forma centralizada. Para ello, el controlador de almacenamiento de la matriz se supedita a un controlador primario, que se encarga de gestionar de forma centralizada la tabla de mapeo y la transmisión de las solicitudes E/S.

Asimismo, este tipo de virtualización de almacenamiento ofrece un buen rendimiento debido a una latencia E/S reducida. Aparte de las matrices de discos que se van a unir, no se requiere otro componente de hardware, aunque para poder conectar un almacenamiento externo, el dispositivo debe disponer de la interfaz adecuada. La migración de datos o su réplica no puede realizarse en todos los sistemas, pues la mayoría de proveedores de matrices utilizan protocolos propietarios. Además hay que tener en cuenta que, con un uso intensivo, el controlador de almacenamiento primario puede convertirse en un cuello de botella.

Virtualización de almacenamiento basada en red

Este tipo de virtualización es especialmente útil cuando un grupo de almacenamiento virtual debe reunir recursos de almacenamiento de sistemas heterogéneos. En el ámbito corporativo este enfoque se suele implementar en el marco de las redes de área de almacenamiento, también conocidas como SAN por sus siglas en inglés.

El componente principal de este tipo de virtualización es un dispositivo de red centralizado (como puede ser un conmutador o switch) que establece una capa de abstracción entre el medio de almacenamiento físico de los sistemas integrados y el grupo de recursos de almacenamiento virtual, además de encargarse del mapeo de metadatos y de direccionar las solicitudes E/S. Los dispositivos de virtualización en este tipo de enfoque se implementan directamente en la ruta de datos, lo que se conoce como soluciones en banda (virtualización simétrica). En las soluciones en banda, las solicitudes E/S pasan por el dispositivo de virtualización, por lo que no tiene lugar la interacción directa entre el host y el dispositivo de almacenamiento físico. Es por eso que el host no debe disponer de un controlador especial para el hardware de almacenamiento.

Nota

La virtualización simétrica de recursos de almacenamiento se opone a la virtualización asimétrica o fuera de banda. En este último caso el dispositivo de virtualización funciona solo como servidor de metadatos que ofrece información sobre el lugar de almacenamiento del bloque de datos en cuestión. Es entonces cuando tiene lugar una solicitud E/S directa al dispositivo de almacenamiento.

La gran ventaja de los enfoques basados en la red es que los recursos de almacenamiento de sistemas heterogéneos se pueden gestionar a través de una interfaz centralizada. Si se implementa la virtualización de almacenamiento basada en red con la solución fuera de banda, debe implementarse también del lado del host un software especial para el acceso a los dispositivos de almacenamiento disponibles en SAN. La solución en banda no necesita este software, pero es más complejo de implementar y por norma general está relacionado con un periodo de latencia E/S mayor.

EMC, HP, IBM, LSI y Oracle son conocidos proveedores de soluciones de virtualización de almacenamiento.

Ventajas

Inconvenientes

✔ Mejor aprovechamiento de los recursos de almacenamiento físico.

✘ Las tablas de mapeo centralizada contienen un SPOF (punto único de fallo).

✔ El uso de los recursos de almacenamiento no depende de los límites de los dispositivos físicos subyacentes.

✘ La virtualización de almacenamiento se relaciona siempre con el gasto de recursos que resulta de la necesidad de generar y procesar los datos.

✔ Gestión centralizada de los medios de almacenamiento concentrados en una unidad lógica.

✘ Usado de forma intensiva, el procesamiento de una solicitud E/S puede producir un cuello de botella que reduce la rapidez del sistema de almacenamiento completo.

✔ Los recursos físicos se pueden estructurar o ampliar independientemente del grupo de almacenamiento virtual.

La virtualización de datos

La virtualización de datos condensa diferentes enfoques de virtualización en el marco del análisis de almacén de datos, que tiene como objetivo que las aplicaciones proporcionen acceso a los datos abstraídos de realidades físicas, para lo que se crea una copia maestra, esto es, una copia virtual del estado del conjunto de datos.

La virtualización de datos consiste, así, en un concepto de integración de información que se aleja de procedimientos clásicos como pueden ser los procesos ETL, mediante los que se establecen una capa de abstracción entre las fuentes de datos físicas y la representación virtual de datos.

En lo que respecta a la integración de información, ETL (Extract, Transform, Load) se utiliza para poder extraer los datos de diferentes fuentes estructuradas y unirlos de forma uniforme en una base de datos. Sin embargo, aunque la virtualización de datos también permite la lectura y manipulación de datos de diferentes fuentes, estos, a diferencia de ETL, permanecen en el lugar físico. Es por eso que las soluciones de software de la virtualización integran datos solo a nivel virtual y proporcionan acceso en tiempo real a las fuentes de datos físicas.

Con la tecnología de virtualización de datos, aquellos datos distribuidos en diferentes almacenes de datos, data marts o data lakes, se pueden condensar de forma efectiva sin necesidad de crear una nueva plataforma física de datos. Todo ello reduce, por un lado, el espacio de almacenamiento necesario para analizar grandes cantidades de datos y, por otro, la cantidad de datos transferidos a la red. Para poder acceder a la imagen virtual de toda la base de datos existen diversas aplicaciones. Es más, en el ámbito de la inteligencia de negocios (BI) hay disponibles herramientas de autoservicio con las que se pueden crear informes y análisis sin necesidad de trabajar con profesionales de TI.

Los principales proveedores de este tipo de tecnología son: Denodo, TIBCO, IBM e Informatica.

Ventajas

Inconvenientes

✔ Se reducen los requisitos de almacenamiento para las copias de datos.

✘ A diferencia del enfoque de almacén de datos, la virtualización de datos no es adecuada para registrar o poner a disposición instantáneas de base de datos.

✔ Se omite una extracción de datos laboriosa (por ejemplo, a través de ETL).

✔ Es posible añadir fuentes de datos nuevas sin necesidad de expertos en TI gracias a las herramientas BI.

✔ El procesamiento de los datos virtualizados es posible gracias a una gran cantidad de herramientas de gestión de datos.

Virtualización de redes

La virtualización de redes comprende diferentes enfoques en los que los recursos de red a nivel de hardware o software se abstraen de su base física. Por norma general este tipo de virtualización se utiliza en lo que respecta a conceptos de seguridad y responde a dos objetivos principales:

  • Los recursos físicos de red deben agruparse por medio de la virtualización en una unidad lógica
  • Los recursos de red físicos deben poderse dividir en diferentes unidades virtuales por medio de la virtualización

Un ejemplo claro de la virtualización de redes es la la conexión VPN (siglas de Virtual Private Network), una red virtual basada en una física. En la práctica, las conexiones VPN se usan para establecer conexiones seguras a través de canales inseguros. Esto ocurre, por ejemplo, cuando los trabajadores externos acceden a través de Internet a la red privada de su empresa.

Internet, al tratarse de una red pública, no permite la conexión segura entre dos ordenadores. Por ello, para garantizar la confidencialidad de los datos durante la transmisión se recomienda utilizar la virtualización. Los diversos proveedores de software ofrecen soluciones de virtualización con las que abstraer redes virtuales de redes físicas y protegerlas por medio de procedimientos de cifrado y autentificación. La transmisión de datos de un ordenador a otro es posible en una red privada que se conoce como túnel.

Otro ejemplo de la virtualización de redes son las denominadas redes de área local virtuales (VLAN, Virtual Local Area Network), subredes virtuales que se basan en una red informática física y se implementan a través de componentes de hardware como switches o routers que se virtualizan. Los dispositivos que se encuentran conectados a una VLAN solo pueden comunicarse con los dispositivos de la misma VLAN, es decir, incluso si todos los dispositivos se encuentran en la misma red física, el enlace de datos a otros dispositivos de otra VLAN no será posible. En definitiva, la virtualización de redes ofrece la posibilidad de proporcionar, gestionar y asignar los recursos de red a nivel virtual con flexibilidad, independientemente de las condiciones físicas.

Las redes definidas por software (SDN) responden a un enfoque mediante el que se permite controlar los recursos de red virtual de manera centralizada sin necesidad de acceder manualmente a los componentes físicos de red. Se basan en la separación del plano de control virtual del plano de datos, este es, el plano físico de la red responsable del reenvío de paquetes de datos. En lo que respecta al plano de control, su componente principal es el controlador de red, encargado de gestionar a los componentes de red del plano de datos, tales como el router o los switches, así como de dirigir el envío de paquetes de datos. Es decir, el controlador de red es responsable de la gestión de redes, pero también de las indicaciones de enrutamiento, los derechos de acceso y la implementación de conceptos de seguridad. Por su parte, los componentes de red del plano de datos recogen las instrucciones de los controladores de red, encargándose del envío de los paquetes de datos al dispositivo de destino deseado.

Ventajas

Inconvenientes

✔ Ahorra costes gracias al uso múltiple de la infraestructura de red física.

✘ El funcionamiento de varias subredes virtuales en una misma red física exige componentes de hardware más potentes.

✔ Los recursos de red se pueden gestionar de forma centralizada en el nivel virtual, además de escalarse fácilmente y compartirse de manera dinámica.

✘ Es posible que para garantizar la seguridad sea necesaria una infraestructura de red física redundante.

✔ La virtualización de redes ofrece diferentes enfoques con los que se pueden implementar conceptos de seguridad a nivel de red desde el lado del software, resultando más rentables.