Por: IBM Cloud Education

Introducción a las máquinas virtuales (VM), una tecnología para crear entornos de computación virtualizados y la base de la primera generación de computación en la nube.

¿Qué es una máquina virtual (VM)?

Una máquina virtual es una representación virtual o emulación de un sistema físico. A menudo se les referencia como "invitado" mientras la máquina física en la que se ejecutan se conoce como el "host".

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, llamada hipervisor para coordinar entre ella y el hardware físico subyacente. El hipervisor asigna recursos de computación físico, 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 ser conocida con muchos nombres, incluido servidor virtual, instancia de servidor virtual (VSI) y servidor privado virtual (VPS), este artículo simplemente se referirá a ellas 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 nativo), se permite que el sistema físico separe su sistema operativo y aplicaciones de su hardware. Entonces, es posible 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 mismo tiempo que comparte los recursos originales del servidor nativo, que el hipervisor gestiona. Estos recursos incluyen memoria, RAM, almacenamiento, etc.

El siguiente video explica los fundamentos de la virtualización (5:20) y echa un vistazo al artículo, "5 beneficios de la virtualización":

El hipervisor actúa como un policía de tráfico de clases, dirigiendo y asignando 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.

Hipervisores de tipo 1 se ejecutan directamente en el hardware físico (normalmente un servidor), ocupando el lugar del sistema operativo. Normalmente, se utiliza un producto de software independiente para crear y gestionar máquinas virtuales en el hipervisor. Algunas herramientas de gestión, como vSphere de VMware, permiten seleccionar un sistema operativo huésped para instalar en la VM.

Puede utilizar una VM como plantilla para otras y duplicarla para crear nuevas. En función de sus necesidades, también es posible crear varias plantillas de VM para distintos fines, como pruebas de software, bases de datos de producción y entornos de desarrollo.

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 luego instalar un sistema operativo anfitrión en él. Es posible utilizar el hipervisor para asignar recursos físicos a la VM, estableciendo manualmente la cantidad de núcleos de procesador y memoria. Dependiendo de las capacidades del hipervisor, también es posible establecer opciones como aceleración 3D para gráficos.

Para obtener una visión general completa de los hipervisores, consulte “Hipervisores: Guía completa.“

Ventajas y beneficios de las VM

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

  • Utilización de recursos y mejor retorno de inversión (ROI): debido a que varias máquinas virtuales se ejecutan en un único sistema físico, los clientes no tienen que comprar un nuevo servidor cada vez que quieran ejecutar otro sistema operativo y pueden obtener más rendimiento de cada hardware que posean.
  • Escalabilidad: con la computación en la nube, es fácil implementar varias copias de la misma máquina virtual para servir mejor a los aumentos en la carga.
  • Portabilidad: las máquinas virtuales se pueden reubicar según sea necesario entre los sistemas físicos de una red. Esto hace posible asignar cargas de trabajo a servidores que tengan potencia de computación libre. Las máquinas virtuales pueden incluso moverse entre entornos locales y en la nube, lo que las convierte en útiles para escenarios de nube híbrida en los que se comparte recursos de computación entre el centro de datos y un proveedor de servicios en la nube.
  • Flexibilidad: la creación de una máquina virtual es más rápida y fácil que la instalación de 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 verificadores de software pueden crear nuevos entornos bajo demanda para manejar nuevas tareas a medida que surjan.
  • 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 VM es un archivo que un programa externo puede escanear para detectar software malicioso. Puede crear una instantánea completa de la VM en cualquier momento y, a continuación, restaurarla a ese estado si se infecta con un programa malicioso, haciendo que la VM vuelva en el tiempo de manera eficaz. La rápida y fácil creación de las VM también permite eliminar completamente una VM en riesgo, y luego volver a crearla rápidamente, acelerando la recuperación de las infecciones de malware.

Casos de uso para máquinas virtuales

