¿Qué son las máquinas virtuales (VM)?
Una máquina virtual es una representación virtual de un sistema físico y las unidades de cálculo de la primera generación de cloud computing.
Fondo negro y azul
¿Qué son las máquinas virtuales (VM)?

Una máquina virtual es una representación virtual o emulación de un sistema físico. Con frecuencia, se les denomina simplemente "invitado", mientras que la máquina física en la que se ejecutan se conoce como "host" o anfitrión.

La virtualización permite crear varias máquinas virtuales, cada una con su propio sistema operativo (SO) y aplicaciones, en una única máquina física. Una máquina virtual no puede interactuar directamente con un sistema físico. En su lugar, necesita una capa de software ligera denominada hipervisor para coordinarse entre ella y el hardware físico subyacente. El hipervisor asigna recursos informáticos físicos, como procesadores, memoria y almacenamiento, a cada máquina virtual. Mantiene cada máquina virtual separada de las otras para que no interfieran entre sí.

Aunque esta tecnología puede recibir muchos nombres: servidor virtual, instancia de servidor virtual (VSI) o servidor privado virtual (VPS), en este artículo se referirá a ellas simplemente como máquinas virtuales.

Cómo funciona la virtualización

Cuando se utiliza un hipervisor en un sistema físico o servidor, (también conocido como servidor bare metal), permite que el sistema físico separe su sistema operativo y aplicaciones de su hardware. Entonces, puede dividirse en varias "máquinas virtuales" independientes.

Cada una de estas nuevas máquinas virtuales puede ejecutar sus propios sistemas operativos y aplicaciones de forma independiente, al tiempo que comparten los recursos originales del servidor bare metal, que el hipervisor gestiona. Estos recursos incluyen memoria, RAM, almacenamiento, etc.

El hipervisor actúa como una especie de policía de tráfico que dirige y asigna los recursos de bare metal a cada una de las distintas máquinas virtuales nuevas, asegurando que no se interrumpan entre sí.

Existen dos tipos principales de hipervisores.

Los hipervisores de tipo 1 se ejecutan directamente en el hardware físico (normalmente un servidor), ocupando el lugar del sistema operativo. Lo más frecuente es que utilice un producto de software independiente para crear y manipular máquinas virtuales en el hipervisor. Algunas herramientas de gestión, como vSphere de VMware, le permiten seleccionar un sistema operativo invitado para instalar en la máquina virtual.

Puede utilizar una máquina virtual como plantilla para otras, duplicándola para crear nuevas. En función de sus necesidades, puede crear varias plantillas de máquina virtual para distintas finalidades, como pruebas de software, bases de datos de producción y entornos de desarrollo.

Los hipervisores de tipo 2 se ejecutan como una aplicación dentro de un sistema operativo de host y normalmente se dirigen a plataformas de escritorio o portátiles de un solo usuario. Con un hipervisor de tipo 2, puede crear manualmente una máquina virtual y, a continuación, instalar un sistema operativo invitado en ella. Puede utilizar el hipervisor para asignar recursos físicos a la máquina virtual, estableciendo manualmente la cantidad de núcleos de procesador y memoria que puede utilizar. Dependiendo de las funcionalidades del hipervisor, también puede establecer opciones como la aceleración 3D para gráficos.

El siguiente vídeo explica los conceptos básicos de la virtualización. También puede consultar el artículo "5 ventajas de la virtualización".

Ventajas de las máquinas virtuales

