¿Qué es una Máquina Virtual? (Por qué y cuándo usarlo)

Si trabaja en la industria del software o en torno a ella, probablemente haya oído hablar de las máquinas virtuales. Si no es así, te estarás preguntando qué son y para qué sirven.

Como ingeniero de software, uso máquinas virtuales a diario. Son herramientas potentes en el desarrollo de software, pero también tienen otros usos. Muchas empresas, también conocidas como máquinas virtuales, las utilizan debido a su flexibilidad, confiabilidad y rentabilidad; también previenen desastres por pruebas de software fuera de control.

Echemos un vistazo a qué son las máquinas virtuales y por qué se usan.

¿Qué es una máquina virtual?

Una máquina virtual es una instancia de un sistema operativo (SO) como Windows, Mac OS o Linux que se ejecuta dentro del sistema operativo principal de una computadora.

Por lo general, se ejecuta en una ventana de aplicación en su escritorio. Una máquina virtual tiene una funcionalidad completa y actúa como una computadora o máquina separada. En esencia, una máquina virtual es una computadora virtual que se ejecuta dentro de otra computadora conocida como máquina host.

Máquina virtual 1
Imagen 1: Máquina virtual ejecutándose en una computadora portátil.

Una máquina virtual no tiene hardware (memoria, disco duro, teclado o monitor). Utiliza hardware simulado de la máquina host. Debido a esto, varias máquinas virtuales, también denominadas ‘invitados’, se pueden ejecutar en una sola máquina host.

Máquina virtual 2
Imagen 2: máquina host que ejecuta varias máquinas virtuales.

El host también puede ejecutar varias máquinas virtuales con diferentes sistemas operativos, incluidos Linux, Mac OS y Windows. Esta capacidad depende de un software llamado hipervisor (ver Imagen 1 arriba). El hipervisor se ejecuta en la máquina host y le permite crear, configurar, ejecutar y administrar máquinas virtuales.

El hipervisor asigna espacio en disco, programa el tiempo de procesamiento y administra el uso de memoria para cada máquina virtual. Esto es lo que hacen aplicaciones como Oracle VirtualBox, VMware, Paralelas, Xen, Microsoft Hyper-V y muchos otros lo hacen: son hipervisores.

Un hipervisor puede ejecutarse en una computadora portátil, PC o servidor. Hace que las máquinas virtuales estén disponibles para la computadora local o los usuarios distribuidos a través de una red.

Diferentes tipos de máquinas virtuales y entornos requieren diferentes tipos de hipervisores. Echemos un vistazo a algunos de ellos.

Tipos de máquinas virtuales

Máquinas virtuales del sistema

Las máquinas virtuales del sistema, a veces llamadas virtualización completa, son ejecutadas por un hipervisor y brindan la funcionalidad de un sistema informático real. Utilizan el sistema operativo nativo del host para administrar y compartir los recursos del sistema.

Las máquinas virtuales del sistema a menudo requieren un host potente con CPU rápidas o múltiples, grandes cantidades de memoria y toneladas de espacio en disco. Algunos, que se ejecutan en computadoras personales o portátiles, pueden no requerir la potencia informática que necesitan los servidores virtuales de las grandes empresas; sin embargo, se ejecutarán lentamente si el sistema host no es adecuado.

Procesar máquinas virtuales

Las máquinas virtuales de proceso son bastante diferentes de las SVM: es posible que las tenga ejecutándose en su máquina y ni siquiera lo sepa. También se conocen como máquinas virtuales de aplicación o entornos de tiempo de ejecución gestionados (MRE). Estas máquinas virtuales se ejecutan dentro de un sistema operativo host y admiten aplicaciones o procesos del sistema.

¿Por qué usar un PVM? Realizan servicios sin depender de sistemas operativos o hardware específicos. Tienen su propio pequeño sistema operativo con solo los recursos que necesitan. El MRE está en un ambiente separado; no importa si se ejecuta en Windows, Mac OS, Linux o cualquier otra máquina host.

Una de las máquinas virtuales de proceso más comunes es una de la que probablemente haya oído hablar y que haya visto ejecutándose en su computadora. Se utiliza para ejecutar aplicaciones Java y se denomina Java Virtual Machine o JVM para abreviar.

Tipos de hipervisores

La mayoría de las máquinas virtuales que nos interesan utilizan un hipervisor porque emulan un sistema informático completo. Hay dos tipos diferentes de hipervisores: hipervisores Bare Metal e hipervisores alojados. Echemos un vistazo rápido a ambos.

Hipervisor de metal desnudo

Los BMH también pueden denominarse hipervisores nativos y se ejecutan directamente en el hardware del host en lugar de ejecutarse dentro del sistema operativo del host. De hecho, toman el lugar del sistema operativo del host, programando y administrando el uso del hardware por parte de cada máquina virtual, eliminando así al ‘intermediario’ (el sistema operativo del host) en el proceso.

Los hipervisores nativos se utilizan normalmente para máquinas virtuales empresariales a gran escala, que las empresas utilizan para proporcionar recursos de servidor a los empleados. Microsoft Azure o Amazon Web Services son máquinas virtuales alojadas en este tipo de arquitectura. Otros ejemplos son KVM, Microsoft Hyper-V y VMware vSphere.