Las máquinas virtuales tienen varios usos, tanto para los administradores de TI empresariales como para los usuarios. Puede utilizarlas para:

  • Computación en la nube: durante los últimos 10 años, las VM han sido la unidad fundamental de computación en la nube, lo que permite que decenas de tipos diferentes de aplicaciones y cargas de trabajo se ejecuten y escalen satisfactoriamente.
  • Soporte DevOps: las máquinas virtuales son una gran manera de dar soporte a los desarrolladores empresariales, que pueden configurar plantillas de VM con los valores para sus procesos de desarrollo y pruebas de software. Pueden crear máquinas virtuales para tareas específicas, como análisis estático de software, incluyendo estos pasos en un flujo de trabajo de desarrollo automatizado. Todo esto ayuda a agilizar las cadenas de herramientas de DevOps.
  • Pruebe un nuevo sistema operativo: una VM le permite probar un nuevo sistema operativo en su escritorio sin afectar al sistema operativo principal.
  • Investigar malware: las máquinas virtuales son útiles para los investigadores de malware que frecuentemente necesitan máquinas nuevas para probar programas maliciosos.
  • Ejecutar software incompatible: algunos usuarios pueden preferir un sistema operativo al mismo tiempo que necesitan un programa que sólo está disponible en otro. Un buen ejemplo es la gama Dragon de software de dictado de voz. Su proveedor, Nuance, ya no ofrece la versión de sistema operativo para Mac 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 VM, lo que le brinda acceso a esa versión del software.
  • Navegación segura: el uso de una máquina virtual para navegar le permite visitar sitios sin preocuparse por 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 otro modo, un administrador podría proporcionar un escritorio virtual temporal ubicado en el servidor.

Tipos de máquinas virtuales

Esta sección presenta algunos de los distintos tipos de máquinas virtuales:

  • Máquinas virtuales Windows
  • Máquinas virtuales Android
  • Máquinas virtuales Mac
  • máquinas virtuales iOS
  • Máquinas virtuales Java
  • Máquinas virtuales de Python
  • Máquinas virtuales Linux
  • Máquinas virtuales VMware
  • Máquinas virtuales Ubuntu

Máquinas virtuales Windows

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

Máquinas virtuales 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 sólo se ejecuta en la arquitectura de procesador ARM que es común en estos dispositivos, pero es posible que los entusiastas, los jugadores de Android o los desarrolladores de software deseen ejecutarlo en PC.

Esto es un problema ya que las PC se ejecutan en una arquitectura de procesador x86 completamente diferente y un hipervisor de virtualización de hardware sólo pasa instrucciones entre la VM y la CPU. No los traduce para procesadores con diferentes conjuntos de instrucciones. Hay varios proyectos para abordar este problema.

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

Máquinas virtuales Mac

Apple solo permite que su sistema macOS se ejecute en hardware de Apple, prohibiendo a las personas que lo ejecuten en un hardware que no sea de Apple como una VM o de otro modo, bajo su acuerdo de licencia de usuario final. Es posible utilizar hipervisores de tipo 2 en un hardware Mac para crear máquinas virtuales con un huésped de macOS.

Máquinas virtuales iOS

No es posible ejecutar iOS en una VM 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 VM de iOS es el simulador de iPhone que se envía con el entorno de desarrollo integrado Xcode, que simula todo el sistema de iPhone en software.

Máquinas virtuales 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 de "escribir una vez y ejecutar en cualquier lugar". Esto significa que cualquier programa Java puede ejecutarse en cualquier hardware que ejecute la plataforma Java. Para conseguirlo, la plataforma Java incluye una máquina virtual Java (JVM).

Los programas Java contienen bytecode, que son instrucciones para la JVM. La JVM compila este código de bytes en el código de máquina, que es el idioma de nivel inferior utilizado por la computadora host. La JVM en la plataforma Java de una plataforma de computación 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. En su lugar, traduce programas de software de nivel de aplicación para ejecutar en un hardware particular.

Para obtener más información sobre Java, consulte “Java: Una guía completa“.

Máquinas virtuales de Python

Al igual que la JVM, la VM de Python no se ejecuta en un hipervisor y no contiene un sistema operativo huésped. 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 bytecode, almacenándolo en un archivo listo para su ejecución. Cuando se ejecuta el programa, la VM de Python convierte el código de bytes en código de máquina para obtener una ejecución rápida.

Máquinas virtuales Linux

Linux es un sistema operativo huésped común utilizado en muchas máquinas virtuales. También es un sistema operativo host común utilizado para ejecutar máquinas virtuales e incluso tiene su propio hipervisor llamado 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 propietario de la compañía original que desarrolló la KVM.

Máquinas virtuales VMware

VMware fue un proveedor de software de virtualización temprano y ahora es un proveedor popular tanto de hipervisor de tipo 1 como de hipervisor de tipo 2 y software de VM para clientes empresariales.

VMware: Una guía completa“ proporciona una visión general completa de VMware para todo.

Máquinas virtuales Ubuntu

Ubuntu es una distribución de Linux producida por Canonical. Está disponible en versiones de escritorio y de servidor, que se pueden instalar como VM. Es posible implementar Ubuntu como sistema operativo huésped 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, proporcionando una estrecha integración entre el host de Windows y Ubuntu VM. Incluye soporte para la integración de portapapeles, redimensionamiento dinámico de escritorio, carpetas compartidas y movimiento del ratón entre los escritorios de host y de huésped.