Las máquinas virtuales ofrecen varias ventajas sobre el hardware físico tradicional:

  • Utilización de recursos y ROI mejorado: como se ejecutan varias máquinas virtuales en un único sistema físico, los clientes no tienen que comprar un nuevo servidor cada vez que quieren ejecutar otro sistema operativo, y pueden obtener más rendimiento de cada pieza de hardware que ya poseen.

  • Escalabilidad: con cloud computing, es fácil desplegar varias copias de la misma máquina virtual para atender mejor los incrementos en la carga.

  • Portabilidad: las máquinas virtuales se pueden reubicar según sea necesario entre los sistemas físicos de una red. Esto permite asignar cargas de trabajo a servidores que cuentan con potencia informática de reserva. Las máquinas virtuales pueden incluso moverse entre entornos en local y cloud, por lo que resultan especialmente útiles en escenarios de cloud híbrido, en los que comparte recursos informáticos entre el centro de datos y un proveedor de servicios de cloud.

  • Flexibilidad: crear una máquina virtual es más rápido y fácil que instalar un sistema operativo en un servidor físico porque puede clonar una máquina virtual con el sistema operativo ya instalado. Los desarrolladores y los probadores de software pueden crear nuevos entornos bajo demanda para manejar nuevas tareas a medida que surgen.

  • Seguridad: las máquinas virtuales mejoran la seguridad de varias formas en comparación con los sistemas operativos que se ejecutan directamente en el hardware. Una máquina virtual es un archivo que un programa externo puede escanear en busca de software malicioso. Puede crear una instantánea completa de la máquina virtual en cualquier momento y, a continuación, restaurarla a ese estado si se infecta con malware, con lo que la máquina virtual vuelve a un punto anterior en el tiempo. La rápida y fácil creación de las máquinas virtuales también permite suprimir completamente una máquina virtual comprometida y luego volver a crearla rápidamente, acelerando la recuperación de las infecciones de malware.
Casos de uso de máquinas virtuales

Las máquinas virtuales tienen varios usos, tanto para los administradores de TI de empresa como para los usuarios.

Cloud computing: durante los últimos 10 años y más, las máquinas virtuales han sido la unidad fundamental de computación en cloud, con las cuales se han ejecutado y escalado correctamente decenas de tipos diferentes de aplicaciones y cargas de trabajo.

Soporte para DevOps: las máquinas virtuales son una gran manera de dar soporte a los desarrolladores empresariales, que pueden configurar plantillas de máquina virtual con los valores para sus procesos de desarrollo y pruebas de software. Pueden crear máquinas virtuales para tareas específicas como pruebas de software estático, e incluir estos pasos en un flujo de trabajo de desarrollo automatizado. Todo esto ayuda a agilizar la cadena de herramientas DevOps.

Probar un nuevo sistema operativo: una máquina virtual le permite probar un nuevo sistema operativo en el escritorio sin que afecte al sistema operativo principal.

Investigar malware: las máquinas virtuales son útiles para los investigadores de malware que necesitan máquinas nuevas en las que probar programas maliciosos con frecuencia.

Ejecutar software incompatible: algunos usuarios pueden preferir un sistema operativo, pero igualmente seguir necesitando un programa que solo está disponible en otro. Un buen ejemplo es la gama Dragon de software de dictado de voz. Su proveedor, Nuance, ha dejado de mantener la versión de macOS de su producto. Sin embargo, la ejecución de un hipervisor centrado en el escritorio, como VMware Fusion o Parallels, le permite ejecutar Windows en una máquina virtual para que tenga acceso a esa versión del software.

Navegar de forma segura: el uso de una máquina virtual para navegar le permite visitar sitios sin preocuparse por las infecciones. Puede realizar una instantánea de su máquina y luego volver a ella después de cada sesión de navegación. Esto es algo que un usuario podría configurar por sí mismo, utilizando un hipervisor de escritorio de tipo 2. De forma alternativa, un administrador podría proporcionar un escritorio virtual temporal ubicado en el servidor.

Tipos de máquinas virtuales

Máquinas virtuales de Windows

La mayoría de los hipervisores admite máquinas virtuales que se ejecutan en el sistema operativo Windows como invitados. El hipervisor Hyper-V de Microsoft se incluye como parte del sistema operativo Windows. Cuando se instala, crea una partición padre que contiene a sí mismo y el sistema operativo Windows primario, cada uno de los cuales obtiene acceso con privilegios al hardware. Otros sistemas operativos, incluidos los invitados de Windows, se ejecutan en particiones hijo que se comunican con el hardware a través de la partición padre.

Máquinas virtuales de Android

