Máquinas virtuales en el servidor
Contents
Introducción
Mi principal motivación a la hora de montar máquinas virtuales en mi servidor de casa es la de aprender a trabajar con los nuevos entornos virtuales, que aportan mayor seguridad (puedes dar por ejemplo clave de root en una máquina virtual de pruebas sin problemas), son más flexibles (puedes tener diferentes sistemas corriendo en el mismo hardware) y diría que hasta más sostenibles (menos hardware necesario). Además, es un campo de avance de la tecnología que abre posibilidades muy interesantes en sistemas distribuidos (migración de máquinas virtuales entre máquinas físicas, balanceo de carga, recuperación rápida ante fallos ...).
En resumen, que son múltiples las ventajas de usar máquinas virtuales y merece la pena invertir un poco de esfuerzo en terminar de aprenderlas bien.
Nos referimos a máquinas virtuales a nivel de sistema que emulan por completo el hardware y permiten ejecutar sobre ellas sistemas operativos completos sin modificar, y no las máquinas virtuales de aplicaciones como por ejemplo Java.
Tecnologías de virtualización
No voy de momento a realizar un estudio de las diferentes alternativas que hay para la virtualización. De momento voy a tirar por Xen que es lo que ya conozco y una de las tecnologías libres más pujantes. A día de hoy ya hay otras opciones, tanto privativas como libres. Una de las que se oye hablar bastante últimamente es Virtual Box que en su versión básica es GPL.
Instalación de Xen en micro con soporte VT
Tras leer con detenimiento la información sobre máquinas virtuales en la Wikipedia, el objetivo es lograr explotar las capacidades que tienen los micros de Intel a nivel de hardware con la Virtualization Technology. Esta se puede explotar a partir de Xen 3.0 y permite correr diferentes sistemas operativos sobre el mismo hardware con un soporte más completo. Anterior a esto Xen era tecnología de paravirtualización, en la que se corrían diferentes sistemas operativos sobre el mismo hardware, pero con limitaciones. Con Xen 3.0 e Intel VT ya se puede correr por ejemplo Windows en Xen como sistema invitado. Como sistema hypervisor (virtual machine monitor) en nuestro caso usaremos una versión modificada de Linux, que será el domain0 en terminología Xen. Los sistemas invitados que corren sobre el hypervisor (dom0) se conocen como domain U (domU).
Por lo tanto, en mi portátil con soporte VT y Xen 3.0, podré tener como dom0 a Ubuntu y como uno de los domU a Windows, u otros Linux. En este sentido gracias a VT, Xen pasa a estar al nivel de emulación que VMWare. Anteriormente los domU sólo podían ser sistemas Linux y no sé si algún que otro Unix.
Nada mejor que utilizar la información de Xen del Wiki de Ubuntu. Aunque como suele pasar, está un poco anticuada (información para 8.04) y por ejemplo, no hace referencia a VT para nada. Pero sigamos lo que dice para tener nuestro sistema base corriendo como dom0 de Xen.
apt-get install ubuntu-xen-server ... Se instalarán los siguientes paquetes NUEVOS: bridge-utils debootstrap libc6-xen libconfig-inifiles-perl libtext-template-perl libxen3 linux-image-2.6.24-19-xen linux-image-xen linux-restricted-modules-2.6.24-19-xen linux-restricted-modules-xen linux-ubuntu-modules-2.6.24-19-xen linux-xen python-dev python-xen-3.2 python2.5-dev ubuntu-xen-server xen-docs-3.2 xen-hypervisor-3.2 xen-tools xen-utils-3.2
Con esto nos instala un nuevo núcleo (linux-image-2.6.24-19-xen) que incluye el hypervisor y que pasará a ser el dom0 de Xen. Se instala la versión Xen 3.2. Lo instalamos ... y reiniciamos el sistema con este nuevo núcleo de Linux. Ya estamos dentro del dom0 de Xen. En realidad el dom0 debería de ser un sistema mínimo sobre el que correr los sistemas invitados, pero en mi caso de momento es todo el sistema completo com el escritorio GNOME y demás. Si veo que todo va muy bien, quizá piense en una reinstalación.
Después de reinicar el núcleo no funciona en el arranque dando un error que por suerte ya está estudiado en launchpad. El problema diría que es hald ya que lo da con el proceso hald-runner, que interactúa a bajo nivel con el hardware (hardware abstraction layer). He puesto un comentario y de momento no hay solución al bug. Y lleva ya varios meses. Diría que es la combinación con SMP, Xen y VT. De momento dejo un poco parado todo aquí
Montando todo sobre un Mac Mini
La idea de montar virtualización sobre un mac mini para utilizarlo como servidor ya ha ha sido cubierta en la red utilizando Xen. Vamos a partir de ella.
Como hacerlo bien
- Instalar como dom0 un sistema mínimo con sólo ssh para poder acceder a él.
Puntos de trabajo
- Virtualización software o completa con soporte del hardware (Xen 3.0 y extensiones del micro)