,

Virtualización de sistemas

domingo, marzo 15, 2026 q3it


¿Qué es la virtualización?
El término hace referencia a la abstracción de los recursos de una computadora, utilizándolos para crear una versión virtual de un sistema operativo, un dispositivo de almacenamiento u otros recursos de red. De tal forma que puedan cargarse de manera aislada.
 
Para entender la virtualización hay que tener claro dos conceptos importantes:  

Virtualización asistida por software
  • Es necesario tener un sistema operativo para usarse.
  • Soluciones: VMWare, Virtual Box, Parallels, etc.
Virtualización nativa (Bare-Metal)
  • No necesita un sistema operativo. Ya que un hipervisor permite la creación, ejecución y gestión de máquinas virtuales en una sola máquina física.
  • Utiliza acceso a hardware especifico. (Intel-VT o AMD-v).
  • Soluciones: XEN, Hyper-V, KVM, etc.
Ventajas
- Reutilización de hardware existente.
- Administración centralizada.
- Mejora en los procesos de copia de sistemas.
- Aislamiento.
- Migración en caliente de máquinas virtuales de un servidor a otro.
- Balanceo en el consumo de máquinas virtuales.
 
A continuación describiré algunos ejemplos de las aplicaciones de la virtualización. 
 
Cuando se creó el lenguaje JAVA el eslogan de dicho lenguaje era "Write Once, Run Anywhere" (WORA), que se traduce como "Escribe una vez, ejecuta en cualquier lugar". A diferencia de la mayoría de los lenguajes de programación, Java utiliza un tipo especial de código de maquina llamado “bytecode”, el cual utiliza un tipo especial de microprocesador. En la época que se implementó el lenguaje, no existía este microprocesador. Debido a esto se decidió emular el microprocesador mediante una maquina virtual. La Máquina Virtual de Java (JVM por sus siglas en inglés: Java Virtual Machine) no corre sobre el microprocesador, sino que es emulada por el microprocesador de la computadora. La JVM es la clave de la autonomía de los programas Java ya que se ejecutan independientes del SO y el hardware.
 
La JVM tiene la responsabilidad de interpretar el “bytecode” Java y trasformarlo a llamadas al
sistema, así el desarrollador o programador no debe de preocuparse por el sistema operativo o el
hardware del CPU ya que esto es irrelevante debido a que la JVM se encarga de la comunicación y
sincronización de ellos.
  
Microsoft, lanzó en el 2008 su sistema de virtualización, Microsoft Hyper-V (Viridian). Este permite ejecutar sobre su sistema operativo Windows Server 2008, varios sistemas operativos como si fuesen un simple programa más.

 

Gigantes de las Tl tales como Intel y AMD han estado trabajando en esta misma línea y han lanzado al mercado los productos Intel VT (Vanderpool) y AMD-V (Pacifica), los cuales implementan nuevas funcionalidades incluidas en los CPU para realizar virtualización asistida por hardware.

EMC es otra compañía que ofrece un conjunto de productos diseñados para ayudar a las organizaciones a administrar y configurar sus entornos virtuales. Enfocada a la virtualización de servidores adquirió y posteriormente subdividió VMware, herramienta que se ha consolidado con la integración de diversas soluciones. 
Actualmente virtualizar un solo ordenador físico es sólo el comienzo, pues se pueden construir infraestructuras virtuales completas (denominadas nubes que pueden ser públicas o privadas) a través de cientos de ordenadores físicos y dispositivos de almacenamiento con el uso de la plataforma de virtualización VMware vSphere. Otra de las soluciones Vmware es la denominada VMware's vCenter, la cual es una plataforma de gestión probada que brinda estrategias para gestionar los datacenter virtuales. Ofrece una plataforma integral para la optimización de procesos y flujos de trabajos críticos en los datacenter. Apple no se ha quedado al margen en esta nueva tendencia devenida en actualidad y ha admitido al VMware Fusion y Parallel la ejecución tanto de Mac OSX como de Windows en hardware Apple.
 