El sistema operativo Android de código abierto de Google es común en dispositivos móviles y dispositivos domésticos conectados como dispositivos de entretenimiento en el hogar. El sistema operativo Android solo se ejecuta en la arquitectura de procesador ARM, que es común a estos dispositivos, pero es posible que los entusiastas, los jugadores o los desarrolladores de software de Android quieran ejecutarlo en PC.

Esto plantea un problema porque los PC se ejecutan en una arquitectura de procesador x86 completamente diferente y un hipervisor de virtualización de hardware solo pasa instrucciones entre la máquina virtual y la CPU. No las traduce para procesadores con otros conjuntos de instrucciones. Hay varios proyectos que abordan este problema.

Algunos proyectos, como Shashlik o Genymotion, utilizan un emulador que vuelve a crear la arquitectura de ARM en software. Una alternativa, el proyecto Android-x86, crea un puerto de Android a la arquitectura x86. Para ejecutarlo, debe instalar el programa Android-x86 como una máquina virtual utilizando el hipervisor de VirtualBox tipo 2. Otra alternativa, Anbox, ejecuta el sistema operativo Android en el kernel de un sistema operativo Linux host.

Máquinas virtuales de Mac

Apple solo permite que su sistema macOS se ejecute en hardware de Apple, prohibiendo su ejecución en hardware que no sea de Apple como una máquina virtual o de otro modo, bajo su acuerdo de licencia de usuario final. Puede utilizar hipervisores de tipo 2 en hardware Mac para crear máquinas virtuales con un invitado de macOS.

Máquinas virtuales de iOS

No se puede ejecutar iOS en una máquina virtual hoy porque Apple controla estrictamente su sistema operativo iOS y no permite que se ejecute en otros dispositivos que no sean iOS.

Lo más parecido a una máquina virtual de iOS es el simulador de iPhone que se incluye con el entorno de desarrollo integrado Xcode, que simula todo el sistema de iPhone en software.

Máquinas virtuales de Java

La plataforma Java es un entorno de ejecución para programas escritos en el lenguaje de desarrollo de software de Java. La promesa de Java era la funcionalidad "escribir una vez, ejecutar en cualquier lugar", con la cual cualquier programa Java podría ejecutarse en cualquier hardware en ejecución en la plataforma Java. Para conseguirlo, la plataforma Java incluye una máquina virtual Java (JVM).

Los programas Java contienen código de bytes, que son instrucciones para la JVM. La JVM compila este código de bytes en el código de máquina, que es el lenguaje de nivel inferior utilizado por el sistema host. La JVM en la plataforma Java de una plataforma informática creará un conjunto diferente de instrucciones de código de máquina para la JVM en otra, basándose en el código de máquina que espera el procesador.

Por lo tanto, la JVM no ejecuta un sistema operativo completo y no utiliza un hipervisor como otras máquinas virtuales, sino que traduce programas de software a nivel de aplicación para ejecutarse en hardware determinado.

Para obtener más información sobre Java, consulte "Java: Guía completa".

Máquinas virtuales de Python

Al igual que la JVM, la máquina virtual de Python no se ejecuta en un hipervisor y no contiene un sistema operativo invitado. Es una herramienta que permite que los programas escritos en el lenguaje de programación Python se ejecuten en diversas CPU.

Similar a Java, Python traduce sus programas en un formato intermedio llamado código de bytes, almacenándolo en un archivo listo para su ejecución. Cuando el programa se ejecuta, la máquina virtual de Python convierte el código de bytes en código de máquina para acelerar la ejecución.

Máquinas virtuales de Linux

Linux es un sistema operativo invitado comúnmente utilizado en muchas máquinas virtuales. También es un sistema operativo de host que se suele utilizar para ejecutar máquinas virtuales e incluso tiene su propio hipervisor, denominado máquina virtual basada en kernel (KVM). El kernel principal de Linux ha incluido la KVM desde 2007. Aunque es un proyecto de código abierto, Red Hat ahora es propietaria de la compañía original que desarrolló la KVM.

Máquinas virtuales de VMware

VMware fue uno de los primeros proveedores de software de virtualización y ahora es conocido como proveedor de hipervisores de tipo 1 y de tipo 2 y software de máquina virtual para clientes empresariales.