Hipervisor alojado

Los hipervisores alojados se ejecutan en sistemas operativos estándar, como cualquier otra aplicación que ejecutamos en nuestras máquinas. Utilizan el sistema operativo del host para administrar y distribuir recursos. Este tipo de hipervisor es más adecuado para usuarios individuales que necesitan ejecutar múltiples sistemas operativos en sus máquinas.

Estos incluyen aplicaciones como Oracle VirtualBox, VMware Workstations, VMware Fusion, Parallels Desktop y muchas otras. Puede encontrar información más detallada sobre los hipervisores alojados en nuestro artículo, El mejor software de máquina virtual.

¿Por qué usar máquinas virtuales?

Ahora que tiene una comprensión básica de lo que es una máquina virtual, probablemente pueda pensar en algunas aplicaciones excelentes. Estas son algunas de las principales razones por las que las personas usan máquinas virtuales.

1. Económico

Las máquinas virtuales son rentables en numerosas situaciones. Uno de los más destacados es en el mundo empresarial. El uso de servidores físicos para proporcionar recursos a los empleados puede resultar muy costoso. El hardware no es barato y mantenerlo es aún más costoso.

El uso de máquinas virtuales como servidores empresariales ahora se ha convertido en la norma. Con máquinas virtuales de un proveedor como MS Azure, no hay compras iniciales de hardware ni tarifas de mantenimiento. Estas máquinas virtuales se pueden instalar, configurar y usar por solo unos centavos la hora. También se pueden apagar cuando no se usan y no tienen ningún costo.

El uso de una VM en su máquina también puede ser un gran ahorro de dinero. Si necesita trabajar en múltiples sistemas operativos o diferentes configuraciones de hardware, puede
use múltiples máquinas virtuales en un host, sin necesidad de salir y comprar una computadora separada para cada tarea.

2. Escalable y Flexible

Ya sean servidores empresariales o máquinas virtuales que se ejecutan en su computadora portátil, las máquinas virtuales son escalables. Es fácil ajustar los recursos para que se ajusten a sus necesidades. Si necesita más memoria o espacio en el disco duro, simplemente acceda al hipervisor y vuelva a configurar la máquina virtual para tener más. No es necesario comprar hardware nuevo y el proceso se puede completar rápidamente.

3. Configuración rápida

Una nueva VM se puede configurar rápidamente. He tenido casos en los que necesitaba una nueva configuración de VM, llamé a mi compañero de trabajo que los administra y los tenía listos para usar en menos de una hora.

4. Recuperación ante desastres

Si está tratando de evitar la pérdida de datos y prepararse para la recuperación ante desastres, las máquinas virtuales pueden ser una excelente herramienta. Son fáciles de respaldar y se pueden distribuir en diferentes ubicaciones si es necesario. Si un tercero como Microsoft o Amazon aloja las máquinas virtuales, estarán fuera del sitio, lo que significa que sus datos estarán seguros si su oficina se incendia.

5. Fácil de reproducir

La mayoría de los hipervisores le permiten hacer una copia o imagen de una máquina virtual. La generación de imágenes le permite generar fácilmente reproducciones exactas de la misma máquina virtual base para cualquier situación.

En el entorno en el que trabajo, le damos a cada desarrollador una VM para que la use para el desarrollo y las pruebas. Este proceso nos permite tener una imagen configurada con todas las herramientas y software necesarios. Cuando tenemos un nuevo desarrollador incorporado, todo lo que tenemos que hacer es hacer una copia de esa imagen, y tienen lo que necesitan para comenzar a trabajar.

6. Perfecto para desarrollo/prueba

Una de las mejores ventajas de usar máquinas virtuales es que son una herramienta perfecta para el desarrollo y prueba de software. Las VM permiten a los desarrolladores desarrollar en múltiples plataformas y entornos en una sola máquina. Si esa máquina virtual se corrompe o destruye, se puede crear una nueva rápidamente.

Permiten que un probador tenga un nuevo entorno limpio para cada ciclo de prueba. He trabajado en proyectos en los que configuramos scripts de prueba automatizados que crean una nueva VM, instalamos la última versión del software, ejecutamos todas las pruebas requeridas y luego eliminamos la VM una vez que se completaron las pruebas.

Las máquinas virtuales funcionan espléndidamente para pruebas y revisiones de productos como las que hacemos aquí en TechFewer.com. Puedo instalar aplicaciones en una máquina virtual que se ejecuta en mi máquina y probarlas sin saturar mi entorno principal.

Cuando termine las pruebas, siempre puedo eliminar la máquina virtual y luego crear una nueva cuando la necesite. Este proceso también me permite probar en múltiples plataformas aunque solo tengo una máquina con Windows.

Palabras finales

Como puede ver, las máquinas virtuales son una herramienta rentable y versátil que se puede utilizar para muchas aplicaciones. Ya no necesitamos comprar, configurar y mantener hardware costoso para brindar acceso al servidor a evaluadores, desarrolladores y otros. Las máquinas virtuales nos dan la flexibilidad para crear fácil y rápidamente los sistemas operativos, el hardware y los entornos que necesitamos, en cualquier momento.