Un hipervisor (o monitor de máquina virtual , VMM , virtualizador ) es una especie de emulador ; es software , firmware o hardware de computadora que crea y ejecuta máquinas virtuales . Una computadora en la que un hipervisor ejecuta una o más máquinas virtuales se denomina máquina host y cada máquina virtual se denomina máquina invitada . El hipervisor presenta a los sistemas operativos invitados una plataforma operativa virtualy gestiona la ejecución de los sistemas operativos invitados. Varias instancias de una variedad de sistemas operativos pueden compartir los recursos de hardware virtualizados: por ejemplo, las instancias de Linux , Windows y macOS pueden ejecutarse en una sola máquina física x86 . Esto contrasta con la virtualización a nivel de sistema operativo , donde todas las instancias (generalmente llamadas contenedores ) deben compartir un solo kernel, aunque los sistemas operativos invitados pueden diferir en el espacio de usuario , como diferentes distribuciones de Linux con el mismo kernel.
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, [1] con hiper- usado como una variante más fuerte de super- . [a] El término data de alrededor de 1970; [2] en el sistema CP / CMS (1967) anterior, se utilizó en su lugar el término Programa de control .
Clasificación
En su artículo de 1974, Requisitos formales para arquitecturas de tercera generación virtualizables , Gerald J. Popek y Robert P. Goldberg clasificaron dos tipos de hipervisor: [3]
- Hipervisores de tipo 1, nativos o bare-metal
- Estos hipervisores se ejecutan directamente en el hardware del host para controlar el hardware y administrar los sistemas operativos invitados. Por esta razón, a veces se les llama hipervisores bare metal . Los primeros hipervisores, que IBM desarrolló en la década de 1960, fueron hipervisores nativos. [4] Estos incluían el software de prueba SIMMON y el sistema operativo CP / CMS (el predecesor del z / VM de IBM ). Los equivalentes modernos incluyen AntsleOS, [5] Microsoft Hyper-V y el software del sistema Xbox One , Nutanix AHV , XCP-ng , Oracle VM Server para SPARC , Oracle VM Server para x86 , POWER Hypervisor [6] y VMware ESXi (anteriormente ESX) y Xen .
- Hipervisores alojados o de tipo 2
- Estos hipervisores se ejecutan en un sistema operativo (SO) convencional al igual que lo hacen otros programas informáticos. Un sistema operativo invitado se ejecuta como un proceso en el host. Los hipervisores de tipo 2 abstraen los sistemas operativos invitados del sistema operativo host. Parallels Desktop para Mac , QEMU , VirtualBox , VMware Player y VMware Workstation son ejemplos de hipervisores de tipo 2.
La distinción entre estos dos tipos no siempre es clara. Por ejemplo, la máquina virtual basada en kernel (KVM) de Linux y el bhyve de FreeBSD son módulos del kernel [7] que convierten efectivamente el sistema operativo host en un hipervisor de tipo 1. [8] Al mismo tiempo, dado que las distribuciones de Linux y FreeBSD siguen siendo sistemas operativos de propósito general, con aplicaciones que compiten entre sí por los recursos de VM, KVM y bhyve también pueden clasificarse como hipervisores de tipo 2. [9]
Orígenes del mainframe
Los primeros hipervisores que proporcionaron virtualización completa fueron la herramienta de prueba SIMMON y el sistema único de investigación CP-40 de IBM , que comenzó a utilizarse en producción en enero de 1967 y se convirtió en la primera versión del sistema operativo CP / CMS de IBM . CP-40 se ejecutó en un S / 360-40 que se modificó en el IBM Cambridge Scientific Center para admitir la traducción dinámica de direcciones, una característica que permitió la virtualización. Antes de este momento, el hardware de la computadora solo se había virtualizado en la medida en que permitiera que múltiples aplicaciones de usuario se ejecutaran simultáneamente, como en CTSS e IBM M44 / 44X . Con CP-40, el estado de supervisor del hardware también se virtualizó, lo que permitió que varios sistemas operativos se ejecutaran simultáneamente en contextos de máquina virtual separados .
Los programadores pronto implementaron CP-40 (como CP-67 ) para IBM System / 360-67 , el primer sistema informático de producción capaz de virtualización completa . IBM envió esta máquina por primera vez 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 kernel, incluida la E / S y el manejo de interrupciones. (Tenga en cuenta que su sistema operativo "oficial", el desafortunado TSS / 360 , no empleaba la virtualización completa.) Tanto el CP-40 como el CP-67 comenzaron a utilizarse 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 construir sistemas robustos de tiempo compartido para sus computadoras mainframe . Al ejecutar varios sistemas operativos al mismo tiempo, el hipervisor aumentó la solidez y la estabilidad del sistema: incluso si un sistema operativo fallaba, los demás continuarían funcionando sin interrupciones. De hecho, esto incluso permitió que versiones beta o experimentales de sistemas operativos —o incluso de nuevo hardware [10] — se implementaran y depuraran, 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 agregó en el anuncio de la función avanzada de agosto de 1972. La virtualización se ha incluido en todos los sistemas sucesores (todos los mainframes de IBM de hoy en día, como la línea zSeries , conservan la compatibilidad con 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 brindó soporte para esta versión (aunque todavía se distribuyó en forma de código fuente para varias versiones). VM significa Máquina Virtual , enfatizando que todas, y no solo algunas, las interfaces de hardware están virtualizadas. Tanto VM como CP / CMS disfrutaron de una aceptación temprana 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 modernos de código abierto. Sin embargo, en una serie de disputadas y amargas batallas, el tiempo compartido perdió frente al procesamiento por lotes a través de las luchas políticas internas de IBM, y VM siguió siendo el "otro" sistema operativo de mainframe de IBM durante décadas, perdiendo ante MVS . Se disfrutó de un resurgimiento de la popularidad y el apoyo de 2000 como el z / VM producto, por ejemplo, como la plataforma para Linux en IBM Z .
Como se mencionó anteriormente, el programa de control de VM incluye un controlador de llamadas de hipervisor que intercepta las instrucciones DIAG ("Diagnosticar", código de operación x'83 ') utilizadas dentro de una máquina virtual. Esto proporciona una ejecución no virtualizada de ruta rápida de acceso al sistema de archivos y otras operaciones (DIAG es una instrucción privilegiada dependiente del modelo, no se usa en la programación normal y, por lo tanto, no está virtualizada. sistema operativo "host"). Cuando se implementó por primera vez en la versión 3.1 de CP / CMS , este uso de DIAG proporcionó una interfaz de sistema operativo que era análoga a la instrucción System / 360 Supervisor Call (SVC), pero que no requería alterar o extender la virtualización del sistema de SVC.
En 1985 IBM introdujo el hipervisor PR / SM para administrar 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 similares a Unix: [11]
- Expandiendo las capacidades de hardware, permitiendo que cada máquina realice más trabajo simultáneo
- Esfuerzos para controlar los costos y simplificar la administración mediante la consolidación de servidores
- La necesidad de controlar grandes instalaciones de clústeres y multiprocesadores , por ejemplo, en granjas de servidores y granjas de renderizado
- La seguridad, confiabilidad e independencia mejoradas del dispositivo posibles de las arquitecturas de hipervisor
- La capacidad de ejecutar aplicaciones complejas que dependen del sistema operativo en diferentes entornos de hardware o sistema operativo
Los principales proveedores de Unix, incluidos HP , IBM , SGI y Sun Microsystems , han estado vendiendo hardware virtualizado desde antes de 2000. Por lo general, estos han sido sistemas grandes y costosos (en el rango multimillonario en el extremo superior), aunque la virtualización también ha estado disponible. en algunos sistemas de gama baja y media, como los servidores pSeries de IBM , las máquinas de la serie HP Superdome y los servidores CoolThreads de la serie T de Sun / Oracle .
Aunque Solaris siempre ha sido el único SO de dominio invitado admitido oficialmente por Sun / Oracle en su hipervisor Logical Domains , a finales de 2006[actualizar], Linux (Ubuntu y Gentoo) y FreeBSD se han adaptado para ejecutarse en la parte superior del hipervisor (y todos 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. [12] La virtualización completa en los 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. (Compare con la virtualización en procesadores x86 a continuación). [13]
HPE proporciona HP Integrity Virtual Machines (Integrity VM) para alojar múltiples sistemas operativos en sus sistemas Integrity con tecnología 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 Integrity VM que permite aprovechar muchas funciones importantes de HP-UX y proporciona una diferenciación importante entre esta plataforma y otras plataformas de productos básicos, como el intercambio de procesador, el intercambio de memoria y el kernel dinámico. actualizaciones sin reiniciar el sistema. Si bien aprovecha en gran medida HP-UX, el hipervisor Integrity VM es en realidad un híbrido que se ejecuta sin sistema operativo mientras los invitados se ejecutan. Se desaconseja mucho ejecutar aplicaciones HP-UX normales en un host Integrity VM, [¿ por quién? ] porque Integrity VM implementa sus propias políticas de administración de memoria, programación y E / S que están ajustadas para máquinas virtuales y no son tan efectivas para aplicaciones normales. HPE también proporciona particiones más rígidas de sus sistemas Integrity y HP9000 a través de la tecnología VPAR y nPar , la primera ofrece partición de recursos compartidos y la segunda ofrece aislamiento de procesamiento y E / S completo. La flexibilidad del entorno de servidor virtual (VSE) ha dado paso a su uso con mayor frecuencia en implementaciones más nuevas. [ cita requerida ]
IBM proporciona tecnología de partición de virtualización conocida como partición lógica (LPAR) en los sistemas System / 390 , zSeries , pSeries e iSeries . Para Power Systems de IBM, el POWER Hypervisor (PHYP) es un hipervisor nativo (bare-metal) en firmware y proporciona aislamiento entre LPAR. La capacidad del procesador se proporciona a las LPAR de forma dedicada o de forma autorizada, donde la capacidad no utilizada se aprovecha y puede reasignarse a cargas de trabajo ocupadas. Los grupos de LPAR pueden tener su capacidad de procesador administrada como si estuvieran en un "grupo" - IBM se refiere a esta capacidad como Grupos de Procesadores Compartidos Múltiples (MSPP) y la implementa en servidores con el procesador POWER6 . Las asignaciones de capacidad LPAR y MSPP se pueden cambiar dinámicamente. La memoria se asigna a cada LPAR (en el inicio de LPAR o dinámicamente) y está controlada por dirección por el POWER Hypervisor. Para el direccionamiento en modo real por sistemas operativos ( AIX , Linux , IBM i ), los procesadores POWER ( POWER4 en adelante) han diseñado capacidades de virtualización donde se evalúa un desplazamiento de dirección de hardware con el desplazamiento de dirección del SO para llegar a la dirección de memoria física. Los adaptadores de entrada / salida (E / S) pueden ser "propiedad" exclusiva de LPAR o compartidos por LPAR a través de una partición de dispositivo conocida como Servidor de E / S virtual (VIOS). Power Hypervisor proporciona altos niveles de confiabilidad, disponibilidad y capacidad de servicio (RAS) al facilitar la adición / reemplazo en caliente de muchas partes (dependiendo del modelo: procesadores, memoria, adaptadores de E / S, sopladores, unidades de energía, discos, controladores del sistema, etc. )
Se han producido tendencias similares con las plataformas de servidor x86 / x86-64, donde proyectos de código abierto como Xen han liderado los esfuerzos de virtualización. Estos incluyen hipervisores construidos en kernels de Linux y Solaris, así como kernels personalizados. Dado que estas tecnologías abarcan desde grandes sistemas hasta computadoras de escritorio, se describen en la siguiente sección.
sistemas x86
A partir de 2005, los proveedores de CPU han agregado asistencia de virtualización de hardware a sus productos, por ejemplo: Intel VT-x (nombre en código Vanderpool) y AMD-V (nombre en código Pacifica).
Un enfoque alternativo requiere modificar el sistema operativo invitado para realizar llamadas del sistema al hipervisor, en lugar de ejecutar las instrucciones de E / S de la máquina que simula el hipervisor. Esto se denomina paravirtualización en Xen , una "hipercall" en Parallels Workstation y un "código DIAGNOSTICAR" en la VM de IBM . Todos son realmente lo mismo, una llamada del sistema al hipervisor subyacente. Algunos micronúcleos como Mach y L4 son lo suficientemente flexibles como para que sea posible la " paravirtualización " de los sistemas operativos invitados.
Sistemas embebidos
Los hipervisores integrados , dirigidos a sistemas integrados y ciertos entornos de sistemas operativos en tiempo real (RTOS), están diseñados con diferentes requisitos en comparación con los sistemas de escritorio y empresariales, incluida la solidez, la seguridad y las capacidades en tiempo real . La naturaleza de recursos limitados de muchos sistemas integrados, especialmente los sistemas móviles alimentados por batería, impone un requisito adicional para un tamaño de memoria pequeño y una sobrecarga baja. Finalmente, en contraste con la ubicuidad de la arquitectura x86 en el mundo de las PC, el mundo integrado utiliza una variedad más amplia de arquitecturas y entornos menos estandarizados. El soporte para la virtualización requiere protección de la 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 el modo de usuario y el modo privilegiado , lo que excluye a la mayoría de los microcontroladores . Esto todavía deja x86 , MIPS , ARM y PowerPC como arquitecturas ampliamente implementadas en sistemas integrados de gama media a alta. [14]
Dado que los fabricantes de sistemas integrados suelen tener el código fuente de sus sistemas operativos, tienen menos necesidad de virtualización completa en este espacio. En cambio, las ventajas de rendimiento de la paravirtualización hacen que esta sea la tecnología de virtualización preferida. Sin embargo, ARM y MIPS han agregado recientemente soporte de virtualización completo como una opción de IP y lo han incluido en sus últimos procesadores de alta gama y versiones de arquitectura, como ARM Cortex-A15 MPCore y ARMv8 EL2.
Otras diferencias entre la virtualización en el servidor / escritorio y los entornos integrados incluyen los requisitos para el uso compartido eficiente de recursos entre máquinas virtuales, comunicación entre máquinas virtuales de alto ancho de banda y baja latencia, una visión global de la programación y la administración de energía, y un control detallado de la información. fluye. [15]
Implicaciones de seguridad
El uso de la tecnología de hipervisor por parte del malware y los rootkits que se instalan como hipervisor debajo del sistema operativo, conocido como hyperjacking , puede dificultar su detección porque el malware podría interceptar cualquier operación del sistema operativo (como que alguien ingrese una contraseña) sin el software anti-malware necesariamente lo detecta (ya que el malware se ejecuta debajo de todo el sistema operativo). La implementación del concepto supuestamente ocurrió en el rootkit de laboratorio SubVirt (desarrollado conjuntamente por investigadores de Microsoft y la Universidad de Michigan [16] ), así como en el paquete de malware Blue Pill . Sin embargo, otras afirmaciones han sido cuestionadas por otros que afirman que sería posible detectar la presencia de un rootkit basado en hipervisor. [17]
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 . [18]
Notas
- ^ super- es del latín, que significa "arriba", mientras que hiper- es deltérmino afín en griego antiguo (ὑπέρ), que también significa arriba o arriba .
Referencias
- ^ Bernard Golden (2011). Virtualización para principiantes . pag. 54 .
- ^ "¿Cómo se empezó a utilizar el término" hipervisor "? .
- ^ Popek, Gerald J .; Goldberg, Robert P. (1974). "Requisitos formales para arquitecturas virtualizables de tercera generación". Comunicaciones de la ACM . 17 (7): 412–421. doi : 10.1145 / 361011.361073 .
- ^ Meier, Shannon (2008). "Virtualización de sistemas IBM: servidores, almacenamiento y software" (PDF) . págs. 2, 15, 20 . Consultado el 22 de diciembre de 2015 .
- ^ "Arquitectura antsleOS - antsle Docs" . docs.antsle.com . Consultado el 28 de junio de 2018 .
- ^ https://www.ibm.com/support/knowledgecenter/POWER6/iphb2/iphb2hypervisor.htm
- ^ Dexter, Michael. "Práctica bhyve" . CallForTesting.org . Consultado el 24 de septiembre de 2013 .
- ^ Graziano, Charles (2011). "Un análisis de rendimiento de los hipervisores Xen y KVM para alojar el proyecto Xen Worlds" . Tesis y Disertaciones de Postgrado . Universidad Estatal de Iowa . Consultado el 29 de enero de 2013 .
- ^ Pariseau, Beth (15 de abril de 2011). "KVM reaviva el debate de hipervisor de tipo 1 frente a tipo 2" . SearchServerVirtualization . TechTarget . Consultado el 29 de enero de 2013 .
- ^ Ver Historia de CP / CMS para simulación de hardware virtual en el desarrollo del Sistema / 370
- ^ Loftus, Jack (19 de diciembre de 2005). "Virtualización Xen convirtiendo rápidamente en código abierto 'aplicación asesina ' " . TechTarget . Consultado el 26 de octubre de 2015 .
- ^ "Wind River para respaldar el revolucionario procesador de próxima generación de subprocesos múltiples UltraSPARC T1 de Sun" . Sala de prensa de Wind River (Comunicado de prensa). Alameda, California. 1 de noviembre de 2006 . Consultado el 26 de octubre de 2015 .
- ^ Fritsch, Lothar; Husseiki, Rani; Alkassar, Ammar. Tecnologías complementarias y alternativas a la informática de confianza (TC-Erg./-A.), Parte 1, Un estudio en nombre de la Oficina Federal Alemana para la Seguridad de la Información (BSI) (PDF) (Informe).
- ^ Strobl, Marius (2013). Virtualización para sistemas integrados confiables . 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" . Proc. 1er Taller de Aislamiento e Integración en Sistemas Embebidos (IIES'08) . págs. 11-16. Archivado desde el original el 21 de marzo de 2012 . Consultado 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 .
- ^ "Desmentir el mito de la píldora azul" . Virtualization.info. 11 de agosto de 2006 . Consultado el 10 de diciembre de 2010 .
- ^ Wang, Zhi; Jiang, Xuxian; Cui, Weidong; Ning, Peng (11 de agosto de 2009). Contrarrestar los rootkits de kernel con protección de gancho ligero (PDF) . Actas de la 16ª Conferencia de la ACM sobre seguridad informática y de comunicaciones . CCS '09. Chicago, Illinois, Estados Unidos: ACM . CiteSeerX 10.1.1.147.9928 . doi : 10.1145 / 1653662.1653728 . ISBN 978-1-60558-894-0. Consultado el 11 de noviembre de 2009 .
enlaces externos
- Hipervisores y máquinas virtuales: información sobre la implementación de la arquitectura x86
- Una comparación de rendimiento de hipervisores , VMware