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 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 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 (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 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, 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), es software libre 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, 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.

  • Gabriel

    Excelente post. Por tí es por que me decido de usar VirtualBox.

    Algo que me gustó de VirtualBox es que se puede colocar los directorios de los discos duros y de la máquina virtual en una partición distinta en la que tenemos nuestro sistema anfitrión.
    Archivos -> preferencias, en la pestaña de general.
    Con esto, para mí, queda más ordenado.

    Les dejo unos paso a paso de VirtualBox
    http://lampharin.wordpress.com/2008/04/10/crear-una-maquina-virtual-con-virtualbox-156/
    http://lampharin.wordpress.com/2008/04/13/como-instalar-ubuntu-710-en-una-maquina-virtual-del-virtualbox/

  • http://www.oswaldointeresante.blogspod.com oswaldo garcia

    QUE BUEN ARTICULO TE FELICITO ME AYUDO DE MUCHO
    ESPERO QUE AGA MAS RELACIONADO CON WINE Y ESO VALE
    VOY A PROBAR QEMU AVER QUE TAL PERO ME AN RECOMENDADO MUCHISIMO VITUALBOX AVER QUE TAL

  • http://idontnow robert

    comprence una vida nerds

  • http://www.cosmocax.com Israel

    Gracias Felipe,

    De mi etapa de Güindous conocía el VMWare, pero ya que estoy haciendo inmersión absoluta en GNU/Linux, me voy a animar con el Virtual Box, tu opinión me ha ayudado..

    Saludos

    P.D.: Y lo instalo porque tengo una impresora sin soporte, porque pienso abandonar lo poco que sé de Potochó o Paint Shop Pro para darme de cabezazos con el GIMP. Así de radical voy…jajaja

  • Oscar

    Es cierto lo que mencionas acerca de Virtualbox. En realidad funciona de manera perfecta. Tengo Ubuntu Lucid.Virtualbox crea de manera automática las carpetas compartidas (sin tantos líos de configurar samba como antes). Lo único que no me gusta es que no soporta usb (la versión gratuita), por eso estoy buscando alternativas. Gracias por el post.

    Ah y para robert: Prometemos comprarnos una vida si tú te compras un dipsionario jajaja

    • http://felipe.lv Felipe Lavín Z.

      Hasta donde yo sé, las dos versiones de VirtualBox son gratuitas; una es completamente open source y la otra incluye ciertas tecnologías propietarias (entre ellas, la conectividad USB de modo más sencillo). Para prácticamente todos los fines, la que no es 100% open source siempre es gratuita, ya que su definición de “uso personal” es bastante amplia. Para instalarla, hay que agregar el repositorio correspondiente a través de Synaptic (no es la que viene incluida en los repositorios por defecto de Ubuntu, pero de todos modos tiene una excelente mantención y versiones para todas las versiones relevantes de Ubuntu)

  • http://www.cosmocax.com Israel

    @Oscar:

    Tengo el mismo problema que tú, busco algo con soporte USB, y veo que lo probado hasta ahora…

    Ya nos contarás, aquí tienes un interesado…

    Saludos

  • Evelyn

    Hola, soy nueva en esto, me baje el virtual box y quiero crear una máquina virtual de Ubuntu, lo voy a usar para programación y quisiera saber cuanto me recomiendan q considere en RAM y disco duro. Tengo windows vista y mi PC de 320 GB de disco duro y 3GB de RAM

  • http://www.yukei.net Felipe Lavín Z.

    @Evelyn: supongo que podrías asignar 1GB de RAM y unos 15 GB para el disco son más que suficientes. De todos modos, recuerda que variar la cantidad de RAM es bastante simple (la puedes aumentar o disminuir con un simple slider) y que si eliges un disco de expansión dinámica al crear la máquina (es la opción predeterminada), sólo estarás utilizando lo que efectivamente estás usando en la máquina virtual (eventualmente, también puedes aumentar el tamaño del disco virtual, aunque es un poco más complicado).

    Por cierto, ¿no has considerado instalar Ubuntu como segundo sistema? Lo puedes hacer con Wubi (es un instalador que funciona desde Windows, que es sencillo y te permite desinstalar fácilmente) o con el mismo instalador del Live-CD, que viene totalmente preparado para que puedas usar los dos sistemas en paralelo.

  • AdrianM

    Interesante artículo, sobre todo me gusta como hablas de las diferencias en desempeño de forma “subjetiva” y es que es así como siempre lo medimos, al tante. Gracias por el artículo

  • Pingback: AY MAG » Ubuntu es atreverse