Definición de virtualización

El término virtualización comprende la abstracción de los recursos de una máquina física con el objetivo de simular varias máquinas “lógicas” o virtuales . Por supuesto este concepto se puede extender no sólo a máquinas físicas, y es aplicado en multitud de ámbitos tecnológicos: almacenamiento, networking, aplicaciones, etc.

Un elemento fundamental es el hypervisor o virtual machine monitor , que es la plataforma que se encarga de crear la capa de abstracción (pudiendo utilizar diferentes modelos de virtualización) que comunica la máquina física (también denominada anfitrión o guest) con las máquinas virtuales.

Modelo de virtualización

Sistemas operativos invitados

Se trata de una aplicación (VirtualBox, VMWare Player) que realiza la virtualización sin usar ninguna capa de virtualización adicional . Se puede emular el hardware en la máquina virtual o hacer passthrough I/O (es el uso directo de dispositivos hardware en la máquina virtual)

Emulación para virtualización

En este caso la aplicación realiza una réplica una arquitectura de hardware al completo (procesador, juego de instrucciones, hardware, etc). Esto permite que sobre la emulación se pueda ejecutar tanto sistemas operativos y aplicaciones distinto al instalado físicamente en la máquina que ejecuta la máquina física. Un ejemplo que muchos conoceréis es el emulador M.A.M.E , que emula el hardware utilizado en las recreativas para la ejecución de los juegos.

Virtualización completa o nativa

En este tipo de virtualización utiliza una capa intermedia de virtualización (a.k.a hypervisor) que media entre el host físicos y las máquinas virtuales. Además incluye código para emular el hardware subyacente para las vm si es necesario. Esto permite ejecutar cualquier sistema operativo sin modificar , siempre que se soporte el hardware subyacente.

Ejemplos VMWare Server, XenServer, VMWare ESX.

Paravirtualización

Se basa en el mismo principio que la virtualización nativa con la diferencia que no incluye código de emulación de hardware e introduce modificaciones en los sistemas operativos invitados (que deben ser modificables) para el paso de instrucciones privilegiadas. Esto mejora significativamente el rendimiento de la virtualización.

Ejemplos: Xen.

Virtualización a nivel de sistema operativo

Se realiza la virtualización sobre el mismo sistema operativo de la máquina física , sin introducir capa intermedia de virtualización, haciendo que simplemente se aislen dentro del sistema operativo. Esto limita el uso solo al mismo sistema operativo , por ejemplo si pensamos en Linux se podría virtualizar todas las distribuciones de Linux en el S.O, pero no Windows.

Ejemplos: OpenVZ, Docker, Virtuozzo, Chroot Jails, LXC, etc.

Virtualización a nivel de Kernel

Este tipo de virtualización convierte el Kernel de Linux en el Hypervisor , permitiendo ejecutar máquinas virtuales con independencia del sistema operativo sin modificar, que se almacena en una imagen de disco. Cada máquina virtual tiene su propio hardware virtualizado: tarjetas de red, discos duros, gráfica, etc. Aunque también se puede hacer passthrough de dispositivos.

El ejemplo más relevante es KVM