Virtualización 0. Seminario de sistemas 1
Last updated Sep 21, 2021
by
sr_labs Admin
En [Informática](https://es.wikipedia.org/wiki/Inform%C3%A1tica "Informática"), la virtualización es la creación a través de software de una versión virtual de algún recurso tecnológico, como puede ser una plataforma de hardware, un sistema operativo, un dispositivo de almacenamiento o cualquier otro recurso de red.[1](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-PH-19-1)
Dicho de otra manera, se refiere a la [abstracción](https://es.wikipedia.org/wiki/Abstracci%C3%B3n_(inform%C3%A1tica) "Abstracción (informática)") de los recursos de una [computadora](https://es.wikipedia.org/wiki/Computadora "Computadora"), llamada [Hypervisor](https://es.wikipedia.org/wiki/Hypervisor "Hypervisor") o VMM (Virtual Machine Monitor) que crea una capa de abstracción entre el [hardware](https://es.wikipedia.org/wiki/Hardware "Hardware") de la máquina física (**host**) y el [sistema operativo](https://es.wikipedia.org/wiki/Sistema_operativo "Sistema operativo") de la [máquina virtual](https://es.wikipedia.org/wiki/M%C3%A1quina_virtual "Máquina virtual") (virtual machine, guest), dividiéndose el recurso en uno o más entornos de ejecución.
## Características principales
La capa de software VMM maneja, gestiona y arbitra los cuatro recursos principales de una computadora (CPU, Memoria, Dispositivos Periféricos y Conexiones de Red). Así podrá repartir dinámicamente estos recursos entre todas las máquinas virtuales definidas en el computador central. Esto hace que se puedan tener varios ordenadores virtuales ejecutándose en el mismo ordenador físico.
Este término es antiguo: se viene usando desde 1960. Se ha ido aplicando a diferentes aspectos y ámbitos de la informática, desde sistemas computacionales completos hasta capacidades o componentes individuales. Con la consolidación del modelo de la [Computación en la nube](https://es.wikipedia.org/wiki/Computaci%C3%B3n_en_la_nube "Computación en la nube"), la virtualización ha pasado a ser uno de sus componentes fundamentales, especialmente en lo que se denomina infraestructura de [nube privada](https://es.wikipedia.org/w/index.php?title=Nube_privada&action=edit&redlink=1 "Nube privada (aún no redactado)").
La virtualización se encarga de crear una interfaz externa que encapsula una implementación subyacente mediante la combinación de recursos en localizaciones físicas diferentes, o por medio de la simplificación del sistema de control. En los últimos años, el avanzado desarrollo de nuevas plataformas y tecnologías de virtualización ha hecho que se haya vuelto a prestar atención a este concepto.
En general, la máquina virtual **simula una plataforma de hardware autónoma**, incluyendo un sistema operativo completo que se ejecuta como si estuviera instalado. Típicamente, varias máquinas virtuales operan en un computador central. Para que el sistema operativo “guest” funcione, la simulación debe ser lo suficientemente grande (siempre dependiendo del tipo de virtualización).
[](https://commons.wikimedia.org/wiki/File:VirtualBox2.png)
Existen diferentes formas de virtualización: se puede virtualizar el hardware de servidor, el software de servidor, sesiones de usuario, aplicaciones y también crear máquinas virtuales en una computadora de escritorio.[7](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-Technet_Microsoft,_2007-7)?
Entre los principales proveedores de software que han desarrollado tecnologías de virtualización integrales (que abarcan todas las instancias: servidor, aplicaciones, escritorio) se encuentran, por ejemplo [Citrix](https://es.wikipedia.org/wiki/Citrix "Citrix"), [VMware](https://es.wikipedia.org/wiki/VMware "VMware") y [Microsoft](https://es.wikipedia.org/wiki/Microsoft "Microsoft"). Estas compañías han diseñado soluciones específicas para virtualización, como [XenServer](https://es.wikipedia.org/wiki/Xen "Xen"), [VMware ESX](https://es.wikipedia.org/wiki/VMware_ESX "VMware ESX") y [Windows Server 2008 Hyper-V](https://es.wikipedia.org/wiki/Hyper-V "Hyper-V") para la virtualización de servidores.
## Tipos de virtualización

Una máquina virtual nos permite tener varios ordenadores virtuales ejecutándose sobre el mismo ordenador físico.
Podemos clasificar la virtualización según lo que se quiere virtualizar en:
* [Virtualización de plataforma](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n_de_hardware "Virtualización de hardware"), también llamado Virtualización de servidor[3](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-3)? o [Virtualización de hardware](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n_de_hardware "Virtualización de hardware")[4](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-ionos-4)?. Se tienen [máquinas virtuales](https://es.wikipedia.org/wiki/M%C3%A1quina_virtual "Máquina virtual") que son software huésped ejecutado sobre un software especial llamado [Hipervisor](https://es.wikipedia.org/wiki/Hipervisor "Hipervisor") o VMM (*Virtual Machine Monitor*). Esta VMM crea una capa de abstracción del [hardware](https://es.wikipedia.org/wiki/Hardware "Hardware") de la máquina física (host) y se la ofrece al [sistema operativo](https://es.wikipedia.org/wiki/Sistema_operativo "Sistema operativo") de la [máquina virtual](https://es.wikipedia.org/wiki/M%C3%A1quina_virtual "Máquina virtual").[5](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-INCIBE,_2020-5)?
* Virtualización de recursos hardware. Por ejemplo, según el tipo de recurso hardware que queremos virtualizar tenemos:
* Virtualización de almacenamiento. Es lo que hacen, por ejemplo, los sistemas [RAID](https://es.wikipedia.org/wiki/RAID "RAID"), [LVM](https://es.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) "Logical Volume Manager (Linux)"), [SAN](https://es.wikipedia.org/wiki/Red_de_%C3%A1rea_de_almacenamiento "Red de área de almacenamiento") y [NAS](https://es.wikipedia.org/wiki/Almacenamiento_conectado_en_red "Almacenamiento conectado en red")
* Virtualización de memoria. Es lo que hacen, por ejemplo, los sistema de [memoria virtual](https://es.wikipedia.org/wiki/Memoria_virtual "Memoria virtual").
* Virtualización de recursos de computación. Es lo que hacen, por ejemplo, los [clúster de computación](https://es.wikipedia.org/wiki/Cl%C3%BAster_de_computadoras "Clúster de computadoras").
* Virtualización de interfaces de red. Por ejemplo la [Agregación de enlaces](https://es.wikipedia.org/wiki/Agregaci%C3%B3n_de_enlaces "Agregación de enlaces") simula un dispositivo de red único con gran ancho de banda utilizando múltiples interfaces de red independientes.[6](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-6)?
* Virtualización de red. Es lo que hacen las [VPN](https://es.wikipedia.org/wiki/Red_privada_virtual "Red privada virtual"), [VLAN](https://es.wikipedia.org/wiki/VLAN "VLAN"), [Virtual IP](https://es.wikipedia.org/w/index.php?title=Virtual_IP&action=edit&redlink=1 "Virtual IP (aún no redactado)") y [SDN](https://es.wikipedia.org/wiki/Redes_definidas_por_software "Redes definidas por software")
* Virtualización de entornos software de ejecución. Dependiendo del entorno de ejecución que virtualizo tenemos:
* [Virtualización a nivel de sistema operativo](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n_a_nivel_de_sistema_operativo "Virtualización a nivel de sistema operativo") o contenedorización. El kernel del sistema operativo subyacente permite ejecutar de forma paralela instancias de espacio de usuario, aisladas unas de otras. [4](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-ionos-4)? Todas las instancias comparte el kernel del sistema operativo subyacente. En cada instancia, llamada contenedor, el usuario puede instalar una o más aplicaciones. Al programa que ofrece alojamiento a contenedores se le llama motor de contenedores
* [Virtualización de escritorio](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n_de_escritorio "Virtualización de escritorio"). Implementan un escritorio como servicio basándose en una estructura cliente-servidor. Permite una administración centralizada y en entornos de trabajo estandarizados es posible reducir de forma significativa los costes de gestión y mantenimiento.[4](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-ionos-4)? Dependiendo de dónde se aplique la potencia de procesamiento para crear un escritorio virtual, se puede diferenciar entre distintos enfoques:[4](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-ionos-4)?
* Basada en el host. Los escritorios virtuales se ejecutan directamente en el servidor y los clientes tiene acceso a los escritorios virtuales a través de la red (ej. [VNC](https://es.wikipedia.org/wiki/VNC "VNC"), [RDP](https://es.wikipedia.org/wiki/Remote_Desktop_Protocol "Remote Desktop Protocol")). A usar [máquinas virtuales](https://es.wikipedia.org/wiki/M%C3%A1quina_virtual "Máquina virtual") para proporcionar y gestionar escritorios virtuales se le llama [infraestructura de escritorios virtuales](https://es.wikipedia.org/w/index.php?title=Infraestructura_de_escritorios_virtuales&action=edit&redlink=1 "Infraestructura de escritorios virtuales (aún no redactado)") o VDI (del inglés *Virtual Desktop Infrastructure*). [7](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-vdivmw-7)?La VDI aloja entornos de escritorio en un servidor centralizado y los distribuye a los usuarios finales según las necesidades.[7](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-vdivmw-7)?
* Basada en el cliente. El dispositivo cliente es el que proporciona los recursos necesarios para gestionar el entorno de escritorio y cada escritorio virtual se sincroniza con el servidor. Ejemplos de este tipo virtualización es lo que hace [Microsoft Enterprise Desktop Virtualization](https://es.wikipedia.org/w/index.php?title=Microsoft_Enterprise_Desktop_Virtualization&action=edit&redlink=1 "Microsoft Enterprise Desktop Virtualization (aún no redactado)") (MED-V), [VMware ACE](https://es.wikipedia.org/w/index.php?title=VMware_ACE&action=edit&redlink=1 "VMware ACE (aún no redactado)") y [SolidIce](https://es.wikipedia.org/w/index.php?title=SolidIce&action=edit&redlink=1 "SolidIce (aún no redactado)").
* [Virtualización de aplicaciones](https://es.wikipedia.org/w/index.php?title=Virtualizaci%C3%B3n_de_aplicaciones&action=edit&redlink=1 "Virtualización de aplicaciones (aún no redactado)"). Consiste en usar aplicaciones que aparentemente se ejecutan en local.[8](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-8)? Se pueden implementar por ejemplo:[9](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-9)?[4](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-ionos-4)?
* Con aplicaciones remotas. Las aplicaciones se ejecutan en un servidor remoto y el cliente se conecta a ellas a través de protocolos de visualización como [VNC](https://es.wikipedia.org/wiki/VNC "VNC") o [RDP](https://es.wikipedia.org/wiki/Remote_Desktop_Protocol "Remote Desktop Protocol").
* [Streaming de aplicaciones](https://es.wikipedia.org/w/index.php?title=Streaming_de_aplicaciones&action=edit&redlink=1 "Streaming de aplicaciones (aún no redactado)"). Las aplicaciones se ejecutan en local pero ciertos componentes se descargan de forma que es posible funcionar sin tener conexión a la red. De esta forma solo las partes esenciales del código de una aplicación deben instalarse en la computadora. Mientras el usuario final realiza acciones en la aplicación, el código y los archivos necesarios se entregan a través de la red cuando y como se requieren. De esta forma se permite ejecutar los programas en entornos aislados y distribuirlos en diferentes sistemas sin que sea necesario realizar cambios en el sistema local. Esto permite proteger el sistema operativo subyacente de código malicioso. Ejemplo de sistemas para proporcionar este tipo de servicios: [VMware ThinApp](https://es.wikipedia.org/wiki/VMware_ThinApp "VMware ThinApp"), [Microsoft Application Virtualization](https://es.wikipedia.org/wiki/Microsoft_Application_Virtualization "Microsoft Application Virtualization") y [XenApp](https://es.wikipedia.org/w/index.php?title=XenApp&action=edit&redlink=1 "XenApp (aún no redactado)") (Citrix).
* [Virtualización de datos](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n_de_datos "Virtualización de datos"). Consiste en integrar datos de fuentes dispersas, en distintas localizaciones y formatos, sin replicar los datos, para construir una capa de datos virtual que facilita la provisión de servicios de datos unificados para dar soporte a múltiples aplicaciones y usuarios. Para ello proporciona una capa de abstracción y una capa de servicios de datos.
## Virtualización de plataforma
Esta involucra la simulación de máquinas virtuales. La virtualización de plataforma se lleva a cabo en una plataforma de hardware mediante un software "host" (en castellano “anfitrión”), que es un programa de control que simula un entorno computacional (máquina virtual) para su software "guest" (en castellano "huésped"). Este software “huésped”, que generalmente es un sistema operativo completo, se ejecuta como si estuviera instalado en una plataforma de hardware autónoma. Típicamente muchas máquinas virtuales se simulan en una máquina física dada. Para que el sistema operativo “huésped” funcione, la simulación debe ser lo suficientemente grande para soportar todas las interfaces externas de los sistemas huéspedes, las cuales pueden incluir (dependiendo del tipo de virtualización) los drivers de hardware.
### Tipos de Virtualización de plataforma


### Virtualización completa
La máquina virtual simula un hardware suficiente para permitir un sistema operativo “huésped” sin modificar (uno diseñado para la misma CPU) para ejecutarlo de forma aislada. Típicamente, muchas instancias pueden ejecutarse al mismo tiempo.
### Virtualización parcial
“Address Space Virtualization”. La máquina virtual simula múltiples instancias de gran parte del entorno subyacente del hardware, particularmente los espacios de direcciones. Tal entorno acepta compartir recursos y alojar procesos, pero no permite instancias separadas de sistemas operativos “huésped”. Aunque no se contempla dentro de la categoría de máquina virtual, históricamente significó un importante acercamiento, y lo usaron en sistemas como CTSS, el experimental IBM M44/44X; y OS/VS1, OS/VS2 y MVS.
### Virtualización por S.O o Semi-parcial
Virtualizar significa instalar un sistema operativo dentro de otro al que se le llama anfitrión (HOST), mediante el uso de una máquina virtual. Frecuentemente denominada virtualización compartida del Sistema Operativo o virtualización del SO, la virtualización del Sistema Operativo virtualiza servidores en la capa del sistema operativo (kernel). Este método de virtualización crea particiones aisladas o entornos virtuales (VEs) en un único servidor físico e instancia de SO para así maximizar los esfuerzos de administración del hardware, software y centro de datos.
La Virtualización de Hypervisor tiene una capa base (generalmente un kernel, Linux que se muestra aquí como un hypervisor o SO estándar, lo mismo que [Windows Server 2008 R2](https://es.wikipedia.org/wiki/Windows_Server_2008_R2 "Windows Server 2008 R2") Hyper-V) que se carga directamente en el servidor base. Para asignar hardware y recursos a las máquinas virtuales (VMs), es recomendable que todo el hardware del servidor esté virtualizado. La siguiente capa superior muestra cada chip, placa, etc., que debe virtualizarse para que pueda asignarse a las VMs. Una vez en la VM, hay una copia completa de un sistema operativo y finalmente la aplicación o carga de trabajo.
La Virtualización de SO mejora el rendimiento, la gestión y la eficiencia. En su base reside un sistema operativo anfitrión estándar, como Parallels Virtuozzo, que incluye Windows y un sistema con núcleo Linux. A continuación encontramos la capa de virtualización, con un sistema de archivos propietario y una capa de abstracción de servicio de kernel que garantiza el aislamiento y seguridad de los recursos entre distintos contenedores. La capa de virtualización hace que cada uno de los contenedores aparezca como servidor autónomo. Finalmente, el contenedor aloja la aplicación o carga de trabajo.

# Virtualización de servidores
En O.S. Group brindamos asesoría en la planeación, implementación, administración y soporte en la virtualización de servidores con hipervisores como VMware, Hyper-V o Proxmox Virtual Environment de este ultimo cabe mencionar que somos partners en Colombia.
## Qué es la virtualización de servidores
La virtualización de servidores es el aprovechamiento de un equipo físico con grandes recursos de disco, memoria y procesamiento (CPU) para crear diferentes contenedores con sistemas aislados. En la nube se conocen como servidores privados virtuales, pero también se conocen como *huéspedes, instancias, contenedores o emulaciones*.

Hay tres enfoques reconocidos en la virtualización de servidores, donde se destacan: la máquina virtual modelo, el modelo de máquina paravirtualizado, y virtualización en el sistema operativo (OS capa).
Las máquinas virtuales se basan en el paradigma maestro/esclavo. Cada invitado se ejecuta en una imitación virtual de la capa de hardware. Este enfoque permite que el sistema operativo invitado *pueda correr sin modificaciones*.
También permite al administrador crear clientes que a su vez, utilizan diferentes sistemas operativos. El cliente no tiene conocimiento del sistema operativo del servidor, ya que no es consciente de que no se está ejecutando en el hardware real. Cuando lo hace, sin embargo, requieren recursos informáticos reales desde el host – por lo que utiliza un hipervisor para coordinar instrucciones con la CPU.
# Conceptos similares
La [simulación](https://es.wikipedia.org/wiki/Simulador "Simulador") consiste en reproducir completamente un sistema a través de un software. Por ejemplo, se recurre a los simuladores cuando se quiere compilar un programa creado para un sistema operativo concreto en otro sistema diferente. Por ejemplo el simulador de iPhone en XCode permite, entre otras cosas, probar el diseño web móvil en un ordenador.[4](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-ionos-4)?
La [emulación](https://es.wikipedia.org/wiki/Emulador "Emulador") persigue conseguir que el sistema reproducido consiga los mismos resultados que su equivalente original.[4](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-ionos-4)? Por ejemplo los emuladores de videoconsolas son un tipo de emuladores diseñados para emular una o varias videoconsolas y así poder jugar un videojuego diseñado para ser jugado en ésta(s).
Por otro lado existen software que crean una capa de compatibilidad para remediar los posibles conflictos entre diferentes componentes de software y hardware. Estas soluciones no reproducen un sistema completo, sino solo una parte, por ejemplo, una interfaz. Ejemplos de este tipo de software son [Wine](https://es.wikipedia.org/wiki/Wine "Wine") y [Cygwin](https://es.wikipedia.org/wiki/Cygwin "Cygwin").[4](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n#cite_note-ionos-4)?
# Enlaces de interés
* Virtualización de servidores, OsGroup, [https://www.osgroup.co/virtualizacion-de-servidores/](https://www.osgroup.co/virtualizacion-de-servidores/)
* Virtualización, Wikipedia, [https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n](https://es.wikipedia.org/wiki/Virtualizaci%C3%B3n)
sr_labs Admin Oct 11, 2022
sr_labs Admin Oct 30, 2023