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
- Fuente: Curso KVM Introducción - Unidad 1
- URL Plataforma: https://plataforma.josedomingo.org/pledin/cursos/kvm1/
- URL GitHub: https://github.com/josedom24/curso_kvm_ow
- Líneas de contenido: 400+
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:
| Aspecto | virt-manager | Vagrant |
|---|---|---|
| Interfaz | GUI visual | CLI + Código (Vagrantfile) |
| Reproducibilidad | Manual, propensa a errores | Automática, garantizada |
| Versionado | No aplicable | Sí (Git) |
| Equipo | Setup manual para cada miembro | Setup automático (vagrant up) |
| Aprendizaje | Rápido | Medio |
| Batch operations | No | Sí (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:
- Vagrant - Introducción y Conceptos Fundamentales
- Vagrant + libvirt - Configuración Completa de Networking y Almacenamiento
Relaciones
Conecta con
- KVM (Kernel-based Virtual Machine) — Hipervisor basado en Linux
- Contenedores — Alternativa ligera a virtualización
- Proxmox VE: Plataforma de Virtualización — Plataforma que usa KVM
Diferencia con
Parte de
- Soluciones de virtualización en infraestructura
Próximo Paso
Con conceptos claros, pasar a Instalación y Configuración de virt-manager.