Equipo Migraciones 19/03/2010

En esta semana hemos estado trabajando con maquinas virtuales tanto de virtualización completa, como paravirtualización. El software hipervisor de estas maquinas ya mencionado anteriormente es XEN y comentaré en este post alguna de sus características y lo que nos puede ofrecer.

Paravirtualización con Xen

Xen utiliza una técnica llamada paravirtualización para alcanzar alto rendimiento (es decir, bajas penalizaciones del rendimiento, típicamente alrededor del 2%, con los peores casos de rendimiento rondando el 8%; esto contrasta con las soluciones de emulación que habitualmente sufren penalizaciones de un 20%).

Con la paravirtualización, se puede alcanzar alto rendimiento incluso en arquitecturas (x86) que no suelen conseguirse con técnicas tradicionales de virtualización. A diferencia de las máquinas virtuales tradicionales, que proporcionan entornos basados en software para simular hardware, Xen requiere portar los sistemas operativos para adaptarse al API de Xen. Hasta el momento hay ports para NetBSD, Linux, FreeBSD y Plan 9.

En teoría interactúan directamente con el hardware. Es por eso que en ocasiones y para determinados componentes hardware se requieren tecnologías específicas, como por ejemplo para la CPU en ocasiones se pide como requisito procesadores Intel con tecnología VT.

Virtualización completa con Xen

Intel ha realizado modificaciones a Xen para soportar su arquitectura de extensiones Vanderpool. Esta tecnología permite que sistemas operativos sin modificaciones se ejecuten en máquinas virtuales Xen, si el sistema soporta las extensiones Vanderpool o Pacífica (de Intel y AMD respectivamente, extensiones para soportar virtualización de forma nativa). Prácticamente, esto significa una mejora de rendimiento, y que es posible virtualizar Windows sin tener que modificarlo.

Este tipo de virtualización interactúa con el sistema operativo de la máquina física para gestionar los recursos.

Migración de máquinas virtuales

Las máquinas virtuales Xen pueden ser migradas en caliente entre equipos físicos sin pararlos. Durante este proceso, la memoria de la máquina virtual es copiada iterativamente al destino sin detener su ejecución. Una parada muy breve de alrededor de 60 a 300 ms es necesaria para realizar la sincronización final antes de que la máquina virtual comience a ejecutarse en su destino final. Una tecnología similar es utilizada para suspender las máquinas virtuales a disco y cambiar a otra máquina virtual.