Dimarts, març 10, 2026
VIRTUALITZACIÓ

Crear i clonar màquines virtuals amb KVM i virt-manager

KVM (Kernel-based Virtual Machine) i virt-manager (Virtual Machine Manager) formen un conjunt sòlid i madur per gestionar màquines virtuals en entorns Linux. És una solució estable, ben integrada en el sistema i prou flexible per al treball diari, tant si administres servidors com si desenvolupes en local. Però tot i que la instal·lació és senzilla, fer-la anar bé implica conèixer detalls que no sempre estan documentats o són fàcils de trobar.

Abans de començar: comprovar que KVM està disponible i actiu

Primer, assegura’t que el teu equip té suport per a virtualització per maquinari (Intel VT-x o AMD-V) i que està activat a la BIOS/UEFI. En consola:

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

Si obtens 0, no està disponible o no està activat. Si és més gran que zero, estàs llest.

Comprova que el mòdul kvm està carregat:

lsmod | grep kvm

I que tens l’entorn mínim instal·lat:

sudo apt install qemu-kvm libvirt-daemon-system virt-manager bridge-utils

En distribucions com Fedora o Arch, els paquets tenen noms lleugerament diferents (qemu-full, virt-viewer, etc.), però el principi és el mateix.

Crear una màquina virtual des de virt-manager

Llences virt-manager, obres una nova màquina virtual, selecciones una ISO i en principi tot sembla bastant directe. Però hi ha punts concrets on convé prendre decisions diferents de les predeterminades.

1. Assignació de CPU i RAM

Virt-manager deixa seleccionar el número de CPUs i la quantitat de memòria. Aquí convé saber:

  1. CPU topology: fes servir el botó “CPU” en el resum de maquinari per configurar sockets/cores/threads. Això és rellevant si emules entorns amb programari que detecta la topologia del processador.
  2. Host-passthrough vs emulated CPU: A la pestaña “CPU”, tria host-passthrough si vas a virtualitzar una màquina sensible al rendiment (compiladors, contenidors, proves amb nested virtualization). Això exposa directament les instruccions del host al convidat. En entorns de producció pot tenir implicacions de seguretat, però per a desenvolupament pot ser la millor opció.

2. Emmagatzematge: format del disc

L’assistent crea un disc en format .qcow2 per defecte. Això està bé per a la majoria d’usos perquè permet snapshots i creixement dinàmic, però:

  1. Si necessites rendiment brut (bases de dades, compilacions pesades), fes servir .raw i, si pots, col·loca’l en una partició dedicada o disc separat.
  2. Compte amb qcow2 sobre LVM o ZFS: hi ha capes de sobrecàrrega que poden degradar el rendiment si no estan ben ajustades.

En crear la màquina, pots marcar “personalitzar configuració abans d’instal·lar” i després anar a la secció de discos per canviar el tipus o l’emmagatzematge.

Xarxes: triar entre NAT, bridge i macvtap

Aquí és on moltes persones perden temps o acaben amb configuracions confuses.

Opció 1: NAT (predeterminada)

  1. Bo per a la majoria d’ escriptoris o entorns tancats.
  2. El convidat pot sortir a Internet, però no és accessible des de fora directament.
  3. No requereix privilegis ni configuració addicional.

Opció 2: Bridge

  1. Recomanat si necessites que la VM tingui una IP a la xarxa local, com una màquina més.
  2. És l’opció correcta si vas a fer servidors o proves de xarxa entre VMs.

Per a configurar un bridge en una màquina host amb systemd-networkd:

# /etc/systemd/network/bridge-br0.netdev
[NetDev]
Name=br0
Kind=bridge
# /etc/systemd/network/br0.network
[Match]
Name=br0
 

[Network]
DHCP=yes

I a la interfície real (per exemple enp3s0):

# /etc/systemd/network/enp3s0.network
[Match]
Name=enp3s0


[Network]
Bridge=br0

Després reinicies systemd-networkd. Pots afegir br0 des de virt-manager com a xarxa externa bridge.

Opció 3: macvtap

  1. Pot ser més ràpid que bridge, però no permet comunicació entre host i convidat, cosa que el fa inadequat per a moltes situacions de desenvolupament.
  2. Útil per a proves aïllades o si només necessites trànsit sortint.

Fer servir volums i pools d’ emmagatzematge de forma controlada

Per defecte, virt-manager col·loca els discos en /var/lib/libvirt/images/. Això funciona, però:

  1. Si tens un disc a banda, SSD, RAID o LVM, convé crear un pool personalitzat.
  2. Des de virt-manager: Veure > Detalls del host > Emmagatzematge > “+” > Tipus: “dir”, i aquí apuntes a /mnt/vms o el lloc desitjat.

