jueves, 8 de mayo de 2008

XEN: Peripecias virtuales

Y finalmente me puse a probar la virtualización. Sé que llego tarde, pero como un potencial cliente nos pidió un proyecto donde el anterior asesor decidió (por quien sabe qué motivo en realidad) crear una infraestructura virtualizada (9 servidores virtuales repartidos en 2 equipos físicos), tuve que poner manos a la obra y actualizarme un poco...

Ya supongo que todos saben qué es "virtualizar", pero para los que no, la idea es tomar un equipo y particionar los recursos físicos del mismo en forma virtual, creando varias instancias de máquinas virtuales que se comportan como si fueran equipos físicos, pero que ocupan el mismo espacio. Dentro de cada instancia, se puede ejecutar un sistema operativo completo e independiente del sistema base que actúa como anfitrión. Los recursos pueden entonces administrarse de forma tal de que sea posible asignar la capacidad ociosa de una de las instancias a otra que la requiera, en forma dinámica y transparente. El concepto no es nuevo, pero ha evolucionado mucho, en parte debido al hecho de que los fabricantes de procesadores han diseñado tecnologías que hacen que se pueda ejecutar la virtualización con niveles de performance nunca antes alcanzados.

De entre todas las posibilidades existentes para virtualizar (VMWare, VirtualBox, KVM, XEN, etc.), decidí usar XEN, que es el que me parece más apropiado para el caso por ser flexible, relativamente simple y facil de usar. Además, con hardware apropiado es múy rápido y además, por si fuera poco, es Open Source (que quede claro que no es el único en la lista).

Como contrapartida, para usar XEN es necesario tener un kernel compilado especialmente para poder ejecutarlo, aunque eso no es un problema dado que todas las distros medianamente decentes (y algunas no tan decentes) tienen kernels de stock ya preparados para ejecutar XEN.

Y bueno, como no tenía una superpoderosa máquina a mano, tuve que utilizar un viejo Pentium III de 500 Mhz, con 256 Mb de RAM y un disco de 8 Gb. (¿qué es ese ruido?... ¿escucho acaso unas risas de fondo?... ¿cómo que nadie usa ya esos equipos para investigación en este milenio?...) Como software base de prueba, decidí usar el OpenSuSE 10.2. (¿más risas?... hmmm...)

Y bueno... ahí comienza la peripecia.

Antes que nada, hay que aclarar que no es necesario tener una Cray para intentar la virtualización. Estaremos obviamente limitados por el hardware que tenemos, pero eso no significa que no se pueda hacer o que no sea usable. Para poder virtualizar en forma correcta con XEN, necesitamos un equipo que soporte IVT (Intel Virtual Technology, solo presente en los últimos procesadores de Intel, of course) o AMD-V (Advanced Micro Devices Virtualization, solo presente en los últimos procesadores AMD 64 bits, of course too)... y la última vez que miré, el Pentium III no tiene ninguna de esas dos tecnologías disponibles.

Bueno, eso no impide que podamos virtualizar de todas maneras, aunque con algunas limitaciones, a saber:

1) No se puede virtualizar realmente, sino "paravirtualizar", lo cual significa que solo podremos instalar en la máquina virtual resultante el mismo sistema operativo que tenemos en el sistema host (puede ser otra distribución, pero no puede ser otro "tipo" de sistema operativo).
2) No tendremos emulación completa del hardware en la máquina virtual, lo cual puede representar un problema a la hora de administrar recursos, aunque no es realmente tan grave.

Como solo esas dos cuestiones quedaron como secuelas, me dispuse a instalar mi "matrioska", solo para empaparme un poco en el tema, y de paso probar que se podía hacer realmente. Para mejorar la situación, la instalación del XEN la hice desde mi casa en un equipo a 25 kilómetros de donde estaba, conectado a un VNC a través de un tunel SSH, ejecutándose en el servidor host (XEN y la virtualización requieren de interfaces gráficas, así que no se puede jugar sin X11), así que no podía hacer mucho si explotaba. Es lo que se dice un "juego con handycap" :-)

Instalé un OpenSuSE 10.2 base en el equipo que mencioné arriba y empecé a prepararlo para que fuera el host servidor (en XEN también llamado "Dom0"). Leí algo de documentación e intenté hacer unas pruebas. Como toda cosa nueva, tardé en entender cómo funcionaba y como debía ser montada, aunque después de varias pruebas infructuosas con distintas variantes, decidí dejar de perder tiempo y pedir ayuda al amistoso módulo de gestión de virtualización de YaST2 (que si bien facilita la configuración, no permite gran flexibilidad hasta tener lista la máquina virtual).

