Una máquina virtual de sistema (también llamada SYS-VM [ cita requerida ] ) es una máquina virtual (VM) que proporciona una plataforma de sistema completa y admite la ejecución de un sistema operativo (OS) completo. [1] Estas suelen emulan una arquitectura existente y se construyen con el propósito de proporcionar una plataforma para ejecutar programas donde el hardware real no está disponible para su uso (por ejemplo, ejecutar en plataformas obsoletas), o de tener múltiples instancias de máquinas virtuales que conduzcan a un uso más eficiente de los recursos informáticos, tanto en términos de consumo de energía como de rentabilidad (conocido como virtualización de hardware , la clave para un entorno de computación en la nube ), o ambos. Una VM fue definida originalmente por Popek y Goldberg como "un duplicado aislado y eficiente de una máquina real".
Máquinas virtuales del sistema
Ventajas de la máquina virtual del sistema:
- Pueden coexistir varios entornos de SO en el mismo disco duro principal, con una partición virtual que permite compartir archivos generados en el sistema operativo "host" o en el entorno virtual "invitado". Las instalaciones de software complementarias, la conectividad inalámbrica y la replicación remota, como la impresión y el fax, se pueden generar en cualquiera de los sistemas operativos invitados o host. Independientemente del sistema, todos los archivos se almacenan en el disco duro del SO host.
- El aprovisionamiento de aplicaciones, el mantenimiento, la alta disponibilidad y la recuperación ante desastres son inherentes al software de máquina virtual seleccionado.
- Puede proporcionar entornos de hardware emulados diferentes de la arquitectura del conjunto de instrucciones (ISA) del host , a través de la emulación o mediante el uso de compilación justo a tiempo .
Las principales desventajas de las máquinas virtuales son:
- Una máquina virtual es menos eficiente que una máquina real cuando accede al disco duro del host indirectamente.
- Cuando varias máquinas virtuales se ejecutan simultáneamente en el disco duro del host real, las máquinas virtuales adjuntas pueden presentar un rendimiento variable o inestable (velocidad de ejecución y protección contra malware). Esto depende de la carga de datos impuesta al sistema por otras máquinas virtuales, a menos que el software de la máquina virtual seleccionada proporcione aislamiento temporal entre las máquinas virtuales .
- Las protecciones contra malware para máquinas virtuales no son necesariamente compatibles con el "host" y pueden requerir software independiente.
Con frecuencia se utilizan varias máquinas virtuales que ejecutan su propio sistema operativo invitado para la consolidación de servidores a fin de evitar interferencias de máquinas virtuales independientes en la misma plataforma de máquina real.
El deseo de ejecutar múltiples sistemas operativos fue la motivación inicial para las máquinas virtuales, de modo de permitir el uso compartido del tiempo entre varios sistemas operativos monotarea. En algunos aspectos, una máquina virtual de sistema puede considerarse una generalización del concepto de memoria virtual que la precedió históricamente. CP/CMS de IBM , los primeros sistemas que permitieron la virtualización completa , implementaron el uso compartido del tiempo al proporcionar a cada usuario un sistema operativo monousuario, el CMS . A diferencia de la memoria virtual, una máquina virtual de sistema permitía al usuario escribir instrucciones privilegiadas en su código. Este enfoque tenía ciertas ventajas, como agregar dispositivos de entrada/salida no permitidos por el sistema estándar. [2]
A medida que la tecnología evoluciona la memoria virtual con fines de virtualización, se pueden aplicar nuevos sistemas de sobreasignación de memoria para administrar el uso compartido de memoria entre múltiples máquinas virtuales en un sistema operativo de computadora real. Puede ser posible compartir "páginas de memoria" que tengan contenidos idénticos entre múltiples máquinas virtuales que se ejecutan en la misma máquina física, lo que puede dar como resultado el mapeo de las mismas a la misma página física mediante una técnica conocida como Kernel SamePage Merging . Esto es particularmente útil para páginas de solo lectura, como las que contienen segmentos de código; en particular, ese sería el caso de múltiples máquinas virtuales que ejecutan el mismo software o software similar, bibliotecas de software, servidores web, componentes de middleware, etc. Los sistemas operativos invitados no necesitan ser compatibles con el hardware del host, lo que hace posible ejecutar diferentes sistemas operativos en la misma computadora (por ejemplo, Microsoft Windows , Linux o versiones anteriores de un sistema operativo) para admitir software futuro.
El uso de máquinas virtuales para soportar sistemas operativos invitados independientes es popular en lo que respecta a los sistemas integrados . Un uso típico sería ejecutar un sistema operativo en tiempo real simultáneamente con un sistema operativo complejo preferido, como Linux o Windows. Otro uso sería para software nuevo y no probado que aún se encuentra en la etapa de desarrollo, de modo que se ejecute dentro de un entorno aislado . Las máquinas virtuales tienen otras ventajas para el desarrollo de sistemas operativos, y pueden incluir un acceso de depuración mejorado y reinicios más rápidos. [3]
Técnicas
Se utilizan diferentes técnicas de virtualización, en función del uso deseado. La ejecución nativa se basa en la virtualización directa del hardware subyacente, por lo que proporciona múltiples "instancias" de la misma arquitectura en la que se basa una máquina real, capaces de ejecutar sistemas operativos completos. Algunas máquinas virtuales también pueden emular diferentes arquitecturas y permitir la ejecución de aplicaciones de software y sistemas operativos escritos para otra CPU o arquitectura. La virtualización a nivel de sistema operativo permite que los recursos de una computadora se particionen a través del soporte del kernel para múltiples instancias de espacio de usuario aisladas , que generalmente se denominan contenedores y pueden verse y sentirse como máquinas reales para los usuarios finales . Algunas arquitecturas de computadora son capaces de virtualización asistida por hardware , lo que permite una virtualización completa eficiente mediante el uso de capacidades de hardware específicas de virtualización, principalmente de las CPU host.
Virtualización del hardware subyacente (ejecución nativa)
Este enfoque se describe como virtualización completa del hardware y se puede implementar utilizando un hipervisor de tipo 1 o de tipo 2 : un hipervisor de tipo 1 se ejecuta directamente en el hardware y un hipervisor de tipo 2 se ejecuta en otro sistema operativo, como Linux o Windows . Cada máquina virtual puede ejecutar cualquier sistema operativo compatible con el hardware subyacente. De este modo, los usuarios pueden ejecutar dos o más sistemas operativos "invitados" diferentes simultáneamente, en computadoras virtuales "privadas" separadas.
El sistema pionero que utilizó este concepto fue el CP-40 de IBM , la primera versión (1967) del CP/CMS (1967-1972) de IBM y el precursor de la familia VM de IBM (1972-presente). Con la arquitectura VM, la mayoría de los usuarios ejecutan un sistema operativo de computación interactiva de un solo usuario relativamente simple, CMS , como un "invitado" sobre el programa de control VM ( VM-CP ). Este enfoque mantuvo el diseño de CMS simple, como si estuviera ejecutándose solo; el programa de control proporciona silenciosamente servicios de gestión de recursos y multitarea "detrás de escena". Además de la comunicación CMS y otras tareas del sistema se realizan mediante VM multitarea (RSCS, GCS, TCP/IP, UNIX), y los usuarios pueden ejecutar cualquiera de los otros sistemas operativos de IBM, como MVS , incluso un nuevo CP o ahora z/OS . Incluso el simple CMS podría ejecutarse en un entorno de subprocesos (LISTSERV, TRICKLE). z/VM es la versión actual de VM y se utiliza para dar soporte a cientos o miles de máquinas virtuales en un mainframe determinado. Algunas instalaciones utilizan Linux en IBM Z para ejecutar servidores web , donde Linux se ejecuta como sistema operativo dentro de muchas máquinas virtuales.
La virtualización completa es particularmente útil en el desarrollo de sistemas operativos, cuando se puede ejecutar código nuevo experimental al mismo tiempo que versiones anteriores y más estables, cada una en una máquina virtual separada. El proceso puede incluso ser recursivo : IBM depuró nuevas versiones de su sistema operativo de máquina virtual, VM , en una máquina virtual que se ejecutaba bajo una versión anterior de VM, e incluso utilizó esta técnica para simular nuevo hardware. [NB 1]
La arquitectura del conjunto de instrucciones x86 estándar que se utiliza en las PC modernas no cumple con los requisitos de virtualización de Popek y Goldberg . Cabe destacar que no existe un modo de ejecución en el que siempre se capturen todas las instrucciones de máquina sensibles, lo que permitiría la virtualización por instrucción.
A pesar de estas limitaciones, varios paquetes de software han logrado proporcionar virtualización en la arquitectura x86 , aunque la recompilación dinámica de código privilegiado, tal como lo implementó VMware por primera vez , implica cierta sobrecarga de rendimiento en comparación con una máquina virtual que se ejecuta en una arquitectura virtualizable de forma nativa, como IBM System/370 o Motorola MC68020 . Hasta ahora, varios otros paquetes de software como Virtual PC , VirtualBox , Parallels Workstation y Virtual Iron logran implementar la virtualización en hardware x86.
Intel y AMD han introducido características en sus procesadores x86 para permitir la virtualización en hardware .
Además de la virtualización de los recursos de una sola máquina, se pueden combinar varios nodos independientes en un clúster y acceder a ellos como una única máquina NUMA virtual . [4]
Emulación de un sistema no nativo
Las máquinas virtuales también pueden desempeñar el papel de un emulador , permitiendo ejecutar aplicaciones de software y sistemas operativos escritos para otra arquitectura de procesador de computadora .
Virtualización a nivel de sistema operativo
La virtualización a nivel de sistema operativo es una tecnología de virtualización de servidores que virtualiza servidores en una capa de sistema operativo (núcleo). Se puede considerar como una partición: un único servidor físico se divide en varias particiones pequeñas (también llamadas entornos virtuales [VE], servidores privados virtuales [VPS], invitados, zonas, etc.); cada una de estas particiones se ve y se siente como un servidor real, desde el punto de vista de sus usuarios.
Por ejemplo, Solaris Zones admite varios sistemas operativos invitados que se ejecutan bajo el mismo sistema operativo, como Solaris 10. [5] Los sistemas operativos invitados pueden usar el mismo nivel de kernel con la misma versión del sistema operativo, o pueden ser una copia separada del sistema operativo con una versión de kernel diferente utilizando Solaris Kernel Zones. [6] Las zonas nativas de Solaris también requieren que el sistema operativo host sea una versión de Solaris; no se admiten otros sistemas operativos de otros fabricantes. [ cita requerida ] Sin embargo, se necesitarían zonas de marca Solaris para tener otros sistemas operativos como zonas. [ cita requerida ]
Otro ejemplo son las particiones de carga de trabajo del sistema (WPAR), introducidas en la versión 6.1 del sistema operativo IBM AIX. Las WPAR del sistema son particiones de software que se ejecutan en una instancia del entorno global del sistema operativo AIX.
La arquitectura a nivel de sistema operativo tiene una sobrecarga baja que ayuda a maximizar el uso eficiente de los recursos del servidor. La virtualización introduce solo una sobrecarga insignificante y permite ejecutar cientos de servidores privados virtuales en un solo servidor físico. Por el contrario, enfoques como la virtualización completa (como VMware ) y la paravirtualización (como Xen o UML ) no pueden lograr tal nivel de densidad, debido a la sobrecarga de ejecutar múltiples núcleos. Desde el otro lado, la virtualización a nivel de sistema operativo no permite ejecutar diferentes sistemas operativos (es decir, diferentes núcleos), aunque son posibles diferentes bibliotecas, distribuciones, etc. Se utilizan diferentes técnicas de virtualización, según el uso deseado. La ejecución nativa se basa en la virtualización directa del hardware subyacente, por lo que proporciona múltiples "instancias" de la misma arquitectura en la que se basa una máquina real, capaces de ejecutar sistemas operativos completos. Algunas máquinas virtuales también pueden emular diferentes arquitecturas y permitir la ejecución de aplicaciones de software y sistemas operativos escritos para otra CPU o arquitectura. La virtualización a nivel de sistema operativo permite que los recursos de una computadora se particionen mediante el soporte del núcleo para múltiples instancias de espacio de usuario aisladas, que generalmente se denominan contenedores y pueden verse y sentirse como máquinas reales para los usuarios finales. Algunas arquitecturas de computadoras son capaces de realizar virtualización asistida por hardware, lo que permite una virtualización completa y eficiente mediante el uso de capacidades de hardware específicas de virtualización, principalmente de las CPU del host.
Hardware habilitado para virtualización
Algunos ejemplos de hardware habilitado para virtualización incluyen los siguientes:
- Alcatel-Lucent 3B20D/3B21D emulado en computadoras comerciales listas para usar con sistema 3B2OE o 3B21E [ aclaración necesaria ]
- Zona de confianza ARM
- gCore (grid-on-chip) de Boston Circuits con 16 núcleos ARC 750D y módulo de virtualización de hardware Time-machine.
- Freescale PowerPC MPC8572 y MPC8641D
- Mainframes IBM System/360 Modelo 67 , System/370 , System/390 y zSeries
- Sistemas de energía IBM
- x86 :
- AMD-V (anteriormente con nombre en código Pacifica)
- Intel VT-x (anteriormente con nombre en código Vanderpool)
- HP vPAR y nPAR basado en células
- Sistemas Multics de GE y Honeywell [ se necesita aclaración ]
- Sistemas Honeywell 200/2000 Liberator que reemplazan los sistemas IBM 14xx
- Honeywell Level 62/64/66 [ cita requerida ]
- Modelos IBM System/360 y System/370 con emuladores que admiten programas para sistemas IBM más antiguos
- Las minicomputadoras Honeywell Level 6 emulaban a sus predecesoras 316/516/716 [ cita requerida ]
- Oracle Corporation (anteriormente Sun Microsystems ) SPARC sun4v ( SPARC M6 , T5 , T4 , T3 , UltraSPARC T1 y T2 ): utilizado por Oracle VM Server para SPARC , también conocido como "Dominios lógicos"
- Las CPU Xerox Sigma 6 se modificaron para emular los sistemas GE/Honeywell 600/6000 [ cita requerida ]
Véase también
Notas
- ^ Consulte Historial de CP/CMS para conocer el uso de máquinas virtuales por parte de IBM para el desarrollo de sistemas operativos y la simulación de nuevo hardware.
Referencias
- ^ "Máquinas virtuales: virtualización frente a emulación". Archivado desde el original el 15 de julio de 2014. Consultado el 11 de marzo de 2011 .
- ^ Smith y Nair, págs. 395-396
- ^ Reinicios de servidores superrápidos: otra razón por la que la virtualización es genial Archivado el 14 de junio de 2006 en Wayback Machine . vmwarez.com (9 de mayo de 2006). Recuperado el 14 de junio de 2013.
- ^ Matthew Chapman y Gernot Heiser. vNUMA: Un multiprocesador de memoria compartida virtual. Actas de la Conferencia técnica anual de USENIX de 2009, San Diego, California, EE. UU., junio de 2009 [1]
- ^ "Descripción general de las zonas de Oracle Solaris". docs.oracle.com . Consultado el 26 de junio de 2015 .
- ^ "Acerca de las zonas del kernel de Oracle Solaris". docs.oracle.com . Consultado el 26 de junio de 2015 .
Lectura adicional
- James E. Smith, Ravi Nair, Virtual Machines: Versatile Platforms For Systems And Processes , Morgan Kaufmann, mayo de 2005, ISBN 1-55860-910-5 , 656 páginas (cubre tanto las máquinas virtuales de procesos como las de sistemas)
- Craig, Iain D. Virtual Machines . Springer , 2006, ISBN 1-85233-969-1 , 269 páginas (cubre únicamente máquinas virtuales de proceso)
Enlaces externos
- La reencarnación de las máquinas virtuales, artículo sobre ACM Queue de Mendel Rosenblum, cofundador de VMware