Multi-inquilino frente a inquilino único

En la computación en la nube, las máquinas virtuales se ofrecen normalmente tanto en variaciones de inquilino único como de multi-inquilino.

Las máquinas virtuales, públicas o de multi-inquilino, son máquinas virtuales en las que múltiples usuarios comparten una infraestructura física común. Este es el abordaje más rentable y escalable para el suministro de máquinas virtuales, pero carece de algunas de las características de aislamiento que pueden preferir las organizaciones con estrictos mandatos de seguridad o conformidad.

Dos modelos para máquinas virtuales de único inquilino son hosts dedicados e instancias dedicadas.

Un host dedicado implica el alquiler de una máquina física completa y el mantenimiento del acceso y el control sostenidos 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 carga de trabajo, y también ofrece algunas ventajas para determinado software de "traiga su propia licencia".

Una instancia dedicada ofrece el mismo aislamiento de inquilino único y el mismo control sobre la colocación de la carga de trabajo, pero no está acoplada con una máquina física específica. Así, por ejemplo, si una instancia dedicada es reiniciada, podría terminar en una nueva máquina física, una máquina dedicada a la cuenta individual, sin embargo, una nueva máquina, posiblemente 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 la nube son de pago por uso (por hora o segundo), instancias transitorias/en un lugar, instancias reservadas y hosts dedicados.

  • Pago por uso: En el modelo de pago por uso, no hay costos iniciales para la máquina virtual y los usuarios simplemente pagan por lo que utilizan. Normalmente se factura por hora o segundo de acuerdo con el proveedor y el tipo de instancia.
  • Instancias transitorias/puntuales: El modelo de costo más bajo de las VM, las instancias transitorias y puntuales están aprovechando el exceso de capacidad de un proveedor, pero el proveedor puede reclamarlo en cualquier momento. Normalmente son útiles para aplicaciones que no necesitan estar siempre activas o que son exorbitantemente costosas en cualquier otro modelo.
  • Instancias reservadas: A diferencia de los modelos de pago por uso, las instancias reservadas vienen con un compromiso de término explícito, generalmente de entre uno y tres años, pero también vienen con grandes descuentos.
  • Hosts dedicados: En el caso de los hosts dedicados, un usuario normalmente asume el costo del servidor físico total y se le factura en los incrementos que el proveedor ofrezca para los servidores dedicados, normalmente por hora o por mes.

Máquinas virtuales frente a servidores nativos

Elegir una máquina virtual sobre una física, también conocida como servidor bare metal, tiene menos que ver acerca de las capacidades en competencia, y más sobre saber lo que necesita, y cuando lo necesita.

Los servidores bare metal tratan acerca de hardware, alimentación y aislamiento. Son servidores físicos de inquilino único completamente libres de ciclos de hipervisor (software de virtualización), y totalmente dedicados a un único cliente: usted.

Las cargas de trabajo que priorizan el rendimiento y el aislamiento, como las aplicaciones de uso intensivo de datos y los mandatos de conformidad normativa, suelen ser los más adecuados para los servidores nativos, especialmente cuando se implementan durante periodos de tiempo prolongados.

Las aplicaciones de comercio electrónico, ERP, CRM, SCM y servicios financieros son sólo unas pocas cargas de trabajo ideales para los servidores bare metal.

Entonces, ¿cuándo se colocaría un hipervisor sobre el hardware bare metal para hacer una máquina virtual? Cuando las cargas de trabajo exijan máxima flexibilidad y escalabilidad.

Las máquinas virtuales aumentan sin esfuerzo la capacidad del servidor y aumentan la utilización, lo que es 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 cómo difiere de una máquina virtual (VM) tradicional. En la virtualización tradicional, ya sea localmente o en la nube, se aprovecha el hipervisor para virtualizar el hardware físico. Cada VM contiene un SO huésped, 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 sólo la aplicación y sus bibliotecas y dependencias. La ausencia del sistema operativo huésped es el motivo por el que 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 modernas, nativas en la nube y de microservicios. Y aunque los contenedores están más comúnmente asociados con los servicios sin estado, también pueden ser requeridos para los servicios con estado.

Los contenedores también se están volviendo más comunes en los escenarios de nube híbrida porque pueden ejecutarse de forma consistente en computadoras portátiles, en la nube y en las instalaciones tradicionales de TI.

El post del blog "Contenedores vs. VM: ¿Cuál es la diferencia?" profundiza en el tema.

En el siguiente video, Sai Vennam describe los fundamentos de la contenerización y cómo se compara con el uso de VM (8:09):