El YaST2 me dió información interesante referente a la falta de memoria para el primer host virtual, lo cual no me sorprendió en lo más mínimo (OpenSuSE 10.2 apenas se instala en 128 Mb. de RAM, y solo si se le dá algo de swap para entretenerse), así que habiendo aumentado la memoria del equipo a 384 Mb (toda una hazaña, dado que recursos como DIMMs de memoria ECC con paridad para viejas máquinas IBM Netfinity 3000 no son precisamente abundantes en estas épocas), me decidí a volver a intentar.

Una vez que arrancó la máquina virtual (luego de explicarle al YaST como era que la quería configurada, definiendo 150 Mb. de RAM y una imagen de disco de 2GB), intenté iniciar la instalación. El linuxrd virtualizado (primera etapa de la instalación) se quejó de falta de memoria de nuevo y me pidió algo de swap... y como el YaST2 solo crea la imagen de disco sin asignar particiones (cuidado, crea una imagen de disco en un archivo, no una imagen de una partición destino) ni nada que se le parezca, además de no poder acceder a una consola para poder manejar el particionamiento (talvés de burro, puesto que seguramente alguna forma debía haber ya que recuerdo haberlo hecho antes en máquinas "no virtuales", pero que para este caso no encontré manera), no tenía de donde sacar espacio de disco para el swap que el maldito engendro me pedía.

Básicamente, fuí vencido por la paradoja del huevo y la gallina (necesito swap para instalar el sistema operativo, pero como no tengo particion de swap porque no tengo instalado el sistema operativo todavía, no tengo de donde darle el swap...).

Un intento después, modificando la memoria asignada a la máquina virtual tampoco fué satisfactorio, así que decidí explorar mis opciones. Lo único que encontré de interés, fué que podía intentar cargar en la VM el CD de rescate... lo cual podría serme útil.

Y así fué. Cargué el CD de rescate y pude bootear dentro de la VM sin problemas. Y lo que hice fué simplícimo: cree las particiones necesarias dentro de la imagen de disco de la VM, una para el / y otra para el swap. Formatée la particion de swap y la probé para asegurarme de que funcionaba. Una vez hecho esto, volví a bootear la VM para arrancar la instalación, y resulta ser que AHORA SÍ TENÍA de donde sacar swap :-), así que continué la instalación hasta tener una máquina virtual con un OpenSuSE 10.2 adentro de otro, el cual a su vez corría en una máquina de hace casi 10 años atrás... ¡Victoria!

Y bueno, pude probar la virtualización. Manejé el host Dom0 y modifiqué la configuración para reasignar dinámicamente recursos, agregué otro disco al servidor virtual (algo entretenido, dado que hay que crear un archivo del tamaño deseado (con dd se hace rápidamente), formatearlo con el FS que se desée, declararlo en la máquina virtual y montarlo... ¡todo un relajo!) y hasta pude jugar a reventar la máquina virtual por gusto a ver si volvía a levantar. ¡No me había divertido tanto desde que instalé mi primer Linux from Scratch!

¿Qué me queda de todo esto? La verdad que algo de desconcierto... La virtualización parece algo interesante para algunos casos, pero no creo que sea la panacea absoluta. Con tecnologías como blade servers disponible y los precios del hardware en caída libre, lo único que puede obligar a un implementador a virtualizar es el tema del aprovechamiento del espacio y la energía... y ahí me parece que es donde más puede "pegar" este asunto. El consumo energético de un data center es todo menos despreciable, así que ya puedo ver aparecer varios VISP (Virtual Internet Service Provider) por ahí con un solo servidor, un router y un enlace a Internet, sirviendo a varios clientes en un espacio reducido y un consumo mínimo de energía eléctrica... lo cual significa menos costos operativos, felices facturas de U.T.E. y buenas ondas de parte de organizaciones ambientalistas (de las de verdad, no como la de Gualeguaychú).

En definitiva, virtualizar es ecológico y divertido. ¡No dejen de probarlo!

:wq

1 comentario:

Anónimo dijo...

He tenido la oportunidad de probar algunos soft de maquinas virtuales y la verdad que me han gustado mucho. Los de linux te los dejo a vos que sos experto. Yo probe en windows, y tambien funcionan, el VM Waer sobre todo, esta muy bueno. La utilidad que le veo mas factible es la de aprender y probar instalaciones variantes de sistemas operativos sin tener que disponer de multiples discos, equipos ni desperdiciar espacio de particiones.
Bueno, hasta ahi mi experiancia en virtualizacion.
Conclusion : Es algo que hay que probar antes de morir

 
Gustavo Castro

Crea tu insignia