Saltar ao contido

Hipervisor

Na Galipedia, a Wikipedia en galego.
Arquitectura de Hipervisor Tipo 2 (hosted hypervisor).

Un hipervisor (en inglés hypervisor) ou monitor de máquina virtual (virtual machine monitor)[1] é unha capa de software que realiza unha virtualización de hardware, permitindo que este sexa empregado por varios sistemas invitados á vez. Así, diferentes sistemas operativos conviven sobre os mesmos recursos físicos dun ordenador.[2][3][4] O termo hipervisor provén de «supervisor», tipicamente asociado a kernels de sistemas operativos.

IBM System/360 Mainframe.

Os hipervisores están intimamente ligados ao concepto de virtualización. O nacemento da idea de memoria virtual foi da man do físico alemán Fritz-Rudolf Güntsch na Universidade Técnica de Berlín no ámbito da súa tese doctoral (1956).[5] Partir virtualmente o espazo de direccións significaba que o sistema operativo encargábase de xestionar esta paxinación ou partición virtual. En 1961 apareceu o B5000 de Burroughs Corporation, o primeiro ordenador comercial con memoria virtual.[6] A finales dos anos 60 desenvolvéronse os primeiros hipervisores. IBM cumpriu a importante función de lanzar ao mercado sistemas con soporte para memoria virtual. No ano 1965 foi a quenda do System/360 Modelo 67 co sistema operativo CP-40 e, posteriormente, en 1972 continuaron impulsando o concepto de virtualización nos equipos System/370.[7][8][9]

A necesidade dos primeiros hipervisores foi froito da redución de costos das empresas. O mainframe era unha computadora centralizada que substituía aos equipos illados de cada departamento da empresa. O tempo compartido entre distintos usuarios do sistema operativo permitía operar sobre un mesmo hardware, e as máquinas virtuais propostas polos enxeñeiros de IBM en Cambridge consolidaron o sistema[10], que permitía correr múltiples sistemas operativos á vez, cada un deles independente dos demais, tanto que podía colapsar sen afectalos.

Precisamente destes colapsos de sistemas operativos virtuais derivaba unha gran utilidade ao momento depurar programas (debugging, en inglés) pois se contaba coa memoria empregada a bo resgardo do hipervisor utilizado, imposibilitando consecuencias máis graves no mainframe.[11]


O primeiro hipervisor como tal foi creado por IBM en 1967[12], mais a actividade comercial expandiuse especialmente desde 1972 e cambiou drasticamente o mundo da informática.

Esquema de máquina virtual.

As máquinas virtuais da época empregaban discos e sistemas de cintas virtuais, como no sistema operativo IBM VM/370. O sistema físico único era divisible en computadoras virtuais completas e distribuía os requisitos dos recursos entre os correspondentes dispositivos físicos. VM/370 de IBM executouse na maoría de mainframes desde 1970, e os únicos límites da virtualización (número de máquinas virtuais) foron a capacidade de proceso. As solucións de ordenador persoal creceron como alternativas para moitos usuarios, pero o PC (Personal Computer) non tiña unha solución de virtualización para os produtos da liña x86. O hipervisor VMWare solventou estes problemas a finais dos anos 1990. Aínda que a arquitectura x86 dos PC era particularmente difícil de virtualizar[13], os grandes fabricantes de microprocesadores como Intel e AMD deseñaron extensións de soporte hardware que facilitaron a incorporación do hipervisor no software de sistema.

En 1999 VMWare distribuíu o produto de virtualización para a familia x86. Posterioremente púidose aplicar a servidores. A tecnoloxía de hipervisor foi adoptada como unha administración de sistemas simplificada, portable e sinxela. Os vendedores de Unix como Sun Microsystems, HP, IBM e SGI continuaron vendendo hardware virtualizado ata a década dos 2000 en sistemas moi eficientes pero, pola contra, extremadamente caros.

Os hipervisores clasifícanse en dous tipos principais:[14][15][16]

Hipervisor tipo 1

[editar | editar a fonte]
Hipervisor Tipo 1 (bare-metal hypervisor).