Això permet mantenir discos separats del sistema i organitzar-los amb nom, mida i tipus des de la interfície.

Clonar una màquina virtual no és només copiar arxius

Aquí convé aclarir alguna cosa: clonar a mà una VM no és només copiar l’arxiu .qcow2 i canviar el nom. Libvirt fa servir identificadors interns (UUID, MAC) i definir dos VMs amb la mateixa UUID pot generar conflictes.

La forma correcta de clonar una VM és:

virt-clone --original nombre-vm-origen \
           --name nombre-vm-nuevo \
           --auto-clone

Això crea un nou disc, nova configuració, i canvia MAC i UUID. Pots especificar discos i ubicacions amb –file i –file=/ruta/disco.qcow2.

Si fas servir snapshots o emmagatzematge compartit (per exemple, per a golden images), pots clonar només la definició i fer servir backing files.

Exemple amb backing file:

qemu-img create -f qcow2 -b /var/lib/libvirt/images/base.qcow2 \
  /var/lib/libvirt/images/vm-clonada.qcow2

I després a virt-manager defineixes una VM nova apuntant a aquest disc. Això estalvia espai, però qualsevol canvi afecta la cadena d’imatges. Útil per a entorns de laboratori.

Permisos, grups i accés al socket de libvirt

Una cosa que sovint dona problemes en instal·lacions fresques: l’usuari no pertany al grup libvirt, i no pot crear o gestionar VMs sense usar sudo.

Comprova i corregeix així:

groups $USER
sudo usermod -aG libvirt $USER
newgrp libvirt

També pot ser necessari afegir al grup kvm:

sudo usermod -aG kvm $USER

Això evita haver de llançar virt-manager com a root.

Instantànies (snapshots): quan convenen i quan no

Virt-manager permet fer snapshots de l’estat d’una VM. Funcionen bé amb discos qcow2, però:

  1. No tots els sistemes d’arxius dins de la VM toleren bé els congelaments abruptes si hi ha molta activitat.
  2. És millor fer snapshots amb la VM apagada si no tens agents de convidats (com qemu-guest-agent) configurats.

En producció no hauries de dependre de snapshots com a backup, però per a testing i proves ràpides són molt útils.

Ajustos que val la pena revisar abans de començar a fer servir una VM

  1. VirtIO drivers: Fes servir discos i targetes de xarxa virtio en lloc d’ IDE o e1000. Tenen molt millor rendiment.
  2. QEMU Guest Agent: Instal·la’l a la VM per a permetre apagat ordenat, informació del sistema, sincronització d’ hora, etc.
    1. A Debian/Ubuntu dins de la VM:
sudo apt instal·lar qemu-guest-agent

Després habilita el canal en virt-manager (a la pestanya “Agregar Hardware > Canal > qemu-ga”).

  • Display: SPICE vs VNC: SPICE pot ser millor opció, sobretot per copiar i pegar, resolució dinàmica, etc.
  • Boot order: Desactiva l’arrencada des de CD un cop instal·lada la VM, per a evitar errors quan treguis l’ISO.
  • Auto-start: Si vols que una VM arrenqui amb el sistema, marca-ho a la pestanya d’opcions d’arrencada.

Què fer si una VM no arrenca o apareix “Paused” en crear-la

Algunes causes comunes:

  1. Permisos de l’arxiu de disc (no accessible per libvirt-qemu)
  2. Problemes amb SELinux/AppArmor (revisa amb audit2why)
  3. Dispositius assignats no vàlids (per exemple, USBs que ja no hi són)
  4. Pool d’ emmagatzematge no actiu

Revisar els logs amb:

journalctl -xe | Grep Libvirt

O directament a:

/var/log/libvirt/qemu/nombre-vm.log

Checklist pràctica (resum per tasques)

Crear una VM amb bon rendiment:

  1. Fes servir VirtIO per a xarxa i disc
  2. host-passthrough per a CPU
  3. Disc .raw si busques rendiment, .qcow2 si necessites snapshots
  4. Instalar qemu-guest-agent en la VM

Clonar una VM correctament:

  1. Fer servir virt-clone o crear backing files amb qemu-img
  2. Canviar nom, MAC i UUID

Tenir xarxa amb IP real:

  1. Configurar bridge en el host
  2. Seleccionar bridge en virt-manager en crear la VM

Mantenir l’ordre als discos:

  1. Crear pools personalitzats a /mnt/vms, /data/libvirt, etc.

Evitar problemes de permisos:

  1. Usuari a grups libvirt i kvm
  2. Revisar etiquetes de SELinux si estàs a CentOS/Fedora

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *