Que es la Paravirtualizacion

 Virtualización vs Paravirtualización

Este si que es un problema….. ¿que es cada cosa?

A raid de dar un curso de Hyper-V a salido esta pregunta entre mis alumnos que después de mirar en internet no les quedaba claro la explicación porque ponían cosas contradictorias. Realmente el título de la entrada deberia ser Virtualización completa Vs Paravirtualización que es mas apropiado para las definiciones que voy a dar. También recomiendo que echéis un vistazo a estas dos entradas para aclarar conceptos: ¿Que es la virtualización?  y ¿Que es un Hipervisor?

Bueno, voy a explicar que es cada cosa a riesgo de meter la pata, porque si que es cierto que hay cosas en la red mal definidas pero los conceptos son claros. Para que quede bien definido voy a ser drástico en las definiciones, o negro o blanco, ya que hay una gama gris intermedia «Virtualización parcial«, «Virualización asistida por hardware«… que aunque se puede definir bien, puede dar a equivocaciones, aquí la tecnología y los avances del harware tienen mucho que decir.

¿no es suficiente la virtualización? A la virtualización, tan buena, se le sacó una pega que es el rendimiento, siempre se desea un mayor rendimiento y todos los avances en virtualización son precisamente para mejorar esto. De ahí que los fabricantes de hardware han empezado a producir sus máquinas preparadas para dar un mejor rendimiento en entornos virtuales.

 

Virtualización completa:

Tenemos un Hardware, cualquier hardware,  y tenemos el hipervisor que tiene el VMM (Virtual Machine Monitor). Los Sistemas operativos usan drivers genéricos y estos SO permanecen inalterados. Se traduciría en que el hipervisor hace todo el trabajo sin alterar nada. Hoy en dia el rendimiento es bastante alto alto (aún haciendo el trabajo el hypervisor) porque al usar los mismos drivers genéricos que el host el kernel que usan es muy pequeño «Microkernel» y ademas aprovechan cualidades del hardware que cada vez mas esta preparado para la virtualización.

Paravirtualización:

Tenemos un Hardware preparado para ser virtualizado (VT hardware), un hipervisor muy «delgado» y unos sistemas operativos invitados con drivers paravirtualizados. Traduciríamos como que los invitados hablan directamente con el hardware del host ya que este está preparado para ello y el hypervisor apenas interviene. Se consigue una virtualización con mas rendimiento (a día de hoy) que con la completa. Por contra, los SSOO invitados tienen que estar modificados para que trabajen de esta forma.

 

 

———–

La verdad es que la virtualización, cada vez esta mas asistida por el hardware  (Intel-VT y AMD-V están avanzando mucho en este campo) seguramente estas palabras que estamos definiendo cambiaran su significado con otro mas acorde con las nuevas tecnologías.

 

 

¿Que es un Hipervisor?

La Virtualización  (ver aqui)

La virtualización consiste en alojar sistemas operativos fuera de su harware. Para ello se necesita un software que emule un hardware sobre el que se alojará el sistema operativo. Al software que realiza tal operación se le denomina hypervisor y se ejecuta en una máquina host o anfitrión, El software virtualizado se denomina maquina virtual o sistema operativo invitado.

virtualizacion

Los Hipervisores

Históricamente IBM llamaba al sistema operativo «supervisor» ya que en realidad era básicamente un kernel que supervisaba el hardware. Así que las técnicas de virtualización de hardware a adoptado la palabra «hipervisor» o hypervisor para referirse a esta nueva forma de «kernel».

El hipervisor es el elemento del sistema operativo o de software que administra y hace que funcionen las maquinas virtuales sobre un hardware virtual. El Hipervisor, (algunos lo llaman VMM “motor de máquina virtual”, pero por no confundir con el Virtual Machine manager, no lo nombraré de tal forma) Tiene varias tarea, por un lado presentan a los sistemas virtualizados, también proveen de un Hardware virtual a las VM y de monitorizar a estas máquinas.
Por resumir hay dos tipos de hipervisores: los Nativos o unhosted, los llamado «de tipo 1»  y los alojados,  «de tipo 2» que necesitan de un Sistema operativo para su ejecución. Abría una tercera clase denominada híbrida con características de estas dos tecnologías.

  • Hipervisores Nativos, el hipervisor se ejecuta directamente sobre el hardware o máquina Host (bare-metal) y es el que se encarga de controlar todos los accesos al hardware. Aunque es la tecnologia mas antigua, tambien es la que utilizan las soluciones de virtualización mas potentes: Hyper-V, Citrix Xen y VMWare ESX-Server.

hypervisor_1

  • Hipervisor alojado, en este tipo de hipervisores (hosted), el hipervisor es un programa que se ejecuta sobre un Sistema Operativo como Windows, Linus, OSX, y sobre el hipervisor se cargan las diferentes máquinas virtuales. Ejemplos claros y puros serian las máquinas virtuales Java o .Net.

hipervisor_2

  • Un último grupo mezcla de los anteriores son los hipervisores híbridos en los que Sistema operativo, host e hipervisor compiten por el hardware. Estas serian Virtual Server de Microsoft, Virtual Box de Oracle.

hypervisor_3

Diferencias entre Hyper-V y VMWare ESX

En realidad hay mas de las que aparentan, en realidad se basan en soluciones diferentes de Virtualización Nativa, Virtualización Monolítica y virtualización de Microkernel

 

vmware-logo

La Virtualización Monolítica es complicada, ya que cuando una VM hace una llamada al Hardware, el hardware virtualizado redirige la llamada a drivers en el hipervisor, el cual enruta esa llamada al recurso real. Así es como opera VMWare, el cual utiliza mucho código para conseguir esto.

 

Windows-Server-Hyper-V

La virtualización con microkernel es mas sencilla puesto que las máquina virtuales no necesitan de drivers específicos sino que acceden directamente al hardware con los mismos drivers que usa el hypervisor, asi el hypervisor aparece como una capa transparente dedicada a separar y administrar las diferentes maquinas virtuales. Hyper-V trabaja de esta manera siendo así mas estable y con un rendimiento mas alto.