
Definiciones básicas, historia y lo que no cupo (o no se acomodó) en otras páginas.
Introducción
La virtualización es el proceso de crear una versión de algo que no es «real» (sin que «real» implique forzosamente algo que es físicamente tangible, aunque la versión «virtual» sí sea algo intangible); quizás lo más apropiado es hablar de que se trata de una representación funcional del original. En la actualidad, se asocia más con la digitalización, pues fue el avance en el poder de cómputo lo que trajo este concepto a la cotidianidad del quehacer informático y la computación.
La teoría nos dice que una computaora es capaz de simular cualquier cosa, incluso a otra computadora. Es algo que se sabe y utiliza desde hace mucho tiempo. Tratándose de computadoras y sistemas operativos, el proceso de virtualización permite tener como huésped a una simulación o emulación (ver más abajo sobre estos dos términos) de un computador, a través de un programa, y hacer uso de un sistema operativo distinto al del computador anfitrión.
La virtualización es el proceso de crear una representación de algo que pueden ser aplicaciones, servidores, almacenamiento o elementos de redes de comunicación. Es la forma más eficaz de reducir los gastos de TI a la vez que aumenta la eficiencia y la agilidad para empresas de todos los tamaños.
Conceptos
Algunos conceptos generales o términos que aparecen a lo largo de las páginas de esta sección. Las definiciones que requieren más de un párrafo o alguna imagen se desarrollan en apartados propios.
Términos generales
Anfitrión.- El equipo, sistema o proceso dentro del cual la virtualización se lleva a acabo, el que tiene la capacidad de virtualizar.
Huésped.- El proceso que representa la versión digital (simulada o emulada); aquello virtualizado.
Máquinas virtuales
Las máquinas virtuales (virtual machines, VM) son emulaciones (o simulaciones) de computadoras reales (físicas) por medio de software. Se trata de un programa que emula (o simula) a un procesador (uno real, por ejemplo un Intel 80386) y los recursos que administra: la memoria, almacenamiento secundario, comunicaciones y otros dispositivos de entrada y salida, de la misma forma en la que un computador físico lo haría.
Contenedores
Los contenedores son entornos virtualizados de aplicaciones que, en comparación a los requerimientos y enfoques de las máquinas virtuales, se consideran ligeros. Un entorno aislado para ejecutar una aplicación, con su propio sistema de archivos, red, usuarios, y recursos, pero compartiendo el kernel con el sistema anfitrión. La mejor explicación para poder entender la diferencia de los contenedores con las máquinas virtuales es la siguiente.
Considérese, por ejemplo, un entorno de desarrollo en linux para programación en C. Establecerlo mediante una máquina virtual, implica descargar e instalar el sistema operativo (digamos con un mínimo de elementos; algunos que se usarán, otros no, pero que deben descargarse por haber sido empaquetados así— todos juntos —o por cierta dependencia) y luego descargar las herramientas de desarrollo que incluyen el compilador de C, archivos de cabecera, bibliotecas de funciones que permiten al compilador hacer la liga con los servicios del sistema operativo y algunas cosas más. Muy seguramente el paquete de herramientas de desarrollo incluirán componentes y herramientas para desarrollar con otros lenguajes que no son necesarios para hacerlo con C. Ciertamente podrían buscarse, descargar e instalar únicamente aquellos elementos que el desarrollo con C requieren, pero el hacerlo requiere un mayor conocimiento, tiempo y habilidad para resolver cualquier problema que se presente, por lo que la mayoría de los desarrolladores opta por descargar el paquete de herramientas de desarrollo canjeando el tiempo y conocimientos mencionados, por el espacio en disco.
Los contenedores abordan este problema proporcionando únicamente lo que se requiere. Aprovechan el esfuerzo que alguien ya invirtió en instalar y configurar sólo aquellos elementos necesarios (dependencias) para una labor específica.
Otra forma de ver la diferencia entre los contenedores y las VM es el que las últimas «virtualizan hardware» mientras que los primeros a los servicios de un sistema operativo (ya virtualizado) que es compartido como proceso de recursos aislados.
Aunque el concepto del contenedor no es exclusivo de un sistema operativo o tecnología en particular, la mayoría de los contenedores que usamos hoy (con Docker, Kubernetes, etc.) están basados en el kernel de Linux. Windows también tiene su tecnología de contenedores, y Microsoft la ha integrado en Windows 10, 11 y Windows Server, especialmente con el backend de Docker en mente.
Existen dos tipos principales de contenedores en Windows:
1. Windows Server Containers
- Comparables a los contenedores de Linux: comparten el kernel de Windows.
- Aislamiento a nivel de procesos y namespaces similares a Linux.
- Ejecutan sólo binarios de Windows (no Linux).
- Más ligeros que las VMs.
2. Hyper-V Containers
- Cada contenedor corre en una mini VM con su propio kernel de Windows.
- Mayor aislamiento (separación total del host).
- Recomendado para mayor seguridad o cuando no puedes confiar en el contenedor.
Docker en Windows es compatible con ambos entornos:
- En Windows Server, se pueden correr contenedores Windows de «forma nativa».
- En Windows 10/11 Home o Pro, Docker usa una VM de Linux (mediante WSL2) para correr contenedores Linux.
- Docker permite elegir entre contenedores Linux o Windows, pero no puedes mezclar ambos tipos en una misma instancia de Docker Engine.
⚠️ Los contenedores de Windows sólo pueden ejecutar binarios de Windows. No pueden correr , por ejemplo,
apt, ni usar Alpine, ni instalar un NGINX Linux-style.
Historia
*En desarrollo*
Diferencia entre simulación y emulación
Un simulador es un sistema de software o hardware que imita a otro. La imitación se hace con cierto nivel de similitud aceptable sin que necesariamente se busque replicar la totalidad del sistema o su comportamiento. Un subconjunto importante de los videojuegos son simulaciones, tales como simuladores de ciudades, simuladores de guerra y los simuladores de vuelo. Aunque sean muy realistas (como los de entrenamiento de vuelo, que suelen incluir hardware con controles verdaderos y retroalimentación) mientras haya una diferencia notoriamente perceptible con algunos de nuestro sentidos o capacidad cognitiva, se considerarán como una mera representación (una aproximación quizás hasta algo falsa) con capacidad para darnos una idea de lo que es verdadero pero que no puede substituir al original.
Por su parte, los emuladores buscan ser un substituto de aquello que imitan (una alternativa o un reemplazo). Por ejemplo, los emuladores de teléfonos que se ejecutan en computadoras de escritorio y permiten a los programadores escribir y probar aplicaciones para éstos sin necesidad de contar con el hardware. Otros ejemplos incluyen la compatibilidad con sistemas existentes (las consolas modernas de videojuegos utilizan emuladores para imitar el hardware de sus predecesores), o el proporcionar una representación digital de equipo como una alternativa más práctica o barata emuladores de terminal). El punto clave del concepto es el que un emulador busca poder ser un substituto y por lo tanto no es perceptible de forma inmediata (requiere buscarse) la diferencia en estructura o comportamiento con respecto al original .
Niveles de virtualización
En la literatura sobre virtualización, los distintos tipos de técnicas que se emplean suelen agruparse en lo que usualmente se llaman niveles de virtualización. De acuerdo a cómo se abstraen los recursos de hardware y software, es como se catalogan estos enfoques.
Virtualización Completa (Full virtualisation)
Dentro de lo que se considera una virtualización completa, encontramos sistemas operativos que son ejecutado como huéspedes invitados (sin modificaciones), como si fueran independientes en hardware real. Esto se logra mediante hipervisores (hypervisors), que pueden ser:
- Tipo 1 (bare-metal): Se ejecutan directamente sobre el hardware. Ejemplo: VMware ESXi, Microsoft Hyper-V, Xen, KVM.
- Tipo 2 (hosted): Se ejecutan sobre un sistema operativo. Ejemplo: VMware Workstation, VirtualBox, Parallels.
Paravirtualización
Bajo el enfoque de la paravirtualización, el sistema operativo invitado está modificado para comunicarse mejor con el hipervisor y mejorar el rendimiento. Ejemplos: Xen con PV (Paravirtualization), KVM con VirtIO.
Virtualización a Nivel de Sistema Operativo (contenedores)
Los contenedores no requieren un hipervisor tradicional sino que usa el kernel del sistema anfitrión para aislar aplicaciones en espacios de usuario. Los contenedores son más ligeros que las máquinas virtuales porque comparten el kernel del SO anfitrión. Ejemplo: Docker, LXC, Podman, Kubernetes.
Virtualización de Hardware o Passthrough
Un enfoque híbrido consiste en asignar directamente dispositivos físicos a máquinas virtuales o contenedores. Se usa para mejorar el rendimiento de dispositivos como GPUs, NICs, y almacenamiento. Ejemplo: PCI Passthrough, SR-IOV (Single Root I/O Virtualization).
Virtualización Anidada (nested virtualisation)
El ejecutar un hipervisor dentro de otro hipervisor, permitiendo máquinas virtuales dentro de máquinas virtuales es una posibilidad, aunque quizás extrema y en la práctica poco rentable. Principalmente se usa en entornos de desarrollo y pruebas. Ejemplo: KVM sobre KVM, VMware ESXi sobre VMware ESXi, Nested Hyper-V.
Virtualización a Nivel de Aplicación
Por supuesto, el concepto de la virtualización podemos llevarla al nivel de las aplicaciones, para poder ejecutar aplicaciones en entornos aislados sin necesidad de una VM completa o un contenedor. Ejemplo: Java Virtual Machine (JVM), .NET CLR, WebAssembly (WASM).
Tecnologías
En términos de tecnologías, las principales que habilitan estos niveles incluyen:
- Intel VT-x / AMD-V → Extensiones de hardware para virtualización.
- SR-IOV, VFIO, IOMMU → Virtualización de dispositivos físicos.
- Namespaces y cgroups → Aislamiento de contenedores en Linux.
- KVM, QEMU, Xen, VMware → Hipervisores y emuladores.
Referencias
- «Virtualization,» VMware, Inc., web. Visited: 2020.11.10. URL: https://www.vmware.com/au/solutions/virtualization.html.
- Eduardo René Rodríguez Ávila, blog personal; entradas relacionadas al tema de la virtualización. Consulta: https://dredu.mx/?s=virtualizaci%C3%B3n.
- James Mcilhargey, «Diferencia entre el simulador y el emulador«, techlandia.com, web. Visitado: 2023.04.08. URL: https://techlandia.com/diferencia-simulador-emulador-info_259849/.
|
© Todos los derechos reservados. Dr. Eduardo René Rodríguez Avila |
Creación: 2021.04.20 Última actualización: 2025.07.08 |
|||
| El contenido de este sitio puede ser copiado y reproducido libremente mientras no sea alterado y se cite su origen. Marcas y productos registrados son citados por referencia y sin fines de lucro o dolo. Todas las opiniones son a título personal del o los autores de éstas y, salvo sea expresado de otro modo, deben considerarse como registro y expresión de la experiencia de uso de aquello que es tratado. Para conocer más sobre la posición de privacidad y responsabilidad de lo que se presenta en este sitio web y como ha sido obtenido, consulte la declaración al respecto. | |||||