Tamén denominado nativo, unhosted ou bare metal (sobre o metal espido), é software que se executa directamente sobre o hardware físico do sistema anfitrión. Non necesita dun sistema operativo tradicional para funcionar. Funciona como capa de control principal que xestiona e asigna recursos de hardware ás máquinas virtuais.

  • Impacto pequeno (rendemento óptimo).
  • Instalado directamente sobre hardware físico.
  • Asignación eficiente de recursos.
  • Illamento completo entre máquinas virtuais.

Considéranse máis adecuados en contornas de nube e centros de datos empresariais, onde é vital unha xestión de recursos eficiente e un rendemento optimizado.

Exemplos
  • Microsoft Hypervisor V (Hyper-V Server).
  • VMWare vSphere/ESXi.
  • Xen.

Hipervisor tipo 2

[editar | editar a fonte]
Hipervisor Tipo 2 (hosted hypervisor).

Tamén denominado hosted (hipervisor aloxado), executado sobre un sistema operativo tradicional; é dicir, actúa a modo de aplicación. Permite despregar máquinas virtuais dentro do propio sistema operativo anfitrión.

  • Impacto superior no rendemento (comparte recursos co sistema operativo anfitrión).
  • Instalado sobre un sistema operativo anfitrión.
  • Configuración sinxela.

Adecuado para contornas de escritorio como computadores persoais e en escenarios de desenvolvemento de software.

Exemplos
  • Oracle VirtualBox.
  • Parallels Desktop.
  • VMware Workstation.

Hipervisor híbrido

[editar | editar a fonte]

Sistemas como Microsoft Virtual PC e Microsoft Virtual Server 2005 R2 interaccionan directamente sobre hardware pero, ás veces, utilizan servizos directamente sobre o sistema operativo anfitrión.[17] Son casos de hipervisor de tipo híbrido.

Virtualización

[editar | editar a fonte]

O concepto de virtualización abarca tecnoloxías de simulación de computadoras ou máquinas virtuais sobre un mesmo hardware. [18][19]

Emulador QEMU.
  • Emulación. Consiste en replicar o comportamento dunha contorna ou sistema diferente partindo de diferentes software e hardware subxacentes. Implica imitar unha plataforma ou arquitectura distinta. O software de emulador replica o comportamento dunha contorna de software complexo como un sistema operativo ou unha aplicación. Non obstante, o impacto no rendemento é significativo debido á sobrecarga do proceso de tradución (a contorna emulado tende a ser máis lenta que a contorna nativa). Sistemas como QEMU (emula un sistema operativo dentro doutro), MAME (emula máquinas recreativas), Bochs, Microsoft Virtual PC e Wine funcionan como emuladores.
Interface gráfica da plataforma de virtualización completa VirtualBox de Oracle.
  • Virtualización completa, Virtualización de hardware ou Virtualización nativa. Técnica robusta que permite crear múltiples contornas virtuais illadas con instancias completas do sistema operativo. O hipervisor actúa como capa intermedia entre hadware anfitrión e máquinas virtuais, asignando recursos de hardware, CPU, memoria, red e almacenamento a cada instancia. Windows, Linux e sistemas herdados poden coexistir nun mesmo dispositivo. Adoitan ofrecer capacidades de migración en vivo, facilitando o equilibrio de carga e o mantemento. VMWare vSphere/ESXi, Microsoft Hyper-V, Oracle VM Virtualbox, Xen e KVM (máquina virtual baseada no núcleo de linux) son plataformas de virtualización completa.
  • Virtualización parcial ou paravirtualización. Ponte entre a virtualización completa e a execución directa en hardware físico. Un sistema operativo invitado modificado colabora estreitamente co hipervisor ou sistema anfitrión. O rendemento mellora ao reducir a sobrecarga asociada á emulación de hardware. Comunicar de forma directa as máquinas virtuais e o sistema anfitrión optimiza o uso compartido de recursos, axilizando as operacións E/S (entrada-saída) e transferencias de datos. Xen é un exemplo destacado de paravirtualización, así como o módulo KVM, que pode funcionar tanto en virtualización completa como en parcial.
  • Diagrama da arquitectura do xestor de contedores Docker.
    Virtualización de sistema operativo (contedores). A contenedorización refírese a crear instancias illadas do espazo de usuario operando sobre un mesmo sistema anfitrión. A diferenza dos métodos tradicionais (os cales esixen crear instancias completas de sistemas operativos sobre unha máquina física) a contenedorización baséase nas dependencias entre sistemas operativos (contedores que comparten o mesmo kernel, por exemplo) e constrúe unha solución flexible e portable. O kernel compartido é a base da virtualización, pois compartir o núcleo elimina a necesidade de replicar o sistema operativo con cada nova instancia. Os contedores íllanse a nivel de aplicación, cada un independente dos demais, e as aplicacións encapsuladas en cada contedor pódense migrar facilmente. A plataforma que popularizou esta virtualización foi Docker con ferramentas para xestionar contedores, mais LXC (Linux Containers) é unha alternativa de código aberto, e plataformas como Kubernetes facilitaron a orquestación de contedores (proceso de automatización no escalado e xestión de aplicacións).

