Introducción a la Virtualización con KVM - libvirt

Resumen de una línea

KVM es un hipervisor que virtualiza máquinas completas (con SO propio) a nivel kernel Linux; libvirt es la API para gestionarlas; virt-manager proporciona interfaz gráfica.

Información

Concepto: ¿Qué es Virtualización?

Virtualización = Software imita características de hardware → sistema informático virtual

Comparación: Contenedores vs Máquinas Virtuales

Aspecto Contenedores VMs

Kernel Compartido Propio (completo) Sistema Operativo Ninguno (librería compartida) Completo (Ubuntu, Windows, etc.) Arranque Milisegundos Minutos Tamaño MB GB Aislamiento Procesos Completo Performance Nativo -5-10% overhead Overhead Mínimo Significativo Uso típico Aplicaciones Sistemas completos

Casos de Uso de Virtualización

✅ Aislamiento de servicios
✅ Laboratorio de pruebas
✅ Emulación de arquitecturas (ARM en x86)
✅ Clústeres y sistemas distribuidos
✅ Herramienta de aprendizaje (sin hardware)
✅ Consolidación de servidores
✅ Alta disponibilidad y recuperación
✅ Software heredado (legacy)

Ventajas

💰 Ahorro económico (menos hardware)
🔒 Seguridad (aislamiento)
⚙️ Mejor aprovechamiento de recursos
🚀 Migración en vivo (Live Migration)
📉 Menor consumo energético
📈 Escalabilidad

Desventajas

❌ Dependencia de un servidor físico
⚡ Sobrecarga de rendimiento (~5-10%)
🔧 Complejidad en configuración
🎓 Curva de aprendizaje pronunciada

Conceptos Clave

Host/Anfitrión

Sistema operativo que ejecuta el hipervisor (Linux en este caso)

Guest/Invitado/Huésped

Sistema operativo virtualizado (Ubuntu, Windows, etc.)

Hipervisor

Software de virtualización (KVM en este caso)

Tipos de Virtualización

1. Virtualización Completa (Full Virtualization)

Guest OS: Windows
  ↓
Hipervisor: KVM
  ↓
Host OS: Linux
  ↓
Hardware: CPU + RAM
  • Guest no sabe que está virtualizado
  • Overhead de emulación
  • Ejemplo: KVM, VMware, Hyper-V

2. Para-Virtualización

Guest OS: Optimizado para paravirtual
  ↓
Hipervisor: Xen
  ↓
Host OS: Linux
  • Guest conoce que está virtualizado
  • Menos overhead
  • Ejemplo: Xen

3. Virtualización a Nivel SO (Contenedores)

Aplicación
  ↓
Contenedor (namespaces, cgroups)
  ↓
Kernel Linux (compartido)
  • Ejemplo: Docker, Podman

Tecnologías Hardware

Intel VT-x:   Extensiones de virtualización Intel
AMD-V:        Extensiones de virtualización AMD
IOMMU:        Entrada/Salida virtualizada

Necesarios para buen rendimiento. La mayoría de CPUs modernas los incluyen.

QEMU/KVM Stack

QEMU

- Emulador de sistemas completos
- Puede emular cualquier arquitectura
- Sin KVM: 100% software (lento)

KVM (Kernel Virtual Machine)

- Hipervisor en el kernel de Linux
- Acelera QEMU usando hardware (Intel VT-x, AMD-V)
- QEMU + KVM = Rendimiento cercano a nativo

libvirt

- Biblioteca de abstracción
- API común para distintos hipervisores (KVM, Xen, VMware)
- Facilita gestión de máquinas virtuales

virt-manager

- Interfaz gráfica para libvirt
- Simplifica creación y gestión de VMs

Stack Completo

┌─────────────────────────────────────┐
│ virt-manager (GUI)                   │
├─────────────────────────────────────┤
│ libvirt (API)                        │
├─────────────────────────────────────┤
│ QEMU + KVM (Virtualización)          │
├─────────────────────────────────────┤
│ Hardware (CPU VT-x/AMD-V)            │
└─────────────────────────────────────┘

Herramientas de Gestión

Interfaz Gráfica: virt-manager

Instalación y Configuración de virt-manager proporciona interfaz gráfica intuitiva para crear y gestionar máquinas virtuales. Ideal para:

  • Principiantes (punto-and-click)
  • Administración visual
  • Laboratorios educativos
  • Testing ad-hoc

Cada acción GUI se traduce a operaciones libvirt subyacentes.

Automatización: Vagrant (Infrastructure as Code)

Vagrant es herramienta declarativa que define máquinas virtuales en código (Vagrantfile). Ideal para:

  • Reproducibilidad: Mismo Vagrantfile = mismo entorno siempre
  • Equipos: Código compartible en Git, setup automático
  • Automatización: Testing, CI/CD, provisioning repetitivo
  • Escalabilidad: Múltiples VMs definidas en un archivo

Comparativa:

Aspectovirt-managerVagrant
InterfazGUI visualCLI + Código (Vagrantfile)
ReproducibilidadManual, propensa a erroresAutomática, garantizada
VersionadoNo aplicableSí (Git)
EquipoSetup manual para cada miembroSetup automático (vagrant up)
AprendizajeRápidoMedio
Batch operationsNoSí (múltiples VMs)

Recomendación: Usar virt-manager para exploración inicial y administración visual. Usar Vagrant para entornos de equipo, testing y producción-like.

Ver también:

Relaciones

Conecta con

Diferencia con

  • Docker — Virtualización completa vs ligera
  • Podman — Contenedores vs máquinas virtuales

Parte de

  • Soluciones de virtualización en infraestructura

Próximo Paso

Con conceptos claros, pasar a Instalación y Configuración de virt-manager.

Fuentes