Publicado: 3 de marzo de 2024
Colaboradores: Stephanie Susnjara, Ian Smalley
Una máquina virtual (VM) es una representación virtual o emulación de un equipo físico que utiliza software en lugar de hardware para ejecutar programas e implementar aplicaciones.
Al utilizar los recursos de una única máquina física, como memoria, CPU, interfaz de red y almacenamiento, las máquinas virtuales permiten a las empresas ejecutar virtualmente varias máquinas con distintos sistemas operativos en un único dispositivo.
Las máquinas virtuales suelen denominarse huéspedes, con una o más máquinas "huéspedes" que se ejecutan en una máquina física denominada máquina "anfitriona". La tecnología de VM incluye servidores virtuales, instancias de servidores virtuales (VSI) y servidores privados virtuales (VPN).
Según un informe de Global Market Insights (GMI) (enlace externo a ibm.com), el tamaño del mercado de las máquinas virtuales superará los 9500 millones de dólares en 2023. GMI prevé que este mercado se expanda a una tasa de crecimiento anual compuesto (TCAC) de alrededor del 12 % entre 2024 y 2032, impulsado por la adopción constante del cloud computing. A medida que las empresas se trasladan a la nube por su escalabilidad, flexibilidad y rentabilidad, los proveedores de la nube siguen integrando máquinas virtuales y otras tecnologías cruciales (por ejemplo, contenedores) para proporcionar una infraestructura informática coherente.
Lea cómo el escritorio como servicio (DaaS) permite a las empresas lograr el mismo nivel de rendimiento y seguridad que la implementación de las aplicaciones en las instalaciones.
Suscríbase al boletín de IBM
Las máquinas virtuales funcionan mediante la virtualización, un proceso de creación de versiones virtuales o basadas en software de recursos (computación, almacenamiento, redes, servidores) o aplicaciones.
La virtualización permite un uso más eficiente del hardware físico del ordenador y es fundamental para el cloud computing.
La virtualización es posible con un hipervisor, también conocido como monitor de máquina virtual (VMM). Esta capa de software ligera administra las máquinas virtuales a medida que se ejecutan unas junto a otras.
El nacimiento de la virtualización vuelve a 1964, cuando IBM diseñó e introdujo CP-40, un proyecto de investigación experimental de tiempo compartido para el sistema/360 de IBM. El CP-40, que más tarde evolucionó en el CP-67 y luego en Unix, proporcionó hardware informático capaz de soportar múltiples usuarios simultáneos y sentó las bases para las máquinas virtuales.
El 2 de agosto de 1972, IBM lanzó lo que muchos consideran la primera máquina virtual, la VM/370, y los primeros mainframes System/370 que soportaban memoria virtual.
En 1998, VMware (enlace externo a ibm.com) desarrolló el sistema operativo x86, que permitía segmentar una sola máquina en varias máquinas virtuales, cada una con su propio sistema operativo. En 1999, la compañía 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 del cloud computing, lo que permite a las empresas impulsar una mayor utilización de la capacidad y reducir los costes. Toda la infraestructura de TI se puede virtualizar, incluidos entornos de escritorio, sistemas operativos, hardware de almacenamiento, centros de datos y mucho más.
La virtualización se basa en la tecnología de hipervisor. Esta capa de software colocada en una computadora o servidor físico (también conocido como servidor bare metal) permite que el ordenador físico separe su sistema operativo y sus aplicaciones de su hardware. Estas máquinas virtuales pueden ejecutar sus sistemas operativos y aplicaciones de forma independiente y, al mismo tiempo, compartir los recursos originales (memoria, RAM, almacenamiento, etc.) del servidor, que administra el hipervisor. En esencia, el hipervisor actúa como un policía de tráfico, asignando recursos a las máquinas virtuales y asegurándose 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 máquinas virtuales se dividen en dos categorías principales: máquinas virtuales de sistema (también llamadas máquinas de virtualización completa) y máquinas virtuales de proceso.
Las máquinas virtuales del sistema permiten compartir los recursos subyacentes de las máquinas físicas entre diferentes máquinas virtuales, cada una de las cuales ejecuta su propio sistema operativo. Por el contrario, las máquinas virtuales de proceso (también denominadas máquinas virtuales de aplicación) ejecutan una aplicación dentro de un sistema operativo y admiten un único proceso. Las máquinas virtuales Java, que ejecutan programas compilados en Java, son ejemplos de máquinas virtuales de procesos.
Las máquinas virtuales ofrecen numerosas ventajas con respecto al hardware físico tradicional.
Como varias máquinas virtuales se ejecutan en un único ordenador físico, los clientes no tienen que comprar un nuevo servidor cada vez que quieran ejecutar otro sistema operativo. Por lo tanto, pueden obtener más rendimiento de cada pieza de hardware que ya poseen, lo que reduce significativamente los costes de TI relacionados con los gastos operativos y de capital.
Dado que las máquinas virtuales se basan en software, es fácil crear otras nuevas, lo que agiliza la ampliación para satisfacer las demandas de nuevas cargas de trabajo en comparación con el aprovisionamiento de nuevos entornos basados en hardware.
Las empresas pueden reubicar las máquinas virtuales según sea necesario entre los equipos físicos de una red. Esta capacidad permite asignar cargas de trabajo a servidores con potencia informática de sobra. Las máquinas virtuales pueden incluso moverse entre entornos en las instalaciones y en la nube, lo que los hace útiles para escenarios de nube híbrida donde comparte recursos informáticos entre su centro de datos y un proveedor de servicios en la nube.
Crear una VM es más rápido y sencillo que instalar un SO en un servidor físico, ya que se puede clonar una VM con el SO ya instalado. Los desarrolladores y probadores de software pueden crear nuevos entornos bajo demanda para manejar nuevas tareas a medida que surjan.
Las máquinas virtuales mejoran la seguridad de varias maneras en comparación con los sistemas operativos, que se ejecutan directamente en el hardware. Utilizando un programa externo, puede escanear un archivo VM en busca de software malicioso. Puede crear una instantánea de la VM en cualquier momento y restaurarla a ese estado si se infecta con malware, devolviendo eficazmente la VM en el tiempo. La creación rápida y sencilla de máquinas virtuales también permite eliminar y volver a crear rápidamente una máquina virtual comprometida, lo que acelera la recuperación de las infecciones por malware.
Con menos servidores físicos necesarios para ejecutar cargas de trabajo y aplicaciones, puede reducir drásticamente el consumo de energía para mejorar su impacto medioambiental.
Aunque las máquinas virtuales tienen muchas ventajas, tienen algunas desventajas que hay que tener en cuenta.
Las máquinas virtuales dependen de los recursos de hardware que estén disponibles en el equipo host. Los recursos limitados pueden reducir el rendimiento y provocar ineficiencias.
Las máquinas virtuales pueden ser complejas de configurar y administrar, lo que requiere equipos con conocimientos técnicos y experiencia para configurarlas y mantenerlas.
Las máquinas virtuales plantean el riesgo de un único punto de fallo al depender de un ordenador físico.
Las máquinas virtuales tienen una amplia gama de usos tanto para los administradores de TI como para los usuarios de la empresa, incluidos 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 (enlace externo a ibm.com). VMware proporciona hipervisor de tipo 1 y tipo 2 y software de VM a clientes empresariales.
La mayoría de los hipervisores admiten máquinas virtuales que ejecutan el sistema operativo Windows como invitado. El hipervisor Hyper-V de Microsoft forma parte del sistema operativo Windows. Cuando se instala, crea una partición principal que lo contiene a sí mismo y al sistema operativo Windows principal, cada uno de los cuales obtiene acceso privilegiado al hardware. Otros sistemas operativos, 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 sistema operativo Android de código abierto de Google es común en dispositivos móviles y domésticos conectados.
El sistema operativo Android sólo funciona en la arquitectura de procesador ARM típica de estos dispositivos, pero los entusiastas, los jugadores de Android o los desarrolladores de software podrían querer ejecutarlo en PC. Esta situación puede ser problemática porque los PC funcionan con una arquitectura de procesador x86 totalmente diferente y un hipervisor de virtualización de hardware sólo pasa instrucciones entre la máquina virtual y la CPU. No las traduce para procesadores con distintos conjuntos de instrucciones.
Varios proyectos, como Shashlik o Genymotion, pueden resolver este problema utilizando un emulador que recrea la arquitectura ARM en software. Una alternativa, el proyecto Android-x86, porta Android a la arquitectura x86 en su lugar. Para ejecutarlo, debe instalar el programa Android-x86 como una máquina virtual que utiliza el hipervisor VirtualBox tipo 2. Otra alternativa, Anbox, ejecuta el sistema operativo Android en el kernel de un sistema operativo Linux host.
Apple permite que su sistema macOS solo funcione en el hardware de Apple. Esto significa que no puedes ejecutarlo en hardware que no sea de Apple como una máquina virtual o bajo su acuerdo de licencia de usuario final. Sin embargo, puede utilizar hipervisores de tipo 2 en el hardware del Mac para crear máquinas virtuales con un invitado de macOS.
Hoy en día, es imposible ejecutar iOS en una máquina virtual porque Apple controla estrictamente su sistema operativo 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 del iPhone en software.
La plataforma Java es un entorno de ejecución para programas que están escritos en el lenguaje de desarrollo de software Java. La promesa de Java ("escriba una vez, ejecute 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 código de bytes, que es una forma de instrucción destinada a la JVM. La JVM compila este código de bytes en código máquina, que es el lenguaje de nivel más bajo que utiliza el equipo host. La JVM de una plataforma informática Java crea un conjunto de instrucciones de código máquina diferente al de la JVM de otra, basándose en el código máquina que espera el procesador.
Por lo tanto, la JVM no ejecuta un sistema operativo completo y no utiliza un hipervisor como lo hacen otras máquinas virtuales. En su lugar, traduce los programas de software a nivel de aplicación para que se ejecuten en un hardware determinado.
Al igual que la JVM, la máquina virtual Python no se ejecuta en un hipervisor ni contiene un sistema operativo invitado. Es una herramienta que permite que los programas que están escritos en Python se ejecuten en varias CPU.
Al igual que Java, Python traduce sus programas a un formato intermedio que se llama código de bytes y los almacena en un archivo listo para su ejecución. Cuando el programa se ejecuta, la máquina virtual de Python traduce el código de bytes a código máquina para una ejecución rápida.
Linux es un sistema operativo invitado típico que se usa en muchas máquinas virtuales. También es un sistema operativo host típico que se utiliza para ejecutar máquinas virtuales e incluso tiene su propio hipervisor, la máquina virtual basada en kernel (KVM). Aunque es un proyecto de código abierto, Red Hat posee KVM.
Ubuntu es una distribución de Linux producida por Canonical. Está disponible en versiones de escritorio y servidor, que se pueden instalar como una máquina virtual. Los usuarios pueden implementar Ubuntu 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, proporcionando una estrecha integración entre el host de Windows y la máquina virtual de 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 ratón entre los escritorios anfitrión e invitado.
Las máquinas virtuales públicas o multiusuario son máquinas virtuales con múltiples usuarios que comparten una infraestructura física común. Este modelo es el enfoque más rentable y escalable para el aprovisionamiento de máquinas virtuales. Sin embargo, los entornos multiempresa carecen de algunas características de aislamiento que las organizaciones con mandatos estrictos de seguridad o cumplimiento podrían preferir.
Dos modelos de máquinas virtuales de un solo inquilino son los hosts dedicados y las instancias dedicadas.
Un modelo de pago por uso no tiene costes iniciales para la máquina virtual, y los usuarios simplemente pagan por lo que utilizan. Los clientes pagan por horas o segundos, según el proveedor y el tipo de instancia.
El modelo de menor coste de las máquinas virtuales, las instancias transitorias o spot aprovechan el exceso de capacidad de un proveedor, pero este puede recuperarlas en cualquier momento. Las instancias transitorias/spot son útiles para aplicaciones que no necesitan estar siempre encendidas o que resultan prohibitivamente caras en cualquier otro modelo.
A diferencia de los modelos de pago por uso, los casos reservados conllevan un compromiso explícito de duración, normalmente entre uno y tres años, pero también van acompañados de grandes descuentos.
Un usuario suele pagar el coste total del servidor físico y se le factura en los incrementos que ofrezca el proveedor de servidores dedicados, normalmente cada hora o cada mes.
Los servidores bare metal se basan en el hardware limpio, la potencia y el aislamiento. Son servidores físicos de un solo inquilino, completamente desprovistos de ciclos de hipervisor (software de virtualización) y dedicados por completo a un solo cliente: usted.
Las cargas de trabajo que priorizan el rendimiento y la confidencialidad, como las aplicaciones con uso intensivo de datos y las exigencias de cumplimiento normativo, suelen ser más adecuadas para servidores bare metal, especialmente cuando se despliegan durante periodos prolongados.
Programas de recursos empresariales (ERP), gestión de relaciones con los clientes (CRM), gestión de la cadena de suministro (SCM), aplicaciones de comercio electrónico y servicios financieros son solo algunas de las cargas de trabajo ideales para servidores bare metal.
Por el contrario, cuando las cargas de trabajo exigen la máxima flexibilidad y escalabilidad, es mejor colocar un hipervisor en el hardware dedicado para crear una máquina virtual. Las máquinas virtuales aumentan la capacidad y la utilización del servidor. Son ideales 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.
La forma más fácil de entender un contenedor es saber cómo difiere de una máquina virtual tradicional (VM). En la virtualización tradicional, en las instalaciones o en la nube, un hipervisor ayuda a 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 funcionar y una aplicación con sus bibliotecas y dependencias asociadas.
En lugar de virtualizar el hardware subyacente, los contenedores virtualizan el sistema operativo (normalmente Linux). Cada contenedor contiene únicamente 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 han convertido en las unidades de facto de las arquitecturas modernas nativas de la nube y de microservicios. Aunque los contenedores suelen asociarse a servicios sin estado, las organizaciones también pueden utilizarlos para servicios con estado. Los contenedores son estándar en los escenarios de nube híbrida porque pueden ejecutarse de forma coherente en la nube pública, la nube privada y los entornos tradicionales en las instalaciones. Hoy en día, una organización puede ejecutar la aplicación en su nube privada, pero mañana, es posible que necesite implementarla en una nube pública de un proveedor diferente. La creación de aplicaciones en contenedores proporciona a los equipos la flexibilidad que necesitan para manejar los numerosos entornos de software de la TI moderna.
Es importante tener en cuenta que las empresas pueden coexistir con contenedores y máquinas virtuales. Por ejemplo, es habitual ejecutar contenedores en máquinas virtuales, ya que muchas empresas disponen de infraestructuras basadas en máquinas virtuales.
Una empresa puede elegir un contenedor para ejecutar una aplicación y hacer que una máquina virtual proporcione la infraestructura subyacente. Este método combina la portabilidad y la velocidad de los contenedores con la seguridad de las máquinas virtuales. En otro escenario, una institución financiera puede utilizar máquinas virtuales para sus sistemas de bases de datos, garantizando una seguridad más estricta con el aislamiento de recursos, y utilizar contenedores para aplicaciones front-end como las aplicaciones móviles orientadas al cliente.
La entrada de blog "Containers versus VMs: What's the difference?" explica más.
En el siguiente vídeo se describen los conceptos básicos de la contenerización y cómo se compara con el uso de máquinas virtuales:
La selección de una máquina virtual y un proveedor de nube comienza con la revisión de sus necesidades de carga de trabajo y requisitos presupuestarios, junto con otros factores cruciales. A continuación se indican 10 aspectos a tener en cuenta a la hora de seleccionar un proveedor de servicios de máquinas virtuales.
Máquinas virtuales altamente escalables para un único arrendatario y varios arrendatarios que puede poner en marcha rápidamente para obtener el máximo aislamiento y control de la red.
IBM Power Virtual Server es una familia de servidores virtuales IBM Power multiusuario configurables con acceso a los servicios de IBM Cloud. Traslade y gestione cargas de trabajo de manera fluida tanto en entornos de nube como en las instalaciones.
IBM z/VM es un sistema operativo con tecnología de virtualización e hipervisor escalable y de alta seguridad diseñado para ejecutarlo en servidores invitados como máquinas virtuales Linux, z/OS y z/TPF, así como Red Hat OpenShift en servidores IBM Z y LinuxONE.
El cloud computing transforma la infraestructura de TI en una utilidad, lo que le permite "conectarse" a recursos informáticos y aplicaciones a través de Internet sin necesidad de instalarlos y mantenerlos en las instalaciones.
La nube híbrida integra servicios de nube pública, servicios de nube privada e infraestructura local en un único entorno informático distribuido.
DevOps acelera la entrega de software de mayor calidad combinando y automatizando el trabajo de los equipos de desarrollo de software y operaciones de TI.
Los microservicios, o arquitectura de microservicios, es un enfoque arquitectónico nativo de la nube en el que una sola aplicación se compone de muchos componentes o servicios más pequeños acoplados de forma flexible e implementables de forma independiente.
Los contenedores son unidades ejecutables de software en las que el código de la aplicación se empaqueta junto con sus bibliotecas y dependencias de forma común para que el código pueda ejecutarse en cualquier lugar, ya sea en el escritorio, en la TI tradicional o en la nube.
La virtualización es un proceso que permite un uso más eficiente del hardware informático físico y es la base del cloud computing.