"VMware: Guía completa" proporciona una visión general completa sobre todos los aspectos de VMware.

Máquinas virtuales de Ubuntu

Ubuntu es una distribución de Linux producida por Canonical. Está disponible en versiones de escritorio y de servidor, las cuales puede instalar como máquina virtual. Ubuntu se puede desplegar como sistema operativo invitado en Microsoft Hyper-V. Proporciona una versión optimizada de Ubuntu Desktop, que funciona bien en el modo de sesión mejorada de Hyper-V y proporciona una sólida integración entre el host de Windows y la máquina virtual de Ubuntu. Incluye soporte para la integración del portapapeles, el redimensionamiento dinámico del escritorio, las carpetas compartidas y el movimiento del ratón entre los escritorios de host e invitados.

Multiarrendatario frente a un solo arrendatario

En cloud computing, las máquinas virtuales normalmente se ofrecen tanto en variaciones multiarrendatario como de un solo arrendatario.

Las máquinas virtuales públicas, o multiarrendatario, son máquinas virtuales en las que varios usuarios comparten una infraestructura física común. Este es el enfoque más rentable y escalable para suministrar máquinas virtuales, pero carece de algunas de las características de aislamiento que quizá requieren aquellas organizaciones con estrictos mandatos de seguridad o conformidad.

Dos modelos para máquinas virtuales de un solo arrendatario son hosts dedicados e instancias dedicadas.

Un host dedicado implica el alquiler de una máquina física completa y el mantenimiento del acceso sostenido a, y el control sobre, dicha máquina, su hardware y el software que esté instalado en ella. Este modelo proporciona la máxima flexibilidad y transparencia de hardware, control y colocación de cargas de trabajo, así como algunas ventajas para determinado software "bring-your-own license" (traiga su propia licencia).

Una instancia dedicada ofrece el mismo aislamiento de un solo arrendatario y el mismo control sobre la colocación de cargas de trabajo, pero no se acopla a una máquina física específica. Así, por ejemplo, si una instancia dedicada se reinicia, podría terminar en una nueva máquina física —una máquina dedicada a la cuenta individual, pero sin embargo una máquina nueva, potencialmente en una ubicación física diferente.

Modelos de precios para máquinas virtuales

Los modelos de precios más comunes para las máquinas virtuales en cloud son de pago por uso (por hora o segundo), instancias transitorias/puntuales, instancias reservadas y hosts dedicados.

  • Pago por uso: en el modelo de pago por uso, no hay costes iniciales para la máquina virtual y los usuarios simplemente pagan por lo que utilizan, normalmente facturado por horas o segundos en función del proveedor y el tipo de instancia.

  • Instancias transitorias/puntuales: las instancias transitorias y puntuales, el modelo de coste más bajo de máquinas virtuales, aprovecha el exceso de capacidad de un proveedor, pero el proveedor puede reclamarlo en cualquier momento. Se suelen utilizar para aplicaciones que no necesitan estar siempre activas o cuyo coste resulta prohibitivo en cualquier otro modelo.

  • Instancias reservadas: a diferencia de los modelos de pago por uso, las instancias reservadas incorporan un compromiso de vigencia explícito, generalmente de entre uno y tres años, pero también se combinan con grandes descuentos.

  • Hosts dedicados: en el caso de los hosts dedicados, un usuario normalmente asume el coste del servidor físico total y se factura en los incrementos que el proveedor ofrece a los servidores dedicados, que suele ser por hora o mensual.
Máquinas virtuales frente a servidores bare metal

Elegir una máquina virtual sobre una física, también conocida como servidor bare metal, no se basa simplemente en comparar prestaciones, sino más bien en saber qué necesita, y cuándo lo necesita.

Los servidores bare metal ofrecen hardware en bruto, potencia y aislamiento. Son servidores físicos de un solo arrendatario completamente vacíos de ciclos de hipervisor (software de virtualización) y completamente dedicados a un único cliente: usted.