KVM (por sus siglas en inglés, Kernel-based Virtual Machine) es una solución de virtualización completa para Linux en hardware x86 que incluye extensiones de virtualización (Intel VT o AMD-V). Consta de un módulo de kernel cargable, kvm.ko, que proporciona la infraestructura de virtualización principal, y un módulo específico para cada procesador, kvm-intel.ko o kvm-amd.ko. KVM también requiere una versión modificada de QEMU, aunque se está trabajando para incorporar los cambios necesarios al repositorio principal.
 
Con KVM, se pueden ejecutar varias máquinas virtuales con imágenes de Linux o Windows sin modificar. Cada máquina virtual tiene hardware virtualizado privado: tarjeta de red, disco duro, adaptador gráfico, etc. El núcleo de KVM está incluido en la versión principal de Linux desde la versión 2.6.20. KVM es software de código abierto.


¿Qué es QEMU?
QEMU es un emulador de máquinas y virtualizador genérico open source. Cuando se utiliza como virtualizador, QEMU alcanza casi la performance nativa ya que ejecuta el código guest directamente en el CPU host.

QEMU aprovecha KVM cuando ejecuta una arquitectura guest que coincide con la arquitectura host. Por ejemplo, cuando se utiliza qemu-system-x86 sobre un procesador x86 compatible, se aprovecha la aceleración de KVM (beneficiando tanto al sistema guest como al host), ya que el código guest se ejecuta directamente en el host (sin traducción).

Ahora vamos a probar KMV sobre hardware nativo. Consultamos todas las características de la máquina y si tenemos la virtualización habilitada.
 
 
En la imagen anterior vemos que la CPU soporta la virtualización y en la segunda consulta nos da el número de núcleos.
 
Sabiendo que tenemos la virtualización activada, procedemos a la instalación de la herramienta.
 
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients virt-manager 
 
 
Libvirt es el servicio que se ejecuta en segundo plano y virt-manager es la interfaz gráfica para administrar las máquinas.
 
Una vez finalizada la instalación, configuramos los permisos. Su cuenta de usuario necesita acceso a las funciones de virtualización. 
 
sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER 
 
Añadimos el usuario actual a los grupos de libvert y KVM para que las máquinas virtuales puedan ejecutarse sin acceso de administrador.  
 
Tras añadir los grupos, cierre la sesión y vuelva a iniciarla. Los permisos no se aplican hasta que realice este paso.

Ahora verificamos el servicio. Comprobamos que el servicio libvert esté en ejecución y habilitado. 
 

La captura anterior nos muestra que el sistema de virtualización está listo.
 
A continuación, abrimos virt-manager. Al iniciar virt-manager, debería conectarse automáticamente a Qemu y KVM. Si la conexión aparece como activa, todo funciona correctamente. 
 
 
Ahora hacemos una prueba sencilla. Creamos una nueva máquina virtual usando un archivo ISO local. Cualquier ISO de Linux sirve para esta prueba. Virt-Manager suele detectar el sistema operativo automáticamente. 
 

Asignamos una cantidad razonable de memoria y núcleos de CPU. 
 
 
Mantenemos la configuración de almacenamiento predeterminada. 


QEMU utiliza archivos de disco virtual que son eficientes y fáciles de administrar. 
 
 
Una vez finalizada la configuración, iniciamos la máquina virtual. Si la máquina virtual arranca y muestra la pantalla del instalador, la configuración de QEMU y KVM está completa y funciona correctamente.
 
 
En este punto, tienes una base sólida para la virtualización. QEMU con KVM es rápido, fiable y se usa ampliamente tanto en ordenadores de escritorio como en servidores. Las máquinas virtuales Linux funcionan con gran fluidez e incluso con cargas de trabajo pesadas. Todo lo que he instalado es de código abierto, cuenta con soporte oficial y está totalmente integrado con Linux. Sin trucos, sin soluciones alternativas, sin scripts frágiles. Desde aquí, puedes pasar a configuraciones más avanzadas como máquinas virtuales de Windows, carpetas compartidas, paso de USB y optimización del rendimiento. Pero el sistema base que se ha creado es lo más importante. 👋😉