Una virtual machine (VM) es una representación virtual o emulación de un equipo físico que emplea software en lugar de hardware para ejecutar programas e implementar aplicaciones.
Al emplear los recursos de una sola máquina física, como la memoria, la CPU, la interfaz de red y el almacenamiento, las máquinas virtuales permiten a las empresas ejecutar varias máquinas virtualmente con diferentes sistemas operativos en un solo dispositivo.
En general, las máquinas virtuales se denominan invitado: una o más máquinas "invitadas" se ejecutan en una máquina física llamada máquina "host". La tecnología VM incluye servidores virtuales, instancias de servidores virtuales (VSI) y servidores privados virtuales (VPS).
En un informe de Global Market Insights (GMI), el tamaño del mercado de Virtual Machines superó los 9.500 millones de dólares en 2023. GMI proyecta que este mercado se expanda a una tasa de crecimiento anual compuesta (CAGR) de alrededor del 12 % entre 2024 y 2032, impulsada por la adopción constante de la computación en la nube. A medida que las empresas se trasladan a la nube por su escalabilidad, flexibilidad y rentabilidad, los proveedores de la nube continúan integrando máquinas virtuales y otras tecnologías críticas (por ejemplo, contenedores) para proporcionar una infraestructura de TI constante.
Las máquinas virtuales funcionan mediante virtualización, un proceso de creación de versiones virtuales o basadas en software de recursos (cálculo, almacenamiento, redes, servidores) o aplicaciones.
La virtualización permite un uso más eficiente del hardware informático físico y es fundamental para la computación en la nube.
La virtualización es posible con un hipervisor, también conocido como monitor de máquina virtual (VMM). Esta ligera capa de software administra las máquinas virtuales a medida que se ejecutan entre sí.
El nacimiento de la virtualización se remonta a 1964, cuando IBM diseñó y presentó CP-40, un proyecto experimental de investigación de tiempo compartido para IBM System/360. El CP-40, que luego se convirtió en el CP-67 y luego en Unix, proporcionó hardware informático capaz de admitir múltiples usuarios simultáneos y sentó las bases para las máquinas virtuales.
El 2 de agosto de 1972, IBM implementó lo que muchos consideran como la primera máquina virtual, la VM/370, y los primeros mainframes System/370 que admitieron memoria virtual.
En 1998, VMware (enlace externo a ibm.com) desarrolló el sistema operativo x86, que permitió segmentar una sola máquina en varias máquinas virtuales, cada una con su propio sistema operativo. En 1999, la empresa lanzó VM Workstation 1.0, el primer producto comercial que permitía a los usuarios ejecutar múltiples sistemas operativos como máquinas virtuales en una sola PC.
Hoy en día, la virtualización es una práctica estándar para la infraestructura de TI de nivel empresarial y una fuerza impulsora en la economía de la computación en la nube, lo que permite a las empresas impulsar una mayor utilización de la capacidad y reducir los costos. Toda la infraestructura de TI se puede virtualizar, incluidos los entornos de escritorio, los sistemas operativos, el hardware de almacenamiento, los centros de datos, entre otros.
La virtualización se basa en la tecnología de hipervisores. Esta capa de software ubicada en una computadora o servidor físico (también conocido como servidor bare metal) permite que la computadora física separe su sistema operativo y aplicaciones de su hardware. Estas máquinas virtuales pueden ejecutar sus sistemas operativos y aplicaciones de forma independiente sin dejar de compartir los recursos originales (memoria, RAM, almacenamiento, etc.) del servidor, que gestiona el hipervisor. En esencia, el hipervisor actúa como un policía de tráfico, ya que asigna recursos a las máquinas virtuales y se cerciora de que no se interrumpan entre sí.
Existen dos tipos principales de hipervisores:
Además de la clasificación según la gestión del hipervisor, las virtual machines se dividen en dos categorías principales: virtual machines de sistema (también llamadas máquinas de virtualización completa) y virtual machines de proceso.
Las VM del sistema permiten compartir los recursos físicos subyacentes de la máquina entre diferentes máquinas virtuales, cada una de las cuales ejecuta su propio sistema operativo. En contraste, las máquinas virtuales de procesos (también llamadas máquinas virtuales de aplicaciones) ejecutan una aplicación dentro de un SO y admiten un solo proceso. Las máquinas virtuales Java, que ejecutan programas que se compilan en Java, son ejemplos de VM de procesos.
Las VM ofrecen numerosos beneficios con respecto al hardware físico tradicional.
Debido a que varias VM se ejecutan en una sola computadora física, los clientes no tienen que comprar un nuevo servidor cada vez que quieren ejecutar otro SO. Por lo tanto, pueden obtener más rendimiento de cada pieza de hardware que ya poseen, lo cual reduce significativamente los costos de TI relacionados con los gastos operativos y de capital.
Dado que las VM están basadas en software, es fácil poner en marcha otras nuevas, lo que hace que sea más rápido escalar para satisfacer las nuevas demandas de carga de trabajo en comparación con el aprovisionamiento de nuevos entornos basados en hardware.
Las empresas pueden reubicar las VM según sus necesidades entre las computadoras físicas de una red. Esta capacidad permite asignar cargas de trabajo a servidores con potencia informática disponible. Las VM pueden incluso moverse entre entornos on premises y en la nube, lo que las hace útiles para escenarios de nube híbrida en los que se comparten recursos informáticos entre el centro de datos y un proveedor de servicios en la nube.
Crear una VM es más rápido y más fácil que instalar un SO en un servidor físico porque puede clonarse una VM con el SO ya instalado. Los desarrolladores y evaluadores de software pueden crear nuevos entornos bajo demanda para manejar nuevas tareas a medida que surjan.
Las VM mejoran la seguridad de varias maneras en comparación con los SO, que se ejecutan directamente en el hardware. Mediante un programa externo, puede escanearse un archivo de VM en busca de software malicioso. Puede crearse una instantánea de la VM en cualquier momento y restaurarse a ese estado si se infecta con malware, lo que efectivamente hace retroceder a la VM en el tiempo. La creación ágil y sencilla de VM también permite eliminar y recrear rápidamente una VM comprometida, que acelera la recuperación de infecciones de malware.
Con menos servidores físicos necesarios para ejecutar cargas de trabajo y aplicaciones, puede reducirse drásticamente el consumo de energía para mejorar el impacto ambiental.
Si bien las VM poseen muchos beneficios, tienen algunas desventajas para considerar.
Las VM dependen de los recursos de hardware puestos a su disposición en la computadora host. Los recursos limitados pueden derivar en un menor rendimiento e ineficiencias.
Las VM pueden ser complejas de configurar y gestionar, lo que requiere equipos con conocimientos técnicos y experiencia para configurarlas y mantenerlas.
Las VM presentan el riesgo de un punto único de falla al depender de una computadora física.
Las VM tienen una amplia gama de usos tanto para los administradores de TI de las empresas como para los usuarios, entre los que se incluyen los siguientes:
VMware, la primera empresa en comercializar con éxito la virtualización de la arquitectura de microprocesador x86, es líder en el mercado de la virtualización. VMware proporciona hipervisores tipo 1 y tipo 2, y software de VM a clientes empresariales.
La mayoría de los hipervisores admiten VM que ejecutan el SO Windows como invitado. El hipervisor Hyper-V de Microsoft viene como parte del SO Windows. Cuando se instala, crea una partición principal que se contiene a sí misma y al SO Windows principal, cada uno de los cuales obtiene acceso privilegiado al hardware. Otros SO, incluidos los invitados de Windows, se ejecutan en particiones secundarias y se comunican con el hardware a través de la partición principal.
El SO Android de código abierto de Google es común en dispositivos domésticos móviles y conectados.
El SO Android solo se ejecuta en la arquitectura de procesador ARM típica de estos dispositivos, pero es posible que los entusiastas, los jugadores de Android o los desarrolladores de software prefieran ejecutarlo en PC. Esta situación puede ser problemática porque las 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 los traduce para procesadores con diferentes conjuntos de instrucciones.
Varios proyectos, como Shashlik o Genymotion, pueden abordar este problema mediante el uso de un emulador que recrea la arquitectura ARM en el software. Una alternativa, el proyecto Android-x86, traslada Android a la arquitectura x86. Para ejecutarlo, debe instalarse el programa Android-x86 como una máquina virtual que usa el hipervisor VirtualBox tipo 2. Otra alternativa, Anbox, ejecuta el SO Android en el kernel de un SO Linux host.
Apple permite que su sistema macOS solo se ejecute en hardware de Apple. Esto significa que no puede ejecutarse en hardware que no sea de Apple como una VM o bajo su acuerdo de licencia de usuario final. Sin embargo, puede usar hipervisores tipo 2 en hardware Mac para VM con un invitado macOS.
Hoy en día, es imposible ejecutar iOS en una VM porque Apple controla estrictamente su SO iOS y solo permite que se ejecute en dispositivos iOS.
Lo más parecido a una máquina virtual iOS es el simulador de iPhone que se envía con el entorno de desarrollo integrado Xcode, que simula todo el sistema iPhone en software.
La plataforma Java es un entorno de ejecución para programas escritos en el lenguaje de desarrollo de software Java. La promesa de Java (“escribir una vez, ejecutar en cualquier lugar”) significa que cualquier programa Java podría ejecutarse en cualquier plataforma Java, razón por la cual la plataforma Java incluía una máquina virtual Java (JVM).
Los programas Java contienen bytecode, que es una forma de instrucción destinada a la JVM. La JVM compila este bytecode en código de máquina, que es el lenguaje de nivel más bajo que usa la computadora host. La JVM en la plataforma Java de una plataforma informática crea un conjunto diferente de instrucciones de código de máquina que la JVM de otra, en función del código de máquina que espera el procesador.
Por lo tanto, la JVM no ejecuta un SO completo ni usa un hipervisor como lo hacen otras VM. En cambio, traduce los programas de software a nivel de aplicación para que se ejecuten en un hardware particular.
Al igual que la JVM, la máquina virtual Python no se ejecuta en un hipervisor ni contiene un SO invitado. Es una herramienta que permite que los programas escritos en Python se ejecuten en varias CPU.
Al igual que Java, Python traduce sus programas a un formato intermedio que se llama bytecode y los almacena en un archivo listo para su ejecución. Cuando se ejecuta el programa, la VM Python traduce el bytecode en código de máquina para una ejecución rápida.
Linux es un SO invitado típico que se usa n muchas VM. También es un SO de host típico que se emplea para ejecutar VM e incluso tiene su propio hipervisor, la máquina virtual basada en kernel (KVM). Aunque es un proyecto de código abierto, Red Hat es propietaria de KVM.
Ubuntu es una distribución de Linux producida por Canonical. Está disponible en versiones de escritorio y servidor, que puede instalar como una VM. Los usuarios pueden desplegar Ubuntu como SO invitado en Microsoft Hyper-V. Proporciona una versión optimizada de Ubuntu Desktop que funciona bien en el modo de sesión mejorado de Hyper-V, lo que proporciona una estrecha integración entre el host de Windows y la VM Ubuntu. Incluye soporte para la integración del portapapeles, el cambio dinámico del tamaño del escritorio, las carpetas compartidas y el movimiento del mouse entre los escritorios host e invitado.
Las VM públicas o de múltiples inquilinos son VM con varios usuarios que comparten una infraestructura física común. Este modelo es el enfoque más rentable y escalable para el aprovisionamiento de VM. Sin embargo, los entornos de múltiples inquilinos carecen de algunas características de aislamiento que podrían preferir las organizaciones con mandatos estrictos de seguridad o cumplimiento.
Dos modelos de VM de inquilino único son los hosts dedicados y las instancias dedicadas.
Un modelo de pago por uso no tiene costos iniciales para la VM, y los usuarios simplemente pagan por lo que usan. Los clientes pagan por hora o segundo, según el proveedor y el tipo de instancia.
El modelo de menor costo de VM, instancias transitorias o spot se benefician del exceso de capacidad de un proveedor, pero el proveedor puede reclamarlo en cualquier momento. Las instancias transitorias/spot son útiles para aplicaciones que no siempre necesitan estar activadas o que son sumamente caras en cualquier otro modelo.
A diferencia de los modelos de pago por uso, los casos reservados vienen con un compromiso de plazo explícito, generalmente entre uno y tres años, pero también se combinan con grandes descuentos.
Por lo general, un usuario paga el costo total del servidor físico y se le factura en los incrementos en los que el proveedor ofrezca servidores dedicados, generalmente por hora o mes.
Los servidores bare metal tienen que ver con el hardware en bruto, la energía y el aislamiento. Son servidores físicos de inquilino único completamente desprovistos de ciclos de hipervisor (software de virtualización) y completamente dedicados a un solo cliente: usted.
Las cargas de trabajo que priorizan el rendimiento y el aislamiento, como las aplicaciones con uso intensivo en datos y los mandatos de cumplimiento normativo, suelen ser las más adecuadas para servidores bare metal, especialmente cuando se despliegan durante periodos prolongados.
Los programas de recursos empresariales (ERP), la gestión de relaciones con los clientes (CRM), la gestión de cadena de suministro (SCM), el comercio electrónico y las aplicaciones de servicios financieros son solo algunas de las cargas de trabajo ideales para los servidores bare metal.
Por el contrario, cuando sus cargas de trabajo exigen la máxima flexibilidad y escalabilidad, es mejor colocar un hipervisor en el hardware bare metal para crear una VM. Las VM aumentan la capacidad y la utilización del servidor. Son ideales para mover datos de una VM a otra, cambiar el tamaño de conjuntos de datos y dividir cargas de trabajo dinámicas.
La forma más sencilla de entender un contenedor es saber en qué se diferencia de una VM tradicional. En la virtualización tradicional, ya sea on-premises o en la nube, un hipervisor ayuda a virtualizar el hardware físico. Cada VM contiene un SO invitado, una copia virtual del hardware que el SO necesita para funcionar, así como una aplicación y sus bibliotecas y dependencias asociadas.
En lugar de virtualizar el hardware subyacente, los contenedores virtualizan el SO (normalmente, Linux). Cada contenedor contiene solo la aplicación y sus bibliotecas y dependencias. La ausencia del SO invitado es la razón por la que los contenedores son tan ligeros, rápidos y portátiles.
Los contenedores y Kubernetes, la plataforma de orquestación de contenedores de código abierto que los gestiona, se convirtieron en las unidades de facto de las arquitecturas modernas nativas de la nube y de microservicios. Si bien los contenedores se asocian más comúnmente con servicios sin estado, las organizaciones también pueden usarlos para servicios con estado. Los contenedores son estándar en escenarios de nube híbrida porque pueden ejecutarse de manera constante en la nube pública, la nube privada y las configuraciones tradicionales on premises. Hoy en día, una organización puede ejecutar la aplicación en su nube privada, pero mañana puede necesitar desplegarla en una nube pública de un proveedor diferente. La creación de contenedores de aplicaciones ofrece a los equipos la flexibilidad que necesitan para gestionar los diferentes entornos de software de la TI moderna.
Es importante tener en cuenta que las empresas pueden coexistir con contenedores y VM. Por ejemplo, es común ejecutar contenedores en VM, ya que muchas empresas tienen infraestructura basada en VM.
Una empresa puede elegir un contenedor para ejecutar una aplicación y tener una virtual machine para proporciona la infraestructura subyacente. Este método combina la portabilidad y la velocidad de los contenedores con la seguridad de las virtual machines. En otro escenario, una institución financiera puede emplear virtual machines para sus sistemas de bases de datos, lo que garantiza una seguridad más estricta con aislamiento de recursos y uso de contenedores para aplicaciones frontend, como aplicaciones móviles orientadas al cliente.
En la entrada en el blog "Containers versus VMs: What's the difference?" se explica más al respecto.
El siguiente video desglosa los conceptos básicos de la contenerización y cómo se compara con el uso de VM:
La selección de una VM y un proveedor de la nube comienza con la revisión de sus necesidades de carga de trabajo y requisitos presupuestarios, junto con otros factores críticos. A continuación, se presentan 10 aspectos que debe tener en cuenta al seleccionar un proveedor de servicios de VM.
Utilice nuestros servicios en la nube, impulsados por nuestra plataforma IBM Consulting Advantage, para acelerar su transición hacia la nube híbrida, generar rentabilidad, aumentar la productividad y la sostenibilidad y acelerar el tiempo de comercialización.
El alojamiento en servidores dedicados de IBM proporciona aislamiento, control y seguridad totales para cargas de trabajo de misión crítica con opciones personalizables.
IBM Cloud Virtual Server for VPC es una familia de servidores virtuales Intel x86, IBM Z e IBM LinuxONE creados en IBM Cloud Virtual Private Cloud.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com, openliberty.io