Skip to content

Kvm

This content is not available in your language yet.

10.1 Virtualización con KVM: Fundamentos y Operación en Linux

Sección titulada «10.1 Virtualización con KVM: Fundamentos y Operación en Linux»

La virtualización es un pilar fundamental en cualquier infraestructura moderna. Permite ejecutar múltiples sistemas operativos aislados sobre un mismo hardware físico, optimizando recursos y facilitando la gestión.

En el ecosistema Linux, KVM (Kernel-based Virtual Machine) es la solución estándar para virtualización de tipo 1 integrada en el propio kernel. Permite convertir un servidor Linux en un hypervisor completo, capaz de ejecutar máquinas virtuales con alto rendimiento y aislamiento.

Para un Sysadmin senior, dominar KVM implica poder construir entornos reproducibles, aislar cargas de trabajo críticas y desplegar infraestructura eficiente sin depender de soluciones propietarias.


Al finalizar este capítulo serás capaz de:

  • Comprender la arquitectura de KVM y su integración con el kernel.
  • Identificar los componentes clave del stack de virtualización.
  • Instalar y configurar KVM en un sistema Linux.
  • Crear y gestionar máquinas virtuales desde CLI.
  • Aplicar buenas prácticas en entornos de producción.

KVM es un módulo del kernel de Linux que permite transformar el sistema en un hypervisor tipo 1 (bare-metal).

Componentes clave:

  • kvm.ko → módulo principal
  • kvm-intel.ko / kvm-amd.ko → soporte de CPU
  • QEMU → emulación de hardware
  • libvirt → capa de gestión

KVM proporciona virtualización, pero la gestión se realiza mediante herramientas como libvirt y virsh.


  • El sistema huésped no sabe que está virtualizado.
  • Usa extensiones de CPU (Intel VT-x / AMD-V).
  • Mejora rendimiento mediante drivers optimizados (virtio).

Hardware
│
Kernel (KVM)
│
QEMU
│
libvirt
│
Herramientas (virsh, virt-manager)

Roles:

  • QEMU → ejecuta la VM
  • libvirt → gestión centralizada
  • virsh → CLI administrativa

Verificar soporte de virtualización:

Ventana de terminal
egrep -c '(vmx|svm)' /proc/cpuinfo

Resultado:

  • 0 → no soportado
  • >0 → soportado

  • archivos (.qcow2, .raw)
  • LVM
  • NFS / iSCSI

Formato recomendado:

  • qcow2 → flexible (snapshots, compresión)

Configurar un servidor Linux como hypervisor:

  • instalar KVM
  • crear una máquina virtual
  • arrancarla y comprobar su estado

Ventana de terminal
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virtinst

Ventana de terminal
systemctl status libvirtd
Ventana de terminal
lsmod | grep kvm

Ventana de terminal
sudo usermod -aG libvirt $USER

Aplicar cambios:

Ventana de terminal
newgrp libvirt

Ventana de terminal
wget https://releases.ubuntu.com/22.04/ubuntu-22.04.iso

Ventana de terminal
virt-install \
--name test-vm \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/test-vm.qcow2,size=10 \
--os-type linux \
--os-variant ubuntu22.04 \
--cdrom ubuntu-22.04.iso \
--network network=default \
--graphics none

  • –name → nombre VM
  • –ram → memoria
  • –vcpus → CPU
  • –disk → almacenamiento
  • –network → red virtual

Ventana de terminal
virsh list --all

Ventana de terminal
virsh start test-vm

Ventana de terminal
virsh shutdown test-vm

Ventana de terminal
virsh console test-vm

Salir:

Ctrl + ]

Id Name State
--------------------------------
1 test-vm running

KVM acceleration not available

-Causa:*

  • VT-x/AMD-V deshabilitado en BIOS

-Solución:*

activar en BIOS/UEFI.


Errores al usar virsh.

-Solución:*

Ventana de terminal
usermod -aG libvirt usuario

Ventana de terminal
systemctl restart libvirtd

Ventana de terminal
virsh net-list

Reiniciar red:

Ventana de terminal
virsh net-start default

Verificar ruta y permisos en:

/var/lib/libvirt/images/

Mejora rendimiento:

Ventana de terminal
--disk bus=virtio
--network model=virtio

  • sistema → disco principal
  • datos → volúmenes independientes

Permiten rollback rápido:

Ventana de terminal
virsh snapshot-create-as test-vm snap1

  • bridges para integración real
  • VLANs en entornos complejos

Integrar con:

  • Ansible
  • Terraform

  • aislar redes virtuales
  • limitar acceso a libvirt
  • usar SELinux/AppArmor

  • uso de CPU/RAM
  • I/O discos
  • latencias

  • copiar discos apagados
  • usar snapshots coherentes

Evitar saturar host:

  • CPU overcommit moderado
  • RAM con ballooning

Has aprendido a desplegar y gestionar virtualización con KVM, comprendiendo su arquitectura, instalación y operación en entornos Linux. Este conocimiento es la base para construir infraestructuras virtualizadas eficientes y escalables.

El siguiente paso es evolucionar hacia modelos más ligeros y portables:

➡️ 10.2 Containers — Virtualización a nivel de sistema operativo con Docker y tecnologías relacionadas.