Cómo elegir un proveedor de máquina virtual

La selección de una máquina virtual y un proveedor de nube no tiene que ser un desafío, siempre y cuando sepa qué buscar. La máquina virtual necesita adaptarse a sus necesidades de carga de trabajo y al presupuesto del negocio, por supuesto, pero otros factores juegan un papel clave entre usted y su entorno de virtualización. A continuación, diez cosas a considerar al seleccionar un proveedor de servicios de máquina virtual.

  • Soporte confiable: asegúrese de que haya servicio de atención al cliente 24/7 por teléfono, e-mail y chat. Si no, aléjese. 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 nube ofrecen servicios adicionales para un obtener un respaldo más práctico.
  • Opciones gestionadas: ¿el proveedor de nube ofrece soluciones gestionadas y no gestionadas? Si no conoce los detalles de la tecnología de virtualización, considere un proveedor que será responsable de la configuración, el mantenimiento y la supervisión del rendimiento en curso.
  • 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 a lo largo de su negocio. Querrá un proveedor de máquinas virtuales con soporte y con una robusta alianza con los proveedores de software más utilizados de la industria. Nota: Evite quedarse atrapado con proveedores.
  • Red e infraestructura de alta calidad: ¿Qué tan actualizada está la infraestructura en la que se ejecutará la nueva máquina virtual? Esto incluye servidores nativos confiables, centros de datos modernos y red troncal. Un proveedor de nube 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 de los datos se encuentran los usuarios, habrá menos problemas con la latencia, la seguridad y la entrega de servicios a tiempo. Una buena red global de centros de datos dispersos y ubicaciones POP son fundamentales para tener datos donde y cuando más los necesite.
  • Copia de seguridad y recuperación: ¿Qué plan tiene el proveedor de nube para mantener las máquinas virtuales en funcionamiento frente a eventos inesperados? ¿También proporciona opciones de copia de seguridad y redundancia adicionales para su entorno virtualizado? La operación continua es algo que debe tomar en serio.
  • Facilidad de escalabilidad: ¿Qué tan rápido y fácil será para usted poner a punto, controlar, reservar, pausar y actualizar su máquina virtual? El término que más se quiere escuchar cuando se trata de la escalabilidad de la máquina virtual es "bajo demanda".
  • Configuraciones de CPU diversas: mientras más configuraciones, mejor. No todas las configuraciones de máquinas virtuales se ajustan a cada carga de trabajo durante cada temporada de uso. Asegúrese de buscar un proveedor de máquina virtual que ofrezca paquetes de configuración diversos para los requisitos de inquilino único y multi-inquilino.
  • Capas de seguridad: pregúntele a su proveedor sobre ellas y, a continuación, asegúrese de que existan. Los datos de negocio son la moneda en su expresión más pura, especialmente cuando se trata de información confidencial del cliente. Las líneas de red privada, las opciones del centro de datos federal, las funciones de cifrado incorporadas y el cumplimiento de la conformidad normativa son esenciales para proteger su activo más valioso.
  • Soporte de migración continuo: las prioridades de TI siempre evolucionarán. Esto lo sabemos todos. Cualquier proveedor de máquina virtual debe ser capaz de ayudarle a levantar y cambiar entre entornos híbridos, locales y externos. Busque información completa acerca del consumo de datos y las opciones de migración a través de la red y guiada por aplicaciones.

Máquinas virtuales e IBM Cloud

IBM Cloud ofrece la oportunidad de configurar y ejecutar sus propias máquinas virtuales basándose en diferentes opciones técnicas y precios. Es posible seleccionar perfiles técnicos para máquinas virtuales con base en las funciones de alimentación, memoria, almacenamiento local y GPU necesarias, adaptando el sistema para su carga de trabajo específica. También es posible gestionar las VM de VMware utilizando IBM Cloud for VMware Solutions.

Es posible elegir entre nodos públicos o privados para satisfacer sus requisitos de seguridad y conformidad. Un servicio privado y de inquilino único puede residir en un host dedicado de su elección en más de 60 centros de datos de IBM en 19 países de todo el mundo.

Elija entre un arsenal de opciones de implementación para que se adapte con sus necesidades de asignación de precios. Una instancia de VM pública que reserve por un tiempo establecido de antemano es menos costosa que un sistema no reservado. Como alternativa, es posible elegir una VM basada en asignación precio de mercado al contado para manejar cargas de trabajo temporales.

IBM Cloud también le permite combinar y adaptar recursos de servidor virtual y bare metal para adaptarse a sus necesidades de carga de trabajo.

Para obtener más información, visite la página de IBM Cloud y regístrese para obtener un ID de IBM.