En informática, la virtualización (v12n) es una serie de tecnologías que permiten dividir los recursos informáticos físicos en una serie de máquinas virtuales , sistemas operativos , procesos o contenedores. [1]
La virtualización comenzó en la década de 1960 con IBM CP/CMS . [1] El programa de control CP proporcionaba a cada usuario una computadora System/360 independiente simulada.
En la virtualización de hardware , la máquina anfitriona es la máquina que se utiliza para la virtualización y la máquina invitada es la máquina virtual. Las palabras host e invitado se utilizan para distinguir el software que se ejecuta en la máquina física del software que se ejecuta en la máquina virtual. El software o firmware que crea una máquina virtual en el hardware del host se denomina hipervisor o monitor de máquina virtual . [2] La virtualización de hardware no es lo mismo que la emulación de hardware . La virtualización asistida por hardware facilita la creación de un monitor de máquina virtual y permite que los sistemas operativos invitados se ejecuten de forma aislada.
La virtualización de escritorio es el concepto de separar el escritorio lógico de la máquina física.
La virtualización a nivel de sistema operativo, también conocida como contenerización , se refiere a una característica del sistema operativo en la que el núcleo permite la existencia de múltiples instancias aisladas del espacio de usuario .
El objetivo habitual de la virtualización es centralizar las tareas administrativas y, al mismo tiempo, mejorar la escalabilidad y la utilización general de los recursos de hardware.
En 1967 , IBM demostró por primera vez una forma de virtualización con el sistema de investigación CP-40 , que luego se distribuyó a través de código abierto en CP/CMS entre 1967 y 1972, y se volvió a implementar en la familia VM de IBM desde 1972 hasta la actualidad. A cada usuario de CP/CMS se le proporcionó una computadora simulada e independiente. Cada una de esas máquinas virtuales tenía todas las capacidades de la máquina subyacente y (para su usuario) la máquina virtual era indistinguible de un sistema privado. Esta simulación era completa y se basaba en el manual de Principios de funcionamiento del hardware. Por lo tanto, incluía elementos como un conjunto de instrucciones, memoria principal, interrupciones, excepciones y acceso a dispositivos. El resultado fue una única máquina que podía multiplexarse entre muchos usuarios.
La virtualización asistida por hardware apareció por primera vez en IBM System/370 en 1972, para su uso con VM/370 , el primer sistema operativo de máquina virtual. IBM agregó hardware de memoria virtual a la serie System/370 en 1972, que no es lo mismo que los anillos Intel VT-x, que proporcionan un nivel de privilegio más alto para que el hipervisor controle adecuadamente las máquinas virtuales que requieren acceso completo a los modos Supervisor y Programa o Usuario.
Con la creciente demanda de gráficos de computadora de alta definición (por ejemplo, CAD ), la virtualización de mainframes perdió algo de atención a fines de la década de 1970, cuando las próximas minicomputadoras fomentaron la asignación de recursos a través de la computación distribuida , abarcando la mercantilización de las microcomputadoras .
El aumento de la capacidad de procesamiento por servidor x86 (y en particular el aumento sustancial de los anchos de banda de las redes modernas) reavivó el interés por la computación basada en centros de datos, que se basa en técnicas de virtualización. El principal impulsor fue el potencial de consolidación de servidores: la virtualización permitió que un solo servidor consolidara de manera rentable la potencia de procesamiento en múltiples servidores dedicados subutilizados. El sello distintivo más visible de un regreso a las raíces de la computación es la computación en la nube , que es un sinónimo de computación basada en centros de datos (o computación similar a la de mainframe) a través de redes de alto ancho de banda. Está estrechamente relacionada con la virtualización.
La implementación inicial de la arquitectura x86 no cumplía con los requisitos de virtualización de Popek y Goldberg para lograr la "virtualización clásica":
Esto dificultó la implementación de un monitor de máquina virtual para este tipo de procesador. Las limitaciones específicas incluían la incapacidad de realizar trampas en algunas instrucciones privilegiadas . [3] Por lo tanto, para compensar estas limitaciones arquitectónicas, los diseñadores lograron la virtualización de la arquitectura x86 a través de dos métodos: virtualización completa o paravirtualización . [4] Ambos crean la ilusión de hardware físico para lograr el objetivo de independencia del sistema operativo del hardware, pero presentan algunas compensaciones en rendimiento y complejidad.
La virtualización completa no estaba totalmente disponible en la plataforma x86 antes de 2005. Muchos hipervisores de plataforma para la plataforma x86 se acercaban mucho y afirmaban tener virtualización completa (como Adeos , Mac-on-Linux, Parallels Desktop para Mac , Parallels Workstation , VMware Workstation , VMware Server (anteriormente GSX Server), VirtualBox , Win4BSD y Win4Lin Pro ).
En 2005 y 2006, Intel y AMD (trabajando de forma independiente) crearon nuevas extensiones de procesador para la arquitectura x86 llamadas Intel VT-x y AMD-V, respectivamente. En la arquitectura Itanium , la virtualización asistida por hardware se conoce como VT-i. La primera generación de procesadores x86 compatibles con estas extensiones se lanzó a fines de 2005 y principios de 2006:
La virtualización de hardware (o virtualización de plataforma) agrupa recursos informáticos en una o más máquinas virtuales . Una máquina virtual implementa la funcionalidad de una computadora (física) con un sistema operativo. El software o firmware que crea una máquina virtual en el hardware del host se denomina hipervisor o monitor de máquina virtual . [2]
El software que se ejecuta en estas máquinas virtuales está separado de los recursos de hardware subyacentes. Por ejemplo, una computadora que ejecuta Arch Linux puede alojar una máquina virtual que se parece a una computadora con el sistema operativo Microsoft Windows ; el software basado en Windows se puede ejecutar en la máquina virtual. [5] [6]
Los diferentes tipos de virtualización de hardware incluyen:
La virtualización completa emplea técnicas que agrupan los recursos físicos de la computadora en una o más instancias, cada una de las cuales ejecuta un entorno virtual donde cualquier software o sistema operativo capaz de ejecutarse en el hardware en bruto puede ejecutarse en la máquina virtual. Normalmente se utilizan dos técnicas de virtualización completa: (a) traducción binaria y (b) virtualización completa asistida por hardware. [1] La traducción binaria modifica automáticamente el software sobre la marcha para reemplazar las instrucciones que "atraviesan la máquina virtual" con una secuencia de instrucciones diferente y segura para la máquina virtual. [7] La virtualización asistida por hardware permite que los sistemas operativos invitados se ejecuten de forma aislada prácticamente sin modificaciones en el sistema operativo (invitado).
La virtualización completa requiere que cada característica destacada del hardware se refleje en una de varias máquinas virtuales, incluido el conjunto completo de instrucciones, las operaciones de entrada/salida , las interrupciones, el acceso a la memoria y cualquier otro elemento que utilice el software que se ejecuta en la máquina básica y que está destinado a ejecutarse en una máquina virtual.
Este enfoque se inició en 1966 con los IBM CP-40 y CP-67 , predecesores de la familia VM .
En la traducción binaria , las instrucciones se traducen para que coincidan con la arquitectura de hardware emulada. [1] Una pieza de hardware imita a otra, mientras que en la virtualización asistida por hardware, un hipervisor (una pieza de software) imita una pieza particular de hardware de computadora o la computadora entera. Además, un hipervisor no es lo mismo que un emulador ; ambos son programas de computadora que imitan el hardware, pero su dominio de uso en el lenguaje difiere. [8]
La virtualización asistida por hardware (o virtualización acelerada; Xen la llama máquina virtual de hardware (HVM) y Virtual Iron la llama virtualización nativa) es una forma de mejorar la eficiencia general de la virtualización de hardware utilizando la ayuda de los procesadores host. Una virtualización completa se utiliza para emular un entorno de hardware completo, o máquina virtual , en el que un sistema operativo invitado sin modificar (que utiliza el mismo conjunto de instrucciones que la máquina host) se ejecuta de manera efectiva en completo aislamiento.
La virtualización asistida por hardware se introdujo por primera vez en los procesadores IBM 308X en 1980, con la instrucción Start Interpretive Execution (SIE). [9] Se añadió a los procesadores x86 ( Intel VT-x , AMD-V o VIA VT ) en 2005, 2006 y 2010 [10] respectivamente.
IBM ofrece virtualización de hardware para su hardware IBM Power Systems para AIX , Linux e IBM i , y para sus mainframes IBM Z. IBM se refiere a su forma específica de virtualización de hardware como "partición lógica", o más comúnmente como LPAR .
La virtualización asistida por hardware reduce la sobrecarga de mantenimiento de la paravirtualización, ya que reduce (idealmente, elimina) los cambios necesarios en el sistema operativo invitado. También es considerablemente más fácil obtener un mejor rendimiento.
La paravirtualización es una técnica de virtualización que presenta una interfaz de software a las máquinas virtuales que es similar, aunque no idéntica, a la interfaz de hardware y software subyacente. La paravirtualización mejora el rendimiento y la eficiencia, en comparación con la virtualización completa, al permitir que el sistema operativo invitado se comunique con el hipervisor. Al permitir que el sistema operativo invitado indique su intención al hipervisor, ambos pueden cooperar para obtener un mejor rendimiento cuando se ejecutan en una máquina virtual.
La intención de la interfaz modificada es reducir la parte del tiempo de ejecución del invitado que se dedica a realizar operaciones que son sustancialmente más difíciles de ejecutar en un entorno virtual en comparación con un entorno no virtualizado. La paravirtualización proporciona "ganchos" especialmente definidos para permitir que el invitado y el host soliciten y reconozcan estas tareas, que de otro modo se ejecutarían en el dominio virtual (donde el rendimiento de ejecución es peor). Una plataforma paravirtualizada exitosa puede permitir que el monitor de máquina virtual (VMM) sea más simple (al reubicar la ejecución de tareas críticas del dominio virtual al dominio del host) y/o reducir la degradación general del rendimiento de la ejecución de la máquina dentro del invitado virtual.
La paravirtualización requiere que el sistema operativo invitado sea portado explícitamente para la API paravirtual ; una distribución de SO convencional que no sea compatible con la paravirtualización no puede ejecutarse sobre una VMM paravirtualizadora. Sin embargo, incluso en casos en los que no se puede modificar el sistema operativo, puede haber componentes disponibles que permitan muchas de las importantes ventajas de rendimiento de la paravirtualización. Por ejemplo, el proyecto Xen Windows GPLPV proporciona un kit de controladores de dispositivos compatibles con la paravirtualización, que están pensados para ser instalados en un invitado virtual de Microsoft Windows que se ejecuta en el hipervisor Xen . [11] Estas aplicaciones tienden a ser accesibles a través del entorno de interfaz de máquina paravirtual. Esto garantiza la compatibilidad del modo de ejecución en múltiples modelos de algoritmos de cifrado, lo que permite una integración perfecta dentro del marco paravirtual. [12]
El término "paravirtualización" se utilizó por primera vez en la literatura de investigación en asociación con Denali Virtual Machine Manager. [13] El término también se utiliza para describir los hipervisores Xen , L4 , TRANGO , VMware , Wind River y XtratuM . Todos estos proyectos utilizan o pueden utilizar técnicas de paravirtualización para soportar máquinas virtuales de alto rendimiento en hardware x86 mediante la implementación de una máquina virtual que no implementa las partes difíciles de virtualizar del conjunto de instrucciones x86 real. [14]
En 2005, VMware propuso una interfaz de paravirtualización, la Interfaz de Máquina Virtual (VMI), como mecanismo de comunicación entre el sistema operativo invitado y el hipervisor. Esta interfaz permitió una paravirtualización transparente en la que una única versión binaria del sistema operativo puede ejecutarse en hardware nativo o en un hipervisor en modo paravirtualizado.
La primera aparición del soporte de paravirtualización en Linux ocurrió con la fusión del puerto ppc64 en 2002, [15] que admitía la ejecución de Linux como un invitado paravirtualizado en hardware IBM pSeries (RS/6000) e iSeries (AS/400).
En la conferencia USENIX de 2006 en Boston, Massachusetts , varios proveedores de desarrollo de Linux (incluidos IBM, VMware, Xen y Red Hat) colaboraron en una forma alternativa de paravirtualización, inicialmente desarrollada por el grupo Xen, llamada "paravirt-ops". [16] El código paravirt-ops (a menudo abreviado como pv-ops) se incluyó en el núcleo Linux principal a partir de la versión 2.6.23 y proporciona una interfaz independiente del hipervisor entre el hipervisor y los núcleos invitados. El soporte de distribución para los núcleos invitados pv-ops apareció a partir de Ubuntu 7.04 y RedHat 9. Los hipervisores Xen basados en cualquier núcleo 2.6.24 o posterior admiten invitados pv-ops, al igual que el producto Workstation de VMware a partir de la versión 6. [17]
La virtualización híbrida combina técnicas de virtualización completa con controladores paravirtualizados para superar las limitaciones de la virtualización completa asistida por hardware. [18]
Un enfoque de virtualización completa asistida por hardware utiliza un sistema operativo invitado sin modificar que involucra muchas trampas de VM que producen altos costos de CPU que limitan la escalabilidad y la eficiencia de la consolidación del servidor. [19] El enfoque de virtualización híbrida supera este problema.
La virtualización de escritorio separa el escritorio lógico de la máquina física.
Una forma de virtualización de escritorios, la infraestructura de escritorios virtuales (VDI), puede considerarse como una forma más avanzada de virtualización de hardware. En lugar de interactuar con un ordenador anfitrión directamente a través de un teclado, un ratón y un monitor, el usuario interactúa con el ordenador anfitrión utilizando otro ordenador de escritorio o un dispositivo móvil mediante una conexión de red, como una LAN , una LAN inalámbrica o incluso Internet . Además, el ordenador anfitrión en este escenario se convierte en un ordenador servidor capaz de alojar varias máquinas virtuales al mismo tiempo para varios usuarios. [20]
A medida que las organizaciones continúan virtualizando y convergiendo su entorno de centro de datos, las arquitecturas de cliente también continúan evolucionando para aprovechar la previsibilidad, continuidad y calidad del servicio entregado por su infraestructura convergente . Por ejemplo, empresas como HP e IBM ofrecen un modelo VDI híbrido con una gama de software de virtualización y modelos de entrega para mejorar las limitaciones de la computación de cliente distribuida . [21] Los entornos de cliente seleccionados mueven cargas de trabajo desde PC y otros dispositivos a servidores de centro de datos, creando clientes virtuales bien administrados, con aplicaciones y entornos operativos de cliente alojados en servidores y almacenamiento en el centro de datos. Para los usuarios, esto significa que pueden acceder a su escritorio desde cualquier ubicación, sin estar atados a un solo dispositivo cliente. Dado que los recursos están centralizados, los usuarios que se mueven entre ubicaciones de trabajo aún pueden acceder al mismo entorno de cliente con sus aplicaciones y datos. [21] Para los administradores de TI, esto significa un entorno de cliente más centralizado y eficiente que es más fácil de mantener y capaz de responder más rápidamente a las necesidades cambiantes del usuario y la empresa. [22] Otra forma, la virtualización de sesiones, permite que varios usuarios se conecten e inicien sesión en una computadora compartida pero potente a través de la red y la usen simultáneamente. A cada uno se le asigna un escritorio y una carpeta personal en la que almacenan sus archivos. [20] Con la configuración multiseat , la virtualización de sesiones se puede lograr utilizando una sola PC con varios monitores, teclados y ratones conectados.
Los clientes ligeros , que se utilizan en la virtualización de escritorios, son computadoras simples y/o económicas que están diseñadas principalmente para conectarse a la red. Es posible que carezcan de un espacio de almacenamiento significativo en el disco duro , RAM o incluso potencia de procesamiento , pero muchas organizaciones están comenzando a considerar los beneficios en términos de costos de eliminar los escritorios de "cliente grueso" que están repletos de software (y requieren tarifas de licencia de software) y realizar inversiones más estratégicas. [23]
La virtualización de escritorios simplifica la gestión de versiones de software y parches, ya que la nueva imagen simplemente se actualiza en el servidor y el escritorio obtiene la versión actualizada cuando se reinicia. También permite un control centralizado sobre las aplicaciones a las que el usuario puede acceder en la estación de trabajo.
El traslado de escritorios virtualizados a la nube crea escritorios virtuales alojados (HVD), en los que las imágenes de escritorio son administradas y mantenidas de forma centralizada por una empresa de alojamiento especializada. Los beneficios incluyen la escalabilidad y la reducción del gasto de capital, que se reemplaza por un costo operativo mensual. [24]
La virtualización a nivel de sistema operativo, también conocida como contenerización , se refiere a una característica del sistema operativo en la que el núcleo permite la existencia de múltiples instancias aisladas del espacio de usuario . Dichas instancias, llamadas contenedores, [25] particiones, entornos virtuales (VE) o cárceles ( cárcel de FreeBSD o cárcel chroot ), pueden parecer computadoras reales desde el punto de vista de los programas que se ejecutan en ellas. Un programa de computadora que se ejecuta en un sistema operativo común puede ver todos los recursos (dispositivos conectados, archivos y carpetas, recursos compartidos de red , potencia de CPU, capacidades de hardware cuantificables) de esa computadora. Sin embargo, los programas que se ejecutan dentro de un contenedor solo pueden ver el contenido del contenedor y los dispositivos asignados al contenedor.
Esto proporciona muchos de los beneficios que tienen las máquinas virtuales, como la estandarización y la escalabilidad, al tiempo que utiliza menos recursos ya que el núcleo se comparte entre contenedores. [26]
La contenerización comenzó a ganar prominencia en 2014, con la introducción de Docker . [27] [28]
La virtualización, en particular la virtualización completa, ha demostrado ser beneficiosa para:
Un objetivo común de la virtualización es centralizar las tareas administrativas y, al mismo tiempo, mejorar la escalabilidad y la utilización general de los recursos de hardware. Con la virtualización, se pueden ejecutar varios sistemas operativos en paralelo en una sola unidad central de procesamiento (CPU). Este paralelismo tiende a reducir los costos generales y se diferencia de la multitarea, que implica ejecutar varios programas en el mismo sistema operativo. Con la virtualización, una empresa puede administrar mejor las actualizaciones y los cambios rápidos en el sistema operativo y las aplicaciones sin interrumpir al usuario.
En definitiva, la virtualización mejora drásticamente la eficiencia y la disponibilidad de los recursos y las aplicaciones de una organización. En lugar de depender del antiguo modelo de "un servidor, una aplicación" que conduce a recursos infrautilizados, los recursos virtuales se aplican de forma dinámica para satisfacer las necesidades empresariales sin ningún exceso de recursos". [30]
Las máquinas virtuales que ejecutan sistemas operativos propietarios requieren licencia, independientemente del sistema operativo de la máquina anfitriona. Por ejemplo, para instalar Microsoft Windows en una máquina virtual invitada, es necesario cumplir con los requisitos de licencia correspondientes. [31] [32] [33]
Al desacoplar el hardware físico del sistema operativo, la virtualización proporciona más flexibilidad operativa y aumenta la tasa de utilización del hardware físico subyacente.
El controlador GPLPV es un controlador para Microsoft Windows que permite a los sistemas Windows DomU virtualizados en Xen acceder a la red y bloquear los controladores de Xen Dom0. Esto proporciona una importante mejora en el rendimiento y la fiabilidad con respecto a los dispositivos estándar emulados por Xen/Qemu/Kvm.
Finn explicó que Standard cubre 2 CPU en un host y pasa de un VOSE (entorno de sistema operativo virtual: 1 instalación estándar gratuita en una máquina virtual en ese host) a dos, y "ahora tiene todas las características y la escalabilidad de Datacenter". Señaló que habrá un pequeño aumento de precio, pero dijo que pensaba que eso no importaría, ya que "debería estar virtualizado de todos modos y la duplicación de los derechos VOSE lo compensará". Windows Server Datacenter tenía un mínimo de dos licencias de 1 CPU con VOSE ilimitados. "Ahora es un SKU más simple que cubre dos CPU en un host con VOSE ilimitados", dijo Finn.