Incidencias de seguridade

[editar | editar a fonte]

Os tipos de incidencias de seguridade máis importantes referidas á virtualización con hipervisores son:

  • Escape da máquina virtual (VM Escape). Provoca interaccións indeseadas entre a máquina virtual "encapsulada" e o hipervisor.[20]
  • Erros de controladores de hardware virtual que permiten tomar o control doutras máquinas virtuais instanciadas no hipervisor.[21]

Vantaxes e desvantaxes

[editar | editar a fonte]
Vantaxes dos hipervisores
  • Abstracción de recursos hardware repartidos entre diferentes máquinas virtuais.
  • Capacidade de migración.
  • Encapsulamento (sistemas invitados illados).
Desvantaxes dos hipervisores
  • Sobrecarga de recursos (especialmente en termos de CPU, memoria e E/S).
  • Degradación no rendemento en comparación coa execución directa no hardware físico.
  • Complexidade de xestión (plataformas como Docker e Kubernetes cumpren o papel de facilitar o mantemento das máquinas virtuais, especialmente en infraestruturas grandes).
  1. "Hypervisor". 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. "La anatomía de un hipervisor Linux". 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. "What is a hypervisor?". Arquivado dende o orixinal o 23 de decembro de 2017. 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. "IBM and HP virtualization A comparative study of UNIX virtualization on both platforms". A hypervisor is a type of software that allows multiple operating systems to share a single hardware host. 
  5. "Fritz-Rudolf Güntsch" (en alemán). 2023-05-26. 
  6. JW Mayer, Alastair (1982). "The architecture of the Burroughs B5000: 20 years later and still ahead of the times?". ACM SIGARCH Computer Architecture News 10.4 (10.4): 3–10. 
  7. "IBM System/360 Model 67 Functional Characteristics, Third Edition (February 1972)" (PDF). IBM Systems Reference Library. Consultado o 01/09/2024. 
  8. "IBM System/360 Model 67.". Wikipedia. Consultado o 01/09/2024. 
  9. J. Creasy, Robert (1981). "The origin of the VM/370 time-sharing system✮". IBM Journal of Research and Development 25.5: 483–490. 
  10. "With long history of virtualization behind it, IBM looks to the future". 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. 
  11. "With long history of virtualization behind it, IBM looks to the future". 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. 
  12. "With long history of virtualization behind it, IBM looks to the future". 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. 
  13. "IBM Looks to Future After Long History of Virtualization". Arquivado dende o orixinal o 03 de abril 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. 
  14. "La anatomía de un hipervisor Linux". 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. 
  15. Proceso de virtualización de un centro de procesamiento de datos (CPD). Juan Castro Santero. 1 de junio de 2016
  16. Virtualización de servidores de telefonía IP en GNU/Linux Arquivado 21 de xaneiro de 2022 en Wayback Machine.. Eugenio Eduardo Villar Fernández. Universidad de Almería. junio de 2010
  17. Proceso de virtualización de un centro de procesamiento de datos (CPD). Juan Castro Santero. 1 de junio de 2016
  18. Herramientas de virtualización libres para sistemas GNU/Linux. . Sergio Talens Oliag. 25 de septiembre de 2010
  19. Virtualización de servidores de telefonía IP en GNU/Linux Arquivado 21 de xaneiro de 2022 en Wayback Machine.. Eugenio Eduardo Villar Fernández. Universidad de Almería. junio de 2010
  20. "What is VM Escape?". 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.” 
  21. "Bigger than Heartbleed, 'Venom' security vulnerability threatens most datacenters". 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.