Hipervisor

Un hipervisor (en inglés hypervisor) ou monitor de máquina virtual (virtual machine monitor) é 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. O termo hipervisor provén de «supervisor», tipicamente asociado a kernels de sistemas operativos.

 Historia 
miniatura|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 de doutoramento (1956). 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. A finais 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.

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, 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 grande 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.

O primeiro hipervisor como tal foi creado por IBM en 1967, mais a actividade comercial expandiuse especialmente desde 1972 e cambiou drasticamente o mundo da informática.
miniatura|300px|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 maiorí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, 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. Posteriormente 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.

 Tipos 
Os hipervisores clasifícanse en dous tipos principais:Proceso de virtualización de un centro de procesamiento de datos (CPD). Juan Castro Santero. 1 de junio de 2016Virtualización de servidores de telefonía IP en GNU/Linux . Eugenio Eduardo Villar Fernández. Universidad de Almería. junio de 2010

 Hipervisor tipo 1 
dereita|miniatura|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 
miniatura|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 
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.Proceso de virtualización de un centro de procesamiento de datos (CPD). Juan Castro Santero. 1 de junio de 2016 Son casos de hipervisor de tipo híbrido.

 Virtualización 
O concepto de virtualización abarca tecnoloxías de simulación de computadoras ou máquinas virtuais sobre un mesmo hardware. Herramientas de virtualización libres para sistemas GNU/Linux. . Sergio Talens Oliag. 25 de septiembre de 2010Virtualización de servidores de telefonía IP en GNU/Linux . Eugenio Eduardo Villar Fernández. Universidad de Almería. junio de 2010
miniatura|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.
miniatura|295x295px|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.
 miniatura|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 orquestración de contedores (proceso de automatización no escalado e xestión de aplicacións).

 Incidencias de seguridade 
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 indesexadas entre a máquina virtual "encapsulada" e o hipervisor.
 Erros de controladores de hardware virtual que permiten tomar o control doutras máquinas virtuais instanciadas no hipervisor.

 Vantaxes e desvantaxes 
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).

 Notas 

Categoría:Software