Hipervisor

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

Un hipervisor (en inglés hypervisor) o monitor de máquina virtual (virtual machine monitor)[1]​ es una capa de software para realizar una virtualización de hardware que permite utilizar, al mismo tiempo, diferentes sistemas operativos (sin modificar o modificados, en el caso de paravirtualización) en una misma computadora.[2][3][4]​ Es una extensión de un término anterior, «supervisor», que se aplicaba a los kernels de los sistemas operativos de computadora.

Historia[editar]

Los hipervisores fueron originalmente desarrollados a finales de 1960 y principios de los años 1970 cuando, para reducir costos, se consolidaban varias computadoras aisladas de diferentes departamentos de la empresa en una sola y más grande —el mainframe— capaz de servir a múltiples sectores. El primer uso dado a estos equipos fue el tiempo compartido para muy distintos usuarios, siempre compartiendo un sistema operativo complejo. Los ingenieros de IBM en Cambridge fueron los primeros en resolver este problema, otorgando a cada usuario una máquina virtual con un sencillo sistema operativo.[5]​ Al correr múltiples sistemas operativos a la vez, el hipervisor permite la consolidación, dando robustez y estabilidad al sistema; aún si un sistema operativo colapsa, los otros continúan trabajando sin interrupción.

Precisamente de estos colapsos de sistemas operativos virtuales derivaba una gran utilidad al momento de depurar pues se contaba con la memoria usada a buen resguardo del hipervisor utilizado.[6]

La primera computadora diseñada específicamente para virtualización fue el mainframe IBM S/360 Modelo 67 en 1964, con el sistema operativo CP-40.[7]​ Esta característica de virtualización ha sido un estándar de la línea que siguió IBM S/370 y sus sucesoras, incluyendo la serie actual.

En 1967 el primer hipervisor es creado por IBM y al año siguiente fue mejorado su desempeño en una segunda versión.[8]​ El año 1972 marca el comienzo del uso comercial de esta tecnología desarrollada por IBM.[9]

Uno de los primeros hipervisores para PC fue Vmware, desarrollado a finales de los años 1990. La arquitectura x86, usada en la mayoría de los sistemas de PC, es particularmente difícil de virtualizar.[10]​ Pero los grandes fabricantes de microprocesadores, como AMD e Intel, desarrollaron extensiones para tratar las partes de la arquitectura x86 que son más difíciles o ineficientes de virtualizar, proporcionando un apoyo adicional al hipervisor por parte del hardware. Esto permite un código de virtualización más simple y un mejor rendimiento para una virtualización completa.

La necesidad actual de consolidar diferentes servidores y de lograr una administración simplificada han hecho renovar el interés en la tecnología de los hipervisores. La inmensa mayoría de los vendedores de sistemas Unix, incluyendo Sun Microsystems, HP, IBM y SGI han estado vendiendo hardware virtualizado desde la década de 2000. Estos sistemas son eficientes pero extremadamente costosos.

Tipos[editar]

Los hipervisores, según como se ejecutan, pueden clasificarse en varios tipos:[11][12][13]

Hipervisor tipo 1[editar]

Monitor de tipo I.

También denominado nativo, unhosted o bare metal (sobre el metal desnudo), es software que se ejecuta directamente sobre el hardware físico, para ofrecer la funcionalidad descrita. Las máquina virtuales se ejecutan sobre él y todos los accesos directos a hardware son controlados por el hipervisor.[12]​ Algunos ejemplos de este tipo son Xen, Kernel-based Virtual Machine (KVM)[14]​, Microsoft Hyper-V, VMware ESXi, Oracle VM Server[15]​.

Hipervisor tipo 2[editar]

Monitor de tipo II.

También denominado hosted, sobre el hardware físico se ejecuta un sistema operativo anfitrión el cual ejecuta el hipervisor que es una aplicación de virtualización que se encarga de ofrecer la funcionalidad descrita. Algunos ejemplos de este tipo son VMware Workstation, Parallels Desktop, VirtualBox, VMware Player, QEMU y Bhyve.

