Un hipervisor , también conocido como monitor de máquina virtual ( VMM ), es un tipo de software , firmware o hardware que crea y ejecuta máquinas virtuales . Un ordenador en el que un hipervisor ejecuta una o más máquinas virtuales se denomina máquina anfitriona o servidor de virtualización , y cada máquina virtual se denomina máquina invitada . El hipervisor presenta a los sistemas operativos invitados una plataforma operativa virtual y gestiona su ejecución. A diferencia de un emulador , el invitado ejecuta la mayoría de las instrucciones en el hardware nativo. [ 1 ] Varias instancias de diversos sistemas operativos pueden compartir los recursos de hardware virtualizados: por ejemplo, instancias de Linux , Windows y macOS pueden ejecutarse en una única máquina física x86 . Esto contrasta con la virtualización a nivel de sistema operativo , donde todas las instancias (normalmente llamadas contenedores ) deben compartir un único núcleo, aunque los sistemas operativos invitados pueden diferir en el espacio de usuario , como distintas distribuciones de Linux con el mismo núcleo.
El término hipervisor es una variante de supervisor , un término tradicional para el núcleo de un sistema operativo : el hipervisor es el supervisor de los supervisores, [ 2 ] con hiper- usado como una variante más fuerte de super- . [ a ] El término data de alrededor de 1970; [ 3 ] IBM lo acuñó para el software que ejecutaba OS/360 y el emulador 7090 simultáneamente en el 360/65 [ 4 ] y más tarde lo usó para el manejador DIAG de CP-67. En el sistema CP/CMS anterior (1967), se usó en su lugar el término Programa de control .
Algunos textos, especialmente en contextos de microkernel , distinguen entre hipervisor y monitor de máquina virtual ( VMM ). En estos casos, ambos componentes conforman la pila de virtualización general de un sistema. El hipervisor se refiere a la funcionalidad del espacio del kernel y el VMM a la funcionalidad del espacio de usuario . Específicamente en estos contextos, un hipervisor es un microkernel que implementa infraestructura de virtualización y que debe ejecutarse en el espacio del kernel por razones técnicas, como Intel VMX . Los microkernels que implementan mecanismos de virtualización también se denominan microhipervisores . [ 5 ] [ 6 ] Aplicando esta terminología a Linux , KVM es un hipervisor y QEMU o Cloud Hypervisor son VMM que utilizan KVM como hipervisor. [ 7 ]
Clasificación