Las cargas de trabajo que priorizan el rendimiento y el aislamiento, como las aplicaciones con gran carga de datos y los mandatos de conformidad con la normativa, suelen ser más adecuadas para servidores bare metal, especialmente cuando se despliegan durante periodos de tiempo prolongados.

Las aplicaciones de comercio electrónico, ERP, CRM, SCM y servicios financieros son solo algunas de las cargas de trabajo ideales para servidores bare metal.

¿Cuándo colocaría un hipervisor sobre hardware bare metal para hacer una máquina virtual? Cuando las cargas de trabajo exigen la máxima flexibilidad y escalabilidad.

Las máquinas virtuales aumentan sin esfuerzo la capacidad del servidor y aumentan la utilización, ideal para mover datos de una máquina virtual a otra, cambiar el tamaño de los conjuntos de datos y dividir las cargas de trabajo dinámicas.

Máquinas virtuales frente a contenedores

La forma más fácil de entender un contenedor es entender en qué se diferencia de una máquina virtual (VM) tradicional. En la virtualización tradicional, ya sea en local o en cloud, se utiliza un hipervisor para virtualizar el hardware físico. Cada máquina virtual contiene un sistema operativo invitado, una copia virtual del hardware que el sistema operativo necesita para ejecutarse, junto con una aplicación y sus bibliotecas y dependencias asociadas.

En lugar de virtualizar el hardware subyacente, los contenedores virtualizan el sistema operativo (normalmente Linux) para que cada contenedor individual contenga  únicamente  la aplicación y sus bibliotecas y dependencias. La ausencia del sistema operativo invitado es la razón por la cual los contenedores son tan ligeros y, por lo tanto, rápidos y portátiles.

Los contenedores y el motor de orquestación que los gestiona, Kubernetes, son adecuados para arquitecturas de microservicios , modernas y nativas en cloud.  Y aunque los contenedores se suelen asociar a servicios sin estado, también pueden ser demandados por servicios con estado.

El uso de contenedores también se están generalizando en escenarios de cloud híbrido porque pueden ejecutarse de forma coherente en portátiles, cloud y TI en local tradicional.

En la publicación de blog "Contenedores frente a máquinas virtuales: ¿en qué se diferencian?" se explica más detalladamente.

El siguiente vídeo explica los aspectos básicos de la contenerización y compara su uso con el de las máquinas virtuales:

Cómo elegir un proveedor de máquina virtual

Seleccionar una máquina virtual y un proveedor de cloud no tiene por qué ser complicado, siempre y cuando sepa qué buscar. La máquina virtual debe adaptarse a sus necesidades de carga de trabajo y presupuestarias, por supuesto, pero hay otros factores que también juegan un papel importante entre usted y su entorno de virtualización. A continuación, se exponen diez consideraciones que debería tener en cuenta a la hora de seleccionar un proveedor de servicios de máquina virtual.

Soporte fiable. Asegúrese de que dispone de servicio de atención al cliente 24/7 por teléfono, correo electrónico y chat o descártelo. Quiere una persona real en el otro extremo de la línea que le ayude a resolver situaciones críticas de TI. También es importante tener en cuenta que los proveedores de cloud ofrecen servicios adicionales para un soporte más práctico.

Opciones gestionadas. El proveedor de cloud, ¿ofrece soluciones gestionadas y no gestionadas? Si no conoce a fondo la tecnología de virtualización, considere un proveedor que se encargue de la configuración, el mantenimiento y la supervisión continua del rendimiento.

Integración de software. ¿El entorno de máquina virtual se combinará bien con otros? Los sistemas operativos, el software de terceros, la tecnología de código abierto y las aplicaciones ayudan a ofrecer más soluciones en todo su negocio. Querrá un proveedor de máquinas virtuales con sólidas asociaciones y soporte para los proveedores de software más utilizados del sector. Nota: huya de las dependencias de proveedor.

Red e infraestructura de alta calidad. ¿Está bien actualizada la infraestructura en la que se ejecutará la nueva máquina virtual? Esto incluye servidores bare metal fiables, centros de datos modernos y la red troncal de redes. Un proveedor de cloud debe ser capaz de entregar su parte del acuerdo con hardware de última generación y tecnología de red de alta velocidad.

