¿QUÉ ES UNA MÁQUINA VIRTUAL? Una máquina virtual es un software que instalamos en nuestro ordenador, este software nos permite instalar y usar otros sistemas operativos de forma simultanea sobre nuestro sistema operativo. Nota: Tal y como puede verse reflejado en la definición de máquina virtual, en este texto nos estamos focalizando en las maquinas virtuales de sistema. Existen otro tipo de máquinas virtuales, como por ejemplo las máquinas virtuales de proceso o los emuladores. ¿QUÉ CARACTERÍSTICAS TIENE UNA MÁQUINA VIRTUAL? Una vez que hemos definido lo que es una máquina virtual, podemos comentar las características que acostumbran a tener la mayoría de máquinas virtuales existentes en la actualidad: La gran mayoría de máquinas virtuales, como por ejemplo Virtualbox o VMWare, permiten instalar prácticamente cualquier sistema operativo como por ejemplo Linux, Android, Mac OS X, Windows, Chrome OS, etc. Sin embargo existen otras máquinas virtuales, como por ejemplo Virtual PC, Hiper-V o Parallels, que están principalmente destinadas a virtualizar Windows. Cada uno de los sistemas operativos que virtualizamos es completamente independiente de los otros sistemas operativos. De este modo en el caso que una de las máquinas virtuales deje de funcionar, el resto seguirá funcionando sin ningún tipo de problema. Una vez instalado un sistema operativo en la máquina virtual, tenemos que usar el sistema operativo virtualizado del mismo modo que lo usaríamos si lo hubiéramos instalado en nuestro ordenador. Una máquina virtual dispone de todos los elementos de que dispone un ordenador real. Dispone de disco duro, memoria RAM, unidad de CDROM, tarjeta de red, tarjeta de vídeo, etc, pero a diferencia de un ordenador real estos elementos en vez de ser físicos son virtuales. Todos los elementos de una máquina virtual se encapsulan en un conjunto de archivos. Esto permite que podamos copiar un sistema operativo virtual de un ordenador a otro o que podemos realizar copias de seguridad sin ningún tipo de problema y de forma muy fácil y muy rápida. ¿QUÉ NECESITO PARA USAR UNA MÁQUINA VIRTUAL? Actualmente la virtualización de un sistema operativo o servidor se puede implementar por Software o por Hardware. Como en este texto me focalizo en la virtualización por software, lo único que precisamos para poder usar una máquina virtual es un ordenador medianamente actual e instalar y configurar el software de la máquina virtual. Cuanto más potente y actual sea el ordenador que tengamos, mejor experiencia obtendremos trabajando con sistemas operativos virtualizados. Algunos de los puntos importantes para obtener un rendimiento óptimo del sistema operativo virtualizado son los siguientes: Disponer de un procesador rápido y que disponga de capacidad de virtualización por Hardware (Intel VTx/AMD-v). Cuanto mayor sea la capacidad del procesador mejor experiencia de virtualización obtendremos. Cualquier ordenador actual dispone de un procesador apto para virtualizar sistemas operativos. Disponer de espacio suficiente en el disco duro. Además es interesante disponer de un disco duro con una buena la velocidad de lectura y escritura como por ejemplo un disco SSD. Necesitamos disponer de memoria RAM suficiente y adecuada. Cuanta más cantidad de memoria RAM y cuanto más rápida sea, mejores resultados de virtualización obtendremos. Así por lo tanto es mejor tener 4GB de RAM que 2GB, y del mismo modo es mejor disponer de una memoria RAM del tipo DDR4 que DDR3. La cantidad de memoria RAM ideal dependerá del sistema operativo que queremos virtualizar y del número de sistemas operativos que queramos virtualizar de forma simultanea. Si tan solo queremos virtualizar un sistema operativo con 2 o 3 GB de RAM debería ser suficiente. Sin duda el hecho de tener una buena GPU también ayudará a disponer de una mejor experiencia de virtualización. Por lo tanto es recomendable disponer de una buena tarjeta gráfica con aceleración gráfica. ¿CÓMO FUNCIONA UNA MÁQUINA VIRTUAL? Explicar el funcionamiento en detalle de una máquina virtual es algo sumamente complicado y que además poca gente tiene los conocimientos necesarios para hacerlo. No obstante a grandes rasgos podemos decir que una máquina virtual es un software que mediante una capa de virtualización se comunica con el hardware que tenemos disponible en nuestro ordenador consiguiendo de este modo emular la totalidad de componentes de un ordenador real. De este modo la máquina virtual será capaz de emular un disco duro, una memoria RAM, una tarjeta de red, un procesador, etc. Una vez que sabemos esto, cuando abrimos una máquina virtual, como por ejemplo Virtualbox, nos encontramos con un entorno gráfico que nos permitirá configurar y asignar recursos a cada uno de los componentes físicos que emula la máquina virtual. Así por ejemplo en prácticamente la totalidad de máquinas virtuales deberemos definir detalles del siguiente tipo: Espacio que queramos asignar a nuestro disco duro. Memoria RAM que queremos asignar a la máquina virtual. La memoria de nuestra tarjeta gráfica. La configuración de red que queremos. etc. Una vez configurados estos parámetros habremos creado una máquina virtual para instalar un sistema operativo, de este modo tan solo tendremos que abrir la máquina virtual que se acaba de crear e instalar el sistema operativo tal y como si se tratará de un ordenador real normal y corriente. ¿QUÉ UTILIDADES NOS PROPORCIONAN LAS MÁQUINAS VIRTUALES? Las utilidades y beneficios que podemos sacar de una máquina virtual son numerosos. Algunos de los usos que podemos dar a las máquinas virtuales son los siguientes: Para probar sistemas operativos. Además el proceso de una instalación en la máquina virtual es sumamente fácil ya que no nos tendremos que preocupar de crear particiones adicionales en nuestro disco duro, etc. Para usar un software que no está disponible en nuestro sistema operativo. Así por ejemplo si somos usuarios de Linux y queremos usar Photoshop, lo podemos hacer a través de una máquina virtual. En ocasiones tenemos que usar software que únicamente se puede ejecutar en sistemas operativos que son obsoletos. Así, por lo tanto si tenemos un programa que solo se puede usar en Windows 98, podemos crear una máquina virtual con Windows 98 y ejecutar y usar el software sin ningún tipo de problema. Podemos experimentar en el sistema operativo que corre dentro de la máquina virtual haciendo cosas que no nos atreveríamos a realizar con nuestro sistema operativo, como por ejemplo aplicar una actualización de software, navegar de forma segura en una página web que consideramos sospechosa, etc. Podemos usar las máquinas virtuales como sandbox con el fin de por ejemplo ejecutar aplicaciones maliciosas o abrir correos sospechosos en un ambiente controlado y seguro. Podemos crear/simular una red de ordenadores con tan solo un ordenador. Esta red de ordenadores virtualizados la podemos usar con fines formativos y de este modo adquirir conocimientos sobre administración de redes. Si eres un desarrollador de software puedes checar si el programa que estás desarrollando funciona correctamente en varios sistemas operativos. Para probar versiones alfa, Beta y Release candidate de ciertos programas y sistemas operativos. Para montar un servidor web, un servidor VPN, un servidor de correo o cualquier otro tipo de servidor. Para probar multitud de programas en Windows y evitar que se ensucie el registro mediante las instalaciones y desinstalaciones de los programas. ¿QUÉ VENTAJAS NOS PROPORCIONAN LAS MÁQUINAS VIRTUALES? Algunas de las ventajas que proporcionan las máquinas virtuales y la virtualización son las siguientes: Si se desconfigura un servidor o un sistema operativo virtualizado es sumamente fácil de restaurar si lo comparamos con un máquina real. Si tomamos las precauciones necesarias podemos restaurar el estado que tenia un sistema operativo virtualizado, o un servidor, de forma muy fácil y muy rápida. Si hablamos del entorno empresarial, la virtualización de sistemas operativos y de servidores supone un ahorro económico y de espacio considerable. Mediante el uso de la virtualización evitamos la inversión en multitud de equipos físicos ahorrando dinero y espacio. Como acabamos de ver, el uso de máquinas virtual implica disponer de menos equipos físicos. Por lo tanto el hecho de virtualizar servidores o sistemas operativos puede suponer un ahorro importante en mantenimiento y en consumo energético. Mediante la virtualización y el balanceo dinámico podemos incrementar las tasas de servicio de un servidor del siguiente modo. Si disponemos de un servidor web podemos asignar recursos adicionales al servidor, como por ejemplo memoria RAM y CPU, en los picos de carga para evitar que el servidor se caiga y de este modo incrementar la tasa de servicio. Una vez finalizado el pico de carga podemos desviar los recursos aplicados al servidor web a otra necesidad que tengamos. Por lo tanto aparte de mejorar la tasa de servicio se pueden optimizar mejor los recursos. Si estamos usando una máquina virtual en un entorno de producción, podemos ampliar los recursos de un sistema operativo o servidor de una forma muy sencilla. Tan solo tenemos que acceder al software de virtualización y asignar más recursos de forma muy sencilla. Es sumamente fácil crear un entorno para realizar pruebas de todo tipo. Así de este modo obtendremos fácilmente un entorno de pruebas completamente aislado del resto de sistemas. Las máquinas virtuales y la virtualización permiten usar un solo servicio por servidor virtualizado de forma fácil y sencilla. De este modo aunque se caiga uno de los servidores virtualizado el otro seguirá funcionando. INCONVENIENTES DE VIRTUALIZAR UN SISTEMA OPERATIVO Algunos de los inconvenientes que puede tener el uso de una máquina virtual, o sistema operativo virtualizado son los siguientes: Para usar una máquina virtual en condiciones favorables, necesitamos un ordenador potente. Tenemos que tener en cuenta que si usamos 2 sistemas operativos de forma simultanea estamos empleando hasta el doble de recursos. No obstante cualquier ordenador doméstico medianamente actual dispone de los recursos suficientes para usar una máquina virtual no dedicada. Los sistemas operativos y los programas se ejecutaran con mayor lentitud en las máquinas virtuales. Esto es debido a que las máquinas virtuales no pueden sacar un rendimiento ideal del hardware que tenemos en nuestro equipo. Cuanto más potente sea nuestro ordenador menos se notará la pérdida de rendimiento. Si tenemos un problema en el ordenador que aloja el sistema operativo anfitrión puede caerse el servicio en la totalidad de máquina virtuales. Por lo tanto el ordenador que hace funcionar la máquina virtual es una parte crítica. A pesar de los inconvenientes que se citan en este apartado, bajo mi punto de vista la virtualización y las máquinas virtuales proporcionan unas ventajas y una flexibilidad que compensan claramente los inconvenientes que acabamos de citar. ¿QUÉ MÁQUINAS VIRTUALES PODEMOS INSTALAR EN NUESTRO ORDENADOR? Hoy en día tenemos a nuestra disposición varios menejadores de maquinas virtuales. Algunas de ellos son las siguientes: Virtualbox: Software desarrollado por Oracle. Se trata de un software multiplataforma capaz de virtualizar prácticamente la totalidad de sistemas operativos con arquitectura x86/amd64. Es la máquina virtual multiplataforma, la base de este software dispone de una la licencia GPL2, mientras que el pack de extensiones que añaden funcionalidades están bajo licencia privativa. Virtualbox es gratuito para un uso no comercial. Vmware Workstation Player: Software privativo multiplataforma desarrollado por EMC corporation y que es utilizado ampliamente en el entorno profesional en las áreas del cloud computing entre muchas otras. Al igual que Virtualbox, esta máquina virtual nos permite virtualizar una gran diversidad de sistemas operativos. Vmware dispone de muchas soluciones de virtualización y prácticamente todas son de pago, no obstante Vmware Workstation Player es totalmente gratuita para un uso no comercial. Parallels: Aunque se trata de una máquina virtual multiplataforma, acostumbra a ser usado por los usuarios del sistema operativo OS X de Apple que desean virtualizar el sistema operativo Windows. Esta máquina virtual es de pago y únicamente puede virtualizar los sistemas operativos Windows y Mac OS. Windows Virtual PC: Software gratuito y privativo propiedad de Microsoft que se puede usar tanto en Windows como en Mac OS. Virtual PC está destinado únicamente a Virtualizar sistemas operativos Windows. Este software se puede usar y descargar gratuitamente a través del siguiente enlace. QEMU/KVM: Software libre multiplataforma que dispone de licencia GPL 2. QEMU permite virtualizar un gran número de sistemas operativos y además soporta varios tipos de arquitectura como por ejemplo X86, x86-64, MIPS, Arm, PowerPC, etc. El rendimiento que ofrece QEMU es igual o superior a las opciones que hemos mensionado con anterioridad. Una gran ventaja DE QEMU que permite usar una máquina virtual sin necesidad de tener privilegios root. Nota: Aparte de las máquinas virtuales citadas existen muchas otras más.