Hipervisor híbrido[editar]

Sobre el hardware se ejecuta un sistema operativo anfitrión y el hipervisor.[12]​ El hipervisor a veces interacciona directamente sobre el hardware pero otras veces usa servicios que le proporciona el sistema operativo anfitrión. Ejemplo de estos sistemas son Microsoft Virtual PC y Microsoft Virtual Server 2005 R2.

Formas de virtualizar[editar]

Las formas en las que el hipervisor realizar su trabajo puede ser:[16][13]

  • Virtualización completa, Virtualización de hardware o Virtualización nativa. El hipervisor simula un hardware suficiente para permitir un sistema operativo no adaptado que es ejecutado de forma aislada. De esta forma pueden virtualizar VMware Workstation, VMware ESXi, VMware vSphere, Virtualbox, Kernel-based Virtual Machine (KVM). Microsoft Hyper-V, Microsoft Virtual Server y Xen[17]​. A veces estos sistemas son asistidos por el hardware aprovechando instrucciones incorporadas a las nuevas generaciones de microprocesadores como las VT-x de Intel o AMD-V de AMD para ejecutar el hipervisor en el máximo nivel de acceso a la CPU (Anillo -1) y los invitados se ejecutan a un nivel inferior (Anillo 0). De esta forma el hipervisor no tiene que emular el anillo 0 para el sistema operativo huésped ni hay que recompilar el sistema operativo huésped para obligar a que se ejecute fuera de anillo. A las máquinas virtuales ejecutadas con asistencia por hardware a veces se las llama HVMs (del inglés Hardware-assisted Virtual Machine). [18]​ Algunos de los sistemas que realizan virtualización completa (ej. Xen[17]​) obligan a usar virtualización asistida por hardware
  • Virtualización parcial o paravirtualización. El hipervisor ofrece un interfaz especial para acceder a los recursos. Esto obliga a que el sistema operativo de la máquina virtual tenga que adaptarse usando llamadas especiales (hypercalls). Es lo que usan Denali, User Mode Linux (en él el núcleo del sistema operativo se transforma en una aplicación a nivel de usuario que emula el hardware y hace de hipervisor). Xen también puede virtualizar usando paravirtualización (además de virtualización completa).[17]​ A las máquinas virtuales ejecutadas con técnicas de paravirtualización a veces se las llama PVMs (del inglés ParaVirtual Machine).
  • Emulación. El hipervisor imita o suplanta vía software una arquitectura al completo (procesador, memoria, conjunto de instrucciones, comunicaciones...). De esta forma puede hacer creer a los programas y sistemas operativos diseñados para una arquitectura concreta que son ejecutados sobre ella. De esta forma se puede emular cualquier máquina antigua o futura, permitiendo diseñar, implementar y probar software sobre estas arquitecturas sin la necesidad de disponer de ellas realmente. Por otro lado la emulación suele ofrecer un rendimiento bastante bajo debido a que hay que realizar un proceso completo de traducción. Ejemplos de estos sistemas son Bochs (emula CPU's, dispositivos de E/S y BIOS), MAME (emula máquinas recreativas antiguas) QEMU (emula un sistema operativo dentro de otro), Microsoft Virtual PC y Wine (este software emula partes de un sistema operativo aunque el código nativo se ejecuta directamente en el procesador, de ahí que su nombre de las siglas de Wine Is Not an Emulator)

Incidencias de seguridad[editar]

Los tipos de incidencias de seguridad más importantes típicos de los hipervisores son:

  • Escape de la máquina virtual o VM Escape, en idioma inglés. Consiste en que la máquina virtual encapsulada puede interaccionar con el hipervisor.[19]
  • Aprovechar fallos de controladores de hardware virtual para tomar el control el control de otras máquinas virtuales.[20]

Véase también[editar]

Referencias[editar]

  1. «Hypervisor» (html). Oracle (en inglés). Archivado desde el original el 3 de enero de 2013. Consultado el 5 de agosto de 2018. «This hypervisor, also called Virtual Machine Monitor (VMM), creates a virtual platform on the host computer, on top of which multiple guest operating systems are executed and monitored.» 
  2. Jones, M. (31 de mayo de 2009). «La anatomía de un hipervisor Linux» (html). IBM. Archivado desde el original el 6 de agosto de 2016. Consultado el 5 de agosto de 2018. «Los hipervisores son a los sistemas operativos lo que los sistemas operativos, en cierta medida, son a los procesos, es decir, proveen plataformas de hardware virtual aisladas para ejecución, que, a su vez, dan la ilusión de tener acceso total a la máquina subyacente.» 
  3. Shaw, Keith (19 de diciembre de 2017). «What is a hypervisor?» (html). Network World (en inglés). Archivado desde el original el 23 de diciembre de 2017. Consultado el 5 de agosto de 2018. «A hypervisor is a process that separates a computer’s operating system and applications from the underlying physical hardware. Usually done as software although embedded hypervisors can be created for things like mobile devices. The hypervisor drives the concept of virtualization by allowing the physical host machine to operate multiple virtual machines as guests to help maximize the effective use of computing resources such as memory, network bandwidth and CPU cycles.» 
  4. Milberg, Ken (29 de septiembre de 2009). «IBM and HP virtualization A comparative study of UNIX virtualization on both platforms» (html). IBM (en inglés). Archivado desde el original el 19 de marzo de 2017. Consultado el 5 de agosto de 2018. «A hypervisor is a type of software that allows multiple operating systems to share a single hardware host.» 
  5. Brodkin, Jon (30 de abril de 2009). «With long history of virtualization behind it, IBM looks to the future» (html). Network World (en inglés). Archivado desde el original el 19 de mayo de 2018. Consultado el 5 de agosto de 2018. «The problem of implementing a time-sharing system that would let multiple users access the same computer simultaneously was not an easy one to solve. Most engineers were taking traditional batch operating systems and making them more interactive to let multiple users come into the system, but the operating system itself became extremely complex, Rymarczyk explains. IBM's engineering team in Cambridge, Mass., came up with a novel approach that gave each user a virtual machine (VM), with an operating system that doesn't have to be complex because it only has to support one user, he says.» 
  6. Brodkin, Jon (30 de abril de 2009). «With long history of virtualization behind it, IBM looks to the future» (html). Network World (en inglés). Archivado desde el original el 19 de mayo de 2018. Consultado el 5 de agosto de 2018. «What was most impressive was how well it worked and how powerful it was," Rymarczyk says. "It let you provide test platforms for software testing and development so that now all of that activity could be done so much more efficiently. It could be interactive too. You could be running a test operating system. When it failed you could look in virtual memory at exactly what was happening. It made debugging and testing much more effective.» 
  7. Brodkin, Jon (30 de abril de 2009). «With long history of virtualization behind it, IBM looks to the future» (html). Network World (en inglés). Archivado desde el original el 19 de mayo de 2018. Consultado el 5 de agosto de 2018. «The first stake in the ground was CP-40, an operating system for the System/360 mainframe that IBM's Robert Creasy and Les Comeau started developing in 1964 to create VMs within the mainframe.» 
  8. Milberg, Ken (29 de septiembre de 2009). «IBM and HP virtualization A comparative study of UNIX virtualization on both platforms» (html). IBM (en inglés). Archivado desde el original el 19 de marzo de 2017. Consultado el 5 de agosto de 2018. «In 1967, the first hypervisor was developed and the second version of IBM's hypervisor (CP-67) was developed in 1968, which enabled memory sharing across virtual machines, providing each user his or her own memory space.» 
  9. Brodkin, Jon (30 de abril de 2009). «With long history of virtualization behind it, IBM looks to the future» (html). Network World (en inglés). Archivado desde el original el 19 de mayo de 2018. Consultado el 5 de agosto de 2018. «The hypervisor did become a commercially available product in 1972 with VM technology for the mainframe. But it was an important technology even before its commercial release, Rymarczyk says.» 
  10. Brodkin, Jon (20 de abril de 2009). «IBM Looks to Future After Long History of Virtualization» (html). CIO (en inglés). Archivado desde el original el 3 de abril de 2018. Consultado el 5 de agosto de 2018. «Rymarczyk watched with interest as VMware adapted the concepts behind IBM's virtualization technology to x86 systems. In some ways, VMware's task was more difficult than IBM's because the Intel and AMD x86 processors used in most corporate data centers were not built with virtualization in mind. With the mainframe, IBM has total control over both the hardware and virtualization software, but VMware had to overcome the idiosyncrasies of x86 hardware developed by other vendors.» 
  11. Jones, M. (31 de mayo de 2009). «La anatomía de un hipervisor Linux» (html). IBM. Archivado desde el original el 6 de agosto de 2016. Consultado el 5 de agosto de 2018. «Los hipervisores se pueden clasificar en dos tipos distintos. Los de tipo 1 son aquéllos que se ejecutan nativamente sobre hardware de metal base. Los de tipo 2, son hipervisores que se ejecutan en el contexto de otro sistema operativo (el cual se ejecuta sobre el metal base). Un ejemplo de hipervisor de tipo 1 es la máquina virtual basada en un núcleo (Kernel-based Virtual Machine – KVM —, que es en sí misma un hipervisor basado en un sistema operativo. Algunos hipervisores de tipo 2 son QEMU y WINE.» 
  12. a b c Proceso de virtualización de un centro de procesamiento de datos (CPD). Juan Castro Santero. 1 de junio de 2016
  13. a b [http://www.adminso.es/recursos/Proyectos/PFC/PFC_eugenio.pdf Virtualización de servidores de telefonía IP en GNU/Linux]. Eugenio Eduardo Villar Fernández. Universidad de Almería. junio de 2010
  14. «RedHat ¿Qué es KVM? ¿Cómo funciona KVM? KVM convierte a Linux en un hipervisor de tipo 1 (sin sistema operativo).». Consultado el 9 de marzo de 2019. 
  15. «Oracle VM Server for x86 Virtualization and Management» (pdf). Oracle (en inglés). Archivado desde el original el 28 de agosto de 2017. Consultado el 5 de agosto de 2018. «Oracle VM Server for x86 is a zero license cost server virtualization and management solution that makes enterprise applications easier to deploy, manage, and support.» 
  16. Herramientas de virtualización libres para sistemas GNU/Linux. . Sergio Talens Oliag. 25 de septiembre de 2010
  17. a b c Virtualización en CentOS. centos.org. 9 de diciembre de 2019
  18. HVM vs. PV. Diana Lam. 31 de agosto de 2015
  19. Plankers, Bob (22 de septiembre de 2007). «What is VM Escape?» (html). Lone Sysadmin (en inglés). Archivado desde el original el 16 de noviembre de 2007. Consultado el 5 de agosto de 2018. «Normally virtual machines are encapsulated, isolated environments. The operating systems running inside the virtual machine shouldn’t know that they are virtualized, and there should be no way to break out of the virtual machine and interact with the parent hypervisor. The process of breaking out and interacting with the hypervisor is called a “VM escape.”». 
  20. Whittaker, Zack (13 de mayo de 2015). «Bigger than Heartbleed, 'Venom' security vulnerability threatens most datacenters» (html). ZDNet (en inglés). Archivado desde el original el 7 de agosto de 2017. Consultado el 5 de agosto de 2018. «The cause is a widely-ignored, legacy virtual floppy disk controller that, if sent specially crafted code, can crash the entire hypervisor. That can allow a hacker to break out of their own virtual machine to access other machines -- including those owned by other people or companies. The bug, found in open-source computer emulator QEMU, dates back to 2004. Many modern virtualization platforms, including Xen, KVM, and Oracle's VirtualBox, include the buggy code. VMware, Microsoft Hyper-V, and Bochs hypervisors are not affected.» 

Enlaces externos[editar]