Ubicación, ubicación, ubicación. Cuanto más cerca se encuentren los datos de sus usuarios, menos problemas surgirán en torno a la latencia, la seguridad y la prestación de servicios a tiempo. Una buena red global de centros de datos dispersos y ubicaciones POP es fundamental para disponer de los datos donde y cuando más se necesitan.

Copia de seguridad y recuperación. ¿Qué plan tiene el proveedor de cloud para mantener las máquinas virtuales en funcionamiento ante sucesos inesperados? ¿Proporcionan opciones de copia de seguridad y redundancia adicionales para su entorno virtualizado? Debería plantearse seriamente el funcionamiento continuo.

Fácil escalabilidad. ¿Cuán rápido y fácil será para usted incrementar, reducir, reservar, pausar y actualizar su máquina virtual? Las palabras que más quiere escuchar cuando se trata de la escalabilidad de máquinas virtuales son "bajo demanda".

Configuraciones de CPU variadas. Cuantas más configuraciones, mejor. No todas las configuraciones de máquina virtual se ajustan a todas las cargas de trabajo en las distintas temporadas de uso. Asegúrese de buscar un proveedor de máquinas virtuales que ofrezca paquetes de configuración variados para los requisitos de un modelo multiarrendatario e individual.

Capas de seguridad. Pregúntele a su proveedor por ellas y, a continuación, vuelva a preguntar por ellas. Los datos de negocio son la moneda de cambio de mayor valor, especialmente cuando se trata de información de cliente sensible. Líneas de red privadas, opciones de centro de datos federal, características de cifrado integradas y cumplimiento de los estándares de conformidad con la normativa para proteger su activo más valioso.

Soporte para una migración fluida. Sus prioridades de TI siempre irán evolucionando. Eso es incuestionable. Cualquier proveedor de máquinas virtuales debería ser capaz de ayudarle a transferir entre entornos híbridos, en local y externamente. Busque opciones de migración dirigida por las aplicaciones, a través de la red y con ingesta completa de datos.

Soluciones relacionadas
IBM Cloud

IBM Cloud con Red Hat ofrece la mejor seguridad del mercado, escalabilidad empresarial e innovación abierta para desbloquear todo el potencial del cloud y la IA.

Explore IBM Cloud
VMware Solutions

Las soluciones IBM Cloud for VMware están diseñadas para ayudarle a mover cargas de trabajo de VMware de las instalaciones en local a IBM Cloud.

Explore IBM Cloud for VMware Solutions
Servidores virtuales

IBM Cloud Virtual Servers son servidores virtuales públicos y dedicados que suministran y se escalan bajo demanda, con opciones de facturación mensual y por hora.

Explore Virtual Servers
Recursos ¿Qué es cloud computing?

Cloud computing transforma la infraestructura de TI en un programa de utilidad, lo que le permite conectarse a las aplicaciones y recursos informáticos a través de Internet, sin tener que instalarlos ni mantenerlos en local.

¿Qué es el cloud híbrido?

El cloud híbrido integra servicios de cloud público, servicios de cloud privado y la infraestructura local en un único entorno de informática distribuida.

¿Qué es DevOps?

DevOps acelera la entrega de software de alta calidad combinando y automatizando el trabajo de los equipos de desarrollo de software y de operaciones de TI.

Dé el siguiente paso

IBM® Cloud Virtual Server for VPC ofrece una capacidad de cálculo de suministro rápido con las velocidades de red más elevadas y los recursos de red definidos por software más seguros disponibles en IBM Cloud. Basada en IBM Cloud Virtual Private Cloud (VPC) y con potentes procesadores Intel Xeon de segunda generación, esta infraestructura intuitiva para los desarrolladores ayuda a impulsar las cargas de trabajo modernas de forma más rápida y sencilla con perfiles de instancia preestablecidos, un despliegue rápido y un control de red privado en un entorno de cloud público ágil. Elija multitenencia o dedicado, añada las GPU y pague por uso a la hora.

Explore IBM Cloud Virtual Server for VPC