En su tesis de 1973, Principios arquitectónicos para sistemas informáticos virtuales , Robert P. Goldberg clasificó dos tipos de hipervisor: [ 1 ]
- Hipervisores de tipo 1, nativos o bare-metal
- Estos hipervisores se ejecutan directamente en el hardware del host para controlarlo y administrar los sistemas operativos invitados. Por esta razón, a veces se les llama hipervisores bare-metal . Los primeros hipervisores, desarrollados por IBM en la década de 1960, eran hipervisores nativos. [ 8 ] Entre ellos se encontraban el software de prueba SIMMON y el sistema operativo CP/CMS , predecesor de la familia de sistemas operativos de máquinas virtuales VM de IBM . Ejemplos de hipervisores de tipo 1 incluyen Hyper-V , Xen y VMware ESXi .
- Hipervisores de tipo 2 o alojados
- Estos hipervisores se ejecutan en un sistema operativo convencional, al igual que otros programas informáticos. Un monitor de máquina virtual se ejecuta como un proceso en el sistema anfitrión, como VirtualBox . Los hipervisores de tipo 2 abstraen los sistemas operativos invitados del sistema operativo anfitrión, creando así un sistema aislado con el que el anfitrión puede interactuar. Ejemplos de hipervisores de tipo 2 son VirtualBox y VMware Workstation .
La distinción entre estos dos tipos no siempre es clara. Por ejemplo, KVM y bhyve son módulos del kernel [ 9 ] que convierten efectivamente el sistema operativo anfitrión en un hipervisor de tipo 1. [ 10 ]
Orígenes de los mainframes
Los primeros hipervisores que ofrecían virtualización completa fueron la herramienta de prueba SIMMON y el sistema de investigación IBM CP-40 , un prototipo único que comenzó a utilizarse en producción en enero de 1967 y se convirtió en la primera versión del sistema operativo IBM CP/CMS . CP-40 se ejecutaba en un S/360-40 modificado en el Centro Científico de Cambridge para admitir la traducción dinámica de direcciones , una característica que posibilitaba la virtualización. Hasta entonces, el hardware informático solo se había virtualizado lo suficiente como para permitir la ejecución simultánea de múltiples aplicaciones de usuario, como en CTSS e IBM M44/44X . Con CP-40, el estado del supervisor del hardware también se virtualizó, lo que permitió la ejecución simultánea de múltiples sistemas operativos en contextos de máquinas virtuales independientes .
Los programadores pronto implementaron CP-40 (como CP-67 ) para el IBM System/360-67 , el primer sistema informático de producción capaz de virtualización completa. IBM lanzó esta máquina en 1966; incluía hardware de tabla de traducción de páginas para memoria virtual y otras técnicas que permitían una virtualización completa de todas las tareas del núcleo, incluyendo E/S y manejo de interrupciones. (El sistema operativo "oficial", el desafortunado TSS/360 , no empleaba virtualización completa). Tanto CP-40 como CP-67 comenzaron a usarse en producción en 1967. CP/CMS estuvo disponible para los clientes de IBM desde 1968 hasta principios de la década de 1970, en forma de código fuente sin soporte.
CP/CMS formó parte del intento de IBM de crear sistemas robustos de tiempo compartido para sus ordenadores centrales . Al ejecutar varios sistemas operativos simultáneamente, el hipervisor aumentó la robustez y la estabilidad del sistema: incluso si un sistema operativo fallaba, los demás seguían funcionando sin interrupción. De hecho, esto permitió incluso implementar y depurar versiones beta o experimentales de sistemas operativos —oincluso de nuevo hardware [ 11 ] — sin poner en peligro el sistema de producción principal estable y sin requerir costosos sistemas de desarrollo adicionales.
IBM anunció su serie System/370 en 1970 sin la función de memoria virtual necesaria para la virtualización, pero la añadió en el anuncio de funciones avanzadas de agosto de 1972. La virtualización se ha incorporado a todos los sistemas sucesores, de modo que todos los mainframes modernos de IBM, incluida la línea zSeries , conservan la compatibilidad con versiones anteriores de la línea IBM S/360 de la década de 1960. El anuncio de 1972 también incluyó VM/370 , una reimplementación de CP/CMS para el S/370. A diferencia de CP/CMS , IBM ofreció soporte para esta versión (aunque se distribuyó en código fuente durante varias versiones). VM significa Máquina Virtual , lo que subraya que todas, no solo algunas, de las interfaces de hardware están virtualizadas. Tanto VM como CP/CMS gozaron de una rápida aceptación y un rápido desarrollo por parte de universidades, usuarios corporativos y proveedores de tiempo compartido , así como dentro de IBM. Los usuarios desempeñaron un papel activo en el desarrollo continuo, anticipándose a las tendencias observadas en los proyectos de código abierto modernos . Sin embargo, en una serie de disputas y batallas encarnizadas , el procesamiento por lotes, mediante luchas internas políticas en IBM, fue desplazado por el procesamiento por lotes, y VM siguió siendo el "otro" sistema operativo para mainframes de IBM durante décadas, siendo superado por MVS . Experimentó un resurgimiento de popularidad y apoyo a partir del año 2000 como el producto z/VM , por ejemplo, como plataforma para Linux en IBM Z.
Como se mencionó anteriormente, el programa de control de la máquina virtual incluye un controlador de llamadas del hipervisor que intercepta las instrucciones DIAG ("Diagnóstico", código de operación x'83') utilizadas dentro de una máquina virtual. Esto proporciona una ejecución rápida y no virtualizada del acceso al sistema de archivos y otras operaciones (DIAG es una instrucción privilegiada dependiente del modelo, que no se utiliza en la programación normal y, por lo tanto, no está virtualizada. Por consiguiente, está disponible para su uso como señal al sistema operativo "anfitrión"). Cuando se implementó por primera vez en la versión 3.1 de CP/CMS , este uso de DIAG proporcionó una interfaz del sistema operativo análoga a la instrucción de llamada al supervisor (SVC) de System/360 , pero que no requería modificar ni extender la virtualización de SVC del sistema.
En 1985, IBM presentó el hipervisor PR/SM para gestionar particiones lógicas (LPAR).
Soporte del sistema operativo
Varios factores llevaron a un resurgimiento alrededor de 2005 en el uso de la tecnología de virtualización entre Unix , Linux y otros sistemas operativos tipo Unix : [ 12 ]
- Ampliar las capacidades del hardware, permitiendo que cada máquina realice más trabajo simultáneo.
- Esfuerzos por controlar los costos y simplificar la gestión mediante la consolidación de servidores.
- La necesidad de controlar grandes instalaciones multiprocesador y en clúster , por ejemplo, en granjas de servidores y granjas de renderizado.
- La mayor seguridad, fiabilidad e independencia de dispositivos que ofrecen las arquitecturas de hipervisor.
- La capacidad de ejecutar aplicaciones complejas y dependientes del sistema operativo en diferentes entornos de hardware o sistemas operativos.
- La capacidad de sobreaprovisionar recursos, instalando más aplicaciones en un host.
Los principales proveedores de Unix, incluidos HP , IBM , SGI y Sun Microsystems , han estado vendiendo hardware virtualizado desde antes del año 2000. Generalmente se trataba de sistemas grandes y costosos (que alcanzan precios multimillonarios en la gama alta), aunque la virtualización también ha estado disponible en algunos sistemas de gama baja y media, como los servidores IBM pSeries , las máquinas HP Superdome y los servidores Sun/Oracle SPARC T series CoolThreads.
IBM proporciona tecnología de particionamiento de virtualización conocida como particionamiento lógico (LPAR) en los sistemas System/390 , zSeries , pSeries e IBM AS/400 . Para los sistemas Power de IBM, el hipervisor POWER (PHYP) es un hipervisor nativo (bare-metal) en el firmware y proporciona aislamiento entre LPAR. La capacidad del procesador se proporciona a las LPAR de forma dedicada o mediante un sistema de derechos, donde la capacidad no utilizada se aprovecha y se puede reasignar a cargas de trabajo intensivas. La capacidad del procesador de grupos de LPAR se puede gestionar como si estuvieran en un "pool" (grupo). IBM denomina a esta capacidad Grupos de Procesadores Compartidos Múltiples, MSPP, y la implementa en servidores con el procesador POWER6 . Las asignaciones de capacidad de LPAR y MSPP se pueden modificar dinámicamente. La memoria se asigna a cada LPAR (al iniciarse o dinámicamente) y está controlada por direcciones mediante el hipervisor POWER. Para el direccionamiento en modo real por parte de los sistemas operativos ( AIX , Linux , IBM i ), los procesadores Power ( POWER4 en adelante) cuentan con capacidades de virtualización diseñadas donde se evalúa un desplazamiento de dirección de hardware con el desplazamiento de dirección del sistema operativo para llegar a la dirección de memoria física. Los adaptadores de entrada/salida (E/S) pueden ser propiedad exclusiva de las particiones lógicas (LPAR) o ser compartidos por ellas a través de una partición de dispositivo conocida como Servidor de E/S Virtual (VIOS). El hipervisor Power proporciona altos niveles de confiabilidad, disponibilidad y facilidad de mantenimiento (RAS) al facilitar la adición/sustitución en caliente de múltiples componentes (dependiendo del modelo: procesadores, memoria, adaptadores de E/S, ventiladores, unidades de alimentación, discos, controladores del sistema, etc.).
HPE proporciona HP Integrity Virtual Machines (Integrity VM) para alojar múltiples sistemas operativos en sus sistemas Integrity basados en Itanium . Itanium puede ejecutar HP-UX , Linux, Windows y OpenVMS , y estos entornos también son compatibles como servidores virtuales en la plataforma Integrity VM de HP. El sistema operativo HP-UX aloja la capa de hipervisor de Integrity VM, lo que permite aprovechar múltiples características de HP-UX y proporciona una diferenciación importante entre esta plataforma y otras plataformas estándar, como el intercambio en caliente de procesadores y memoria, y las actualizaciones dinámicas del kernel sin reiniciar el sistema. Si bien aprovecha en gran medida HP-UX, el hipervisor de Integrity VM es en realidad un híbrido que se ejecuta directamente sobre el hardware mientras se ejecutan las máquinas virtuales. Se desaconseja encarecidamente ejecutar aplicaciones HP-UX normales en un host Integrity VM, ya que Integrity VM implementa su propia gestión de memoria, planificación y políticas de E/S que están optimizadas para máquinas virtuales y no son tan efectivas para aplicaciones normales. HPE también ofrece una partición más rígida de sus sistemas Integrity y HP9000 mediante las tecnologías VPAR y nPar . La primera ofrece partición de recursos compartidos, mientras que la segunda proporciona un aislamiento completo de E/S y procesamiento. La flexibilidad del entorno de servidor virtual (VSE) ha propiciado su uso más frecuente en implementaciones más recientes.
Aunque Solaris siempre ha sido el único sistema operativo de dominio invitado oficialmente compatible con Sun/Oracle en su hipervisor Logical Domains , a finales de 2006, Linux (Ubuntu y Gentoo) y FreeBSD se han portado para ejecutarse sobre el hipervisor (y pueden ejecutarse simultáneamente en el mismo procesador, como sistemas operativos invitados independientes totalmente virtualizados). Wind River "Carrier Grade Linux" también se ejecuta en el hipervisor de Sun. [ 13 ] La virtualización completa en procesadores SPARC resultó sencilla: desde su inicio a mediados de la década de 1980, Sun mantuvo deliberadamente la arquitectura SPARC libre de artefactos que hubieran impedido la virtualización. (Compárese con la virtualización en procesadores x86 a continuación). [ 14 ]
Se han observado tendencias similares en las plataformas de servidores x86/x86-64, donde proyectos de código abierto como Xen han liderado los esfuerzos de virtualización. Esto incluye hipervisores basados en núcleos Linux y Solaris, así como núcleos personalizados. Dado que estas tecnologías abarcan desde grandes sistemas hasta equipos de escritorio, se describen en la siguiente sección.
Sistemas x86
La virtualización x86 se introdujo en la década de 1990, y su emulación se incluyó en Bochs . [ 15 ] Intel y AMD lanzaron sus primeros procesadores x86 con virtualización de hardware en 2005 con Intel VT-x (nombre en clave Vanderpool) y AMD-V (nombre en clave Pacifica).
Un enfoque alternativo requiere modificar el sistema operativo invitado para que realice una llamada al sistema del hipervisor subyacente, en lugar de ejecutar instrucciones de E/S de máquina que el hipervisor simula. Esto se denomina paravirtualización en Xen , "hiperllamada" en Parallels Workstation y "código DIAGNOSE" en IBM VM . Algunos microkernels, como Mach y L4 , son lo suficientemente flexibles como para permitir la paravirtualización de sistemas operativos invitados.
Sistemas embebidos
Los hipervisores integrados , dirigidos a sistemas embebidos y ciertos entornos de sistemas operativos en tiempo real (RTOS), se diseñan con requisitos diferentes en comparación con los sistemas de escritorio y empresariales, incluyendo robustez, seguridad y capacidades en tiempo real . La naturaleza de recursos limitados de múltiples sistemas embebidos, especialmente los sistemas móviles alimentados por batería, impone un requisito adicional de tamaño de memoria pequeño y baja sobrecarga. Finalmente, a diferencia de la ubicuidad de la arquitectura x86 en el mundo de las PC, el mundo embebido utiliza una mayor variedad de arquitecturas y entornos menos estandarizados. El soporte para la virtualización requiere protección de memoria (en forma de una unidad de administración de memoria o al menos una unidad de protección de memoria) y una distinción entre modo de usuario y modo privilegiado , lo que excluye a la mayoría de los microcontroladores . Esto deja a x86 , MIPS , ARM y PowerPC como arquitecturas ampliamente implementadas en sistemas embebidos de gama media a alta. [ 16 ]
Dado que los fabricantes de sistemas embebidos suelen tener el código fuente de sus sistemas operativos, tienen menos necesidad de virtualización completa en este ámbito. En cambio, las ventajas de rendimiento de la paravirtualización la convierten generalmente en la tecnología de virtualización preferida. No obstante, ARM y MIPS han incorporado recientemente la compatibilidad con la virtualización completa como opción de propiedad intelectual y la han incluido en sus procesadores y arquitecturas de gama alta más recientes, como ARM Cortex-A15 MPCore y ARMv8 EL2.
Otras diferencias entre la virtualización en entornos de servidor/escritorio y embebidos incluyen requisitos para compartir recursos de manera eficiente entre máquinas virtuales, comunicación entre máquinas virtuales de alto ancho de banda y baja latencia, una visión global de la planificación y la administración de energía, y un control detallado de los flujos de información. [ 17 ]
Implicaciones de seguridad
El uso de tecnología de hipervisor por parte de malware y rootkits que se instalan como un hipervisor por debajo del sistema operativo, conocido como hyperjacking , puede dificultar su detección, ya que el malware podría interceptar cualquier operación del sistema operativo (como la introducción de una contraseña) sin que el software antivirus lo detecte necesariamente (dado que el malware se ejecuta por debajo de todo el sistema operativo). Supuestamente, este concepto se ha implementado en el rootkit de laboratorio SubVirt (desarrollado conjuntamente por Microsoft e investigadores de la Universidad de Michigan [ 18 ] ), así como en el paquete de malware Blue Pill . Sin embargo, otras personas han refutado estas afirmaciones, argumentando que sería posible detectar la presencia de un rootkit basado en hipervisor. [ 19 ]
En 2009, investigadores de Microsoft y la Universidad Estatal de Carolina del Norte demostraron un anti-rootkit de capa de hipervisor llamado Hooksafe que puede proporcionar protección genérica contra rootkits en modo kernel . [ 20 ]
Véase también
Notas
- ↑ super- proviene del latín, que significa "encima", mientras que hyper- proviene del término cognado en griego antiguo ( ὑπέρ- ), que también significa encima o sobre .
Referencias
- 1 2 Goldberg, Robert P. (1973). Principios arquitectónicos para sistemas informáticos virtuales (PDF) (Informe técnico). Universidad de Harvard. ESD-TR-73-105.
- ↑ Bernard Golden (2011). Virtualización para Dummies . pág. 54 .
- ↑ "¿Cómo surgió el término "hipervisor"?" . softwareengineering.stackexchange.com . 28 de abril de 2013.
- ↑ Gary R. Allred (mayo de 1971). Emulación integrada de System/370 bajo OS y DOS (PDF) . Conferencia Conjunta de Computación de Primavera de 1971. Vol. 38. AFIPS Press. pág. 164. doi : 10.1109/AFIPS.1971.58 . Consultado el 12 de junio de 2022 .
- ↑ Steinberg, Udo; Kauer, Bernhard (2010). "NOVA: Una arquitectura de virtualización segura basada en microhipervisor" (PDF) . Actas de la Conferencia Europea de Sistemas Informáticos de la ACM de 2010 (EuroSys 2010) . París, Francia . Consultado el 27 de agosto de 2024 .
- ↑ "Hedron Microkernel" . GitHub . Cyberus Technology . Consultado el 27 de agosto de 2024 .
- ↑ "Cloud Hypervisor" . GitHub . Proyecto Cloud Hypervisor . Consultado el 27 de agosto de 2024 .
- ↑ Meier, Shannon (2008). "IBM Systems Virtualization: Servers, Storage, and Software" (PDF) . pp. 2, 15, 20. Recuperado el 22 de diciembre de 2015 .
- ↑ Dexter, Michael. "Hands-on bhyve" . CallForTesting.org . Consultado el 24 de septiembre de 2013 .
- ↑ Graziano, Charles (2011). Análisis de rendimiento de los hipervisores Xen y KVM para alojar el proyecto Xen Worlds (tesis de maestría). Universidad Estatal de Iowa. doi : 10.31274/etd-180810-2322 . hdl : 20.500.12876/26405 . Consultado el 16 de octubre de 2022 .
- ↑ Véase Historia de CP/CMS para la simulación de hardware virtual en el desarrollo del System/370.
- ↑ Loftus, Jack (19 de diciembre de 2005). "La virtualización Xen se está convirtiendo rápidamente en la 'aplicación estrella' de código abierto"." . TechTarget . Consultado el 26 de octubre de 2015 .
- ↑ "Wind River respaldará el innovador procesador multihilo de próxima generación UltraSPARC T1 de Sun" . Sala de prensa de Wind River (Comunicado de prensa). Alameda, California. 1 de noviembre de 2006. Archivado del original el 10 de noviembre de 2006. Consultado el 26 de octubre de 2015 .
- ↑ Fritsch, Lothar; Husseiki, Rani; Alkassar, Ammar. Tecnologías complementarias y alternativas a la computación confiable (TC-Erg./-A.), Parte 1, Estudio realizado por encargo de la Oficina Federal Alemana de Seguridad de la Información (BSI) (PDF) (Informe). Archivado del original (PDF) el 7 de junio de 2020. Recuperado el 28 de febrero de 2011 .
- ↑ "Introducción a Bochs" . bochs.sourceforge.io . Consultado el 17 de abril de 2023 .
- ↑ Strobl, Marius (2013). Virtualización para sistemas embebidos fiables . Múnich: GRIN Publishing GmbH. págs. 5–6 . ISBN 978-3-656-49071-5. Consultado el 7 de marzo de 2015 .
- ↑ Gernot Heiser (abril de 2008). "El papel de la virtualización en los sistemas embebidos" . Actas del 1er Taller sobre Aislamiento e Integración en Sistemas Embebidos (IIES'08) . págs. 11-16 . Archivado del original el 21 de marzo de 2012. Recuperado el 8 de abril de 2009 .
- ↑ "SubVirt: Implementación de malware con máquinas virtuales" (PDF) . Universidad de Michigan , Microsoft . 3 de abril de 2006. Consultado el 15 de septiembre de 2008 .
- ↑ "Desmintiendo el mito de la píldora azul" . Virtualization.info. 11 de agosto de 2006. Archivado del original el 14 de febrero de 2010. Consultado el 10 de diciembre de 2010 .
- ↑ Wang, Zhi; Jiang, Xuxian; Cui, Weidong; Ning, Peng (11 de agosto de 2009). "Contrarrestando los rootkits del kernel con protección ligera mediante hooks". Actas de la 16.ª conferencia ACM sobre seguridad informática y de comunicaciones (PDF) . CCS '09. Chicago, Illinois, EE. UU.: ACM . págs. 545–554 . CiteSeerX 10.1.1.147.9928 . doi : 10.1145/1653662.1653728 . ISBN 978-1-60558-894-0. S2CID 3006492 . Consultado el 11 de noviembre de 2009 .
Enlaces externos
- Hipervisores y máquinas virtuales: Perspectivas de implementación en la arquitectura x86
- Comparación del rendimiento de los hipervisores , VMware
- Servidores (informática)
- Software de virtualización