Máquinas virtuales en Ubuntu/Linux

En un mundo ideal, Adobe produciría versiones de Photoshop para Linux o GIMP no sólo sería “comparable” con éste, sino igual o mejor; lo mismo con Microsoft Office y OpenOffice… pero la realidad simplemente no es así —valga decir que tanto GIMP como OpenOffice son excelentes programas, pero por diversos motivos (por ejemplo, simple costumbre, dificultad o falta de ganas para aprender a manejar un software distinto al que siempre hemos utilizado) necesitamos recurrir a software diseñado para Windows, y que con [Wine->@wiki] toma más esfuerzo la instalación y puesta en marcha que su utilización para tus propios motivos.

Cualquiera sea la razón, la tecnología de [virtualización->@wiki] nos ofrece una estupenda oportunidad para poder quedarnos solamente con un sistema operativo sin necesidad de reiniciar cada vez que necesitemos ocupar alguno de estos programas. La idea básica es la siguiente: crear una [máquina virtual->@wiki] (algo así como un computador simulado dentro de tu computador “físico”) sobre la que es posible instalar y ejecutar otros sistemas operativos, y por consiguiente, cualquier programa que haya sido creado específicamente para ellos.

En Ubuntu/Linux, la oferta no es limitada, y en este artículo comentaré mi experiencia probando tres de los productos más populares para esta tarea: VMware Server, QEMU y VirtualBox.

VMware Server

VMware Éste es un producto propietario de virtualización creado por VMware y distribuido gratuitamente. Para utilizarlo, es necesario registrarse y aceptar una licencia —que, desgraciadamente, limita la posibilidad de publicar resultados de benchmarks a menos que sean aprobados por la empresa— e instalarlo vía apt-get o compilándolo desde las fuentes que se pueden descargar desde su sitio web.

Una vez instalado, la creación de la máquina virtual es bastante sencilla gracias a una interfaz gráfica bien cuidada y un proceso guiado por un asistente que permite seleccionar las alternativas más útiles y comunes para tener nuestra máquina virtual corriendo al cabo de unos cuantos clicks. Entre otras cosas, permite montar imágenes de CD o acceder a la unidad óptica desde la máquina virtual, establecer el acceso a internet y conectar dispositivos USB.

Además cuenta con un complemento llamado VMware Tools que una vez instalado en la máquina virtual permite compartir transparentemente el mouse entre la máquina física y la virtual, utilizar un mejor driver de pantalla y mejorar el rendimiento de la red… al parecer, también debería permitir compartir una carpeta del equipo físico con la máquina virtual a través de [Samba->Samba (programa)@wiki] para poder montarla como unidad de disco en red, pero en lo personal no me funcionó —no sé si por ineptitud, algún problema de configuración u otra dificultad.

A prueba

Dado que no es posible publicar resultados de pruebas de [benchmark->@wiki], me limitaré a comentar que el rendimiento de la máquina virtual es bastante bueno, cercano a la velocidad esperada de la ejecución nativa del sistema operativo (o sea, corriendo directamente sobre el hardware; en otras palabras, near native). Lo que pensé que podría ser una de sus mayores ventajas en comparación a los otros sistemas de virtualización, extrañamente, no lo fue tanto: la posibilidad de aprovechar los dos núcleos de un procesador Intel Core Duo en realidad no marcaba una diferencia tan significativa en el rendimiento de la máquina virtual ni en la percepción que se pudiera tener del mismo —me estoy refiriendo, en primer lugar, a lo que los números dicen sobre el rendimiento de la VM, y por otra parte a la sensación subjetiva del mismo.

En general, VMware Server otorga lo que se podría esperar de un sistema de virtualización: es fácil de instalar y utilizar y su rendimiento es bastante aceptable. Aparte de mi dificultad para compartir una carpeta a través de Samba, sólo tuve otra gran dificultad con él: la utilización de dispositivos USB; más específicamente, al tratar de conectar un disco duro externo (conectado por USB) a la máquina virtual, todo parece indicar que se desmontó de manera no segura de la máquina física, causando que fuera imposible volver a montarlo en Linux pues me indicaba que el sistema de archivos estaba corrupto, lo que me ha traído un gran dolor de cabeza al tratar de acceder nuevamente al disco; y sin una carpeta compartida ni el disco externo para servir como “puente” entre Linux y la VM, éstas quedaban prácticamente aisladas la una de la otra, sin posibilidad de compartir archivos entre ellas. Desconozco si esto habrá sido por algún error mío o del software, pero sinceramente no se lo deseo a nadie —este problema, quiero decir; en cuanto a VMware Server, aun creo que es una buena alternativa, aunque en lo personal no es mi preferida.

Cabe mencionar que VMware también ofrece gratuitamente VMware Player, un programa para ejecutar (pero no crear) máquinas virtuales.

VMware/Server – Community Ubuntu Documentation

QEMU

QEMU es probablemente la opción más “clásica” entre los usuarios de Linux. Desarrollado por Fabrice Bellard (también ligado al desarrollo de [ffmpeg->@wiki]), es [software libre->@wiki] licenciado bajo LGPL (la mayoría del programa) y GPL (la emulación en modo de usuario).

A diferencia del anterior (y de VirtualBox) su modo de operación es principalmente vía línea de comandos, lo que quizás podría ahuyentar a más de alguno… bueno, no debería, porque gracias a la documentación creada por la comunidad de Ubuntu (y seguramente disponible también para otras tantas distribuciones) en base a concisas y precisas instrucciones, es posible tenerlo corriendo en poco tiempo sin ningún problema.

Y para quienes la ventana de gnome-terminal definitivamente les da alergia, existe también una GUI (la pueden encontrar con Synaptic en los repositorios de Ubuntu) pero que no se caracteriza precisamente por su simplicidad… a decir verdad, es algo enredada a menos que uno sepa exactamente lo que está haciendo; por otra parte, lo bueno es que da acceso a las opciones más importantes de QEMU, desde la creación del disco virtual hasta la selección de carpetas compartidas mediante Samba.

Valga decir que QEMU por sí solo es reconocidamente lento… pero lento, lento. No importa qué tan rápida sea tu máquina física, tu VM va a andar muy lenta en QEMU… lógicamente, a alguien se le ocurrió algo para tratar de solucionar este problema, y así nació [KQEMU->@en.wiki], un driver que hace las veces de acelerador, permitiendo una velocidad razonable de la máquina virtual. Al igual que QEMU, KQEMU se distribuye gratuitamente con licencia GPL.

Lamentablemente, KQEMU tiene una desventaja: para usar este acelerador es necesario que tanto el huésped (o host, o máquina física) como el invitado (o guest, o máquina virtual) utilicen procesadores x86 o compatibles (Intel, AMD).

A prueba

Y el veredicto es… me quedo con otro.

K/QEMU tiene prácticamente todo lo que me haría comprometerme con él —en resumen: funciona, es software libre (cada día me doy más cuenta de que esto en sí es una ventaja), tiene un desarrollo activo y pujante, y no solo busca igualar sino sobrepasar las prestaciones de soluciones comerciales.

Pero… es dolorosamente lento. Sin acelerador, lento. Con acelerador, casi-igual de lento. En verdad la diferencia fue tan mínima que varias veces tuve que chequear que estaba funcionando con el acelerador… y tristemente, sí estaba funcionando, pero todo funcionaba igual de lento.

Como éste no prohibía la publicación de resultados de benchmarks, me propuse comparar su rendimiento con y sin acelerador… y debo decir que todo fue tan insoportablemente lento que preferí detener las pruebas, o hubiese estado esperando mucho más rato del que quería.

A su favor debo decir dos cosas: en primer lugar, reiterar que su desarrollo se ve bastante activo, por lo que no me extrañaría encontrar grandes mejoras en poco tiempo, incluyendo soporte para núcleos múltiples. En segundo lugar, en las comparaciones que encontré QEMU era señalado sin variaciones como una tortuga, pero con KQEMU los resultados eran bastante distintos, near native, lo que me hace pensar que es posible que alguna particularidad propia de mi sistema haya influído para no obtener la tremenda mejora de rendimiento que éste supone.

VirtualBox

VirtualBox Una solución de virtualización desarrollada por innotek GmbH, que viene en dos sabores: una versión GPL totalmente funcional, pero limitada con respecto a la otra versión, comercial y propietaria (o sea, que no es ni código abierto ni software libre, aunque sí gratis) que incorpora soporte para USB, directorios compartidos con Samba y otros chiches más (que honestamente no alcanzo a comprender muy bien de qué se tratan).

En su página de descargas es posible encontrar paquetes para Ubuntu, Debian (también en repositorios), Fedora y otras distribuciones Linux, un instalador para Windows y uno para MacOSX que en este momento está en su segunda beta… no el instalador, sino el software, quiero decir.

En estas condiciones, su instalación es bastante sencilla, y su puesta en funcionamiento también. Es algo similar a VMware en el sentido que utiliza una interfaz gráfica y un asistente para la creación de la VM, y en que también cuenta con un paquete de “mejoras” que se instala en el guest. Con éste (y en la versión comercial) es posible tener integración transparente del mouse y teclado entre la máquina física y la virtual, además de auto-ajustar la resolución del sistema guest al tamaño de la ventana —a propósito: la placa de video emulada funciona de manera predeterminada con 8 MB de memoria, pero se puede aumentar mediante la GUI… aunque en realidad no le veo mucho propósito.

VirtualBox intenta ejecutar el código del invitado directamente en el procesador tanto como sea posible; cuando esto no es posible recurre a un dynamic recompiler basado en QEMU pero con algunas mejoras que le permiten obtener un desempeño bastante (mucho) mejor.

A prueba

Lo digo altiro: fue el que más me gustó. Desde la máquina virtual, la instalación del sistema operativo, poder ajustar las opciones con facilidad… ¡y el rendimiento! ¡Oh, el rendimiento!

Así de bueno.

En verdad, según la mayoría de las opiniones que he leído al respecto, su velocidad es “comparable” con los productos de VMware, pero debo decir que la experiencia subjetiva de operar sobre el sistema invitado es mucho mejor… las razones no me las pregunten, pero se siente defintivamente más “suave”. Probablemente, el ajuste automático de la resolución de pantalla ayuda bastante

Éste fue de hecho el primero de estos programas que probé, y el único en el que todo funcionó perfectamente a la primera, y especialmente (lo que más me interesaba) al probar Photoshop 7 y MS Office 2003.

Sin poder publicar una comparativa entre éste y VMware, sólo puedo comentar que en números andan muy parejos, a veces uno y otras veces el otro a la cabeza… y esto a pesar de que en VMware tenía soporte para los dos núcleos del procesador.

En definitiva, si tendría que recomendar VMware, K/QEMU o VirtualBox, me quedaría totalmente con éste.

VirtualBox – Community Ubuntu Documentation

Otras alternativas

Por razones de fuerza mayor, quedó fuera de este comentario una de las alternativas que más me interesaba probar: KVM. Esas “razones” en verdad son una sola: mi procesador no soporta la tecnología de virtualización necesaria para KVM, por lo que quedé con ganas; de toda la serie de procesadores Intel Core Duo uno de los pocos que no tiene soporte para VT es el modelo T2250, hasta donde recuerdo todos los restantes Intel Core Duo, Intel Core 2 Duo y las últimas CPU de AMD lo tienen.

… De todos modos ahí está, y como siempre, pueden contar con la comunidad de Ubuntu para hallar algo de documentación al respecto: The Kernel Virtual Machine – Community Ubuntu Documentation

… Y para los que todavía quedaron con ganas de explorar más, siempre pueden recurrir a Wikipedia (aunque sea en inglés): Comparison of virtual machines – Wikipedia, the free encyclopedia.