Dissabte, febrer 14, 2026
VIRTUALITZACIÓ

Migrar una màquina física a virtual amb eines d’ imatge

Migrar un sistema Linux des d’una màquina física (bare metal) a una màquina virtual (P2V, physical-to-virtual) no és un procés nou, però continua sent una necessitat habitual en entorns de consolidació, modernització o contingència. La idea general sembla simple: clonar el sistema físic i arrencar-lo en un hipervisor. A la pràctica, hi ha molts matisos que afecten el resultat final.

Aquesta entrada se centra en un enfocament basat en imatge, és a dir, capturar el disc de la màquina física tal com està i muntar-lo com a disc virtual en una VM. És una opció directa, replicable i sense necessitat d’eines de tercers massa complexes. Però per a què funcioni de veritat —i no simplement generi una VM que no arrenca, arrenca lent o falla en muntar el root— hi ha decisions que convé entendre i prendre amb claredat.

Quan convé fer servir imatge i no migració “en calent”?

Primer, un punt de context. Hi ha moltes formes de fer un P2V: fent servir rsync amb chroot, fent servir eines específiques com virt-p2v, fent servir snapshots LVM, o fent una còpia de disc sencera.

L’ enfocament d’ imatge té avantatges quan:

  • La màquina física no es pot modificar (auditoria, programari delicat, etc.).
  • No es volen instal·lar eines addicionals a la font.
  • Es vol preservar el sistema exactament com està, incloent-hi particions, GRUB, etc.
  • Es fa la migració des d’ un entorn offline o amb connectivitat limitada.

Però també implica que anem a clonar tot, fins i tot configuracions de xarxa que no encaixaran bé en una VM, drivers innecessaris, i que potser necessitem editar la imatge abans o després de bootejar.

Eines clau

Les eines principals per a aquest enfocament són:

  • dd o partclone per a capturar la imatge.
  • ssh, nc o un disc extern per traslladar-la.
  • qemu-img per a convertir-la.
  • virt-manager, virsh, VBoxManage o el frontend del hipervisor que utilitzeu.
  • Un sistema live o de rescat (tipus SystemRescueCD o qualsevol ISO amb eines estàndard).

Per a efectes d’aquest exemple, farem servir dd, qemu-img, i KVM/QEMU com a destinació.

Pas 1: Preparar la màquina física per al clonat

Abans de clonar un disc convé:

  • Netejar logs, temporals i cachés si l’espai és una preocupació:
journalctl --vacuum-size= 100M
rm -rf /var/cache/*
  • apt clean # o yum/dnf segons el sistema
  • Apagar serveis que escriguin al disc si s’ha de clonar amb el sistema corrent. Això no és ideal, però es pot fer en alguns casos amb baix risc (servidors estàtics, appliances, etc.).
  • L’ideal: clonar des d’una sessió live, muntant el disc com a /dev/sdX.

En el cas d’ un disc únic típic:

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

Assegura’t d’identificar el disc complet (per exemple /dev/sda) i no només una partició.

Pas 2: Crear la imatge del disc

Opció bàsica amb dd:

dd if=/dev/sda bs=64K status=progress | gzip > /mnt/usb/imagen_sda.img.gz

Això crea una imatge comprimida. Es pot fer sobre xarxa amb ssh:

dd if=/dev/sda bs=64K status=progress | gzip | ssh usuari@host 'cat > /mnt/storage/imatge_sda.img.gz'

Alternativa amb partclone: més eficient si el sistema fa servir particions amb espai lliure significatiu (com ext4, xfs, etc.):

partclone.ext4 -c -s /dev/sda1 -o imagen_sda1.img

Però cal repetir-ho per partició, i reconstruir la taula de particions a mà si se’ n fan servir diverses. No sempre compensa.

Pas 3: Convertir la imatge al format de l’hipervisor

Un cop tens l’arxiu d’imatge (.img, .img.gz, etc.), converteix-lo a qcow2 (format de QEMU/KVM):

qemu-img convert -f raw -O qcow2 imatge_sda.img disc_virtual.qcow2

Si fas servir gzip, descomprimeix-lo primer:

gunzip imatge_sda.img.gz

Pots també convertir a VDI per a VirtualBox:

VBoxManage convertfromraw imatge_sda.img disc_virtual.vdi --format VDI

Pas 4: Crear una VM i fer servir el disc convertit

A virt-manager:

  • Crear una nova màquina.
  • Triar “Importar imatge de disc existent”.
  • Seleccionar disc_virtual.qcow2.
  • Establir el sistema operatiu manualment si no es detecta.
  • Assignar memòria, CPU, etc.
  • Ajustar el tipus de xipset i firmware (veure següent punt).

Detalls que poden donar problemes

Firmware i tipus d’ arrencada

La màquina original feia servir BIOS o UEFI? GPT o MBR?

Pots veure-ho així:

[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS"

I la taula de particions:

parted /dev/sda print | grep "Partition Table"

Això és crític. Si el disc era BIOS+MBR i crees una VM amb firmware UEFI, GRUB no arrencarà. Ajusta el firmware de la VM al tipus que correspon (es pot fer en virt-manager, pestanya “Detalls”, secció “Firmware”).

Drivers d’ emmagatzematge

Si el sistema físic feia servir drivers específics (per exemple, SATA en mode IDE), i la VM fa servir VirtIO, pot fallar en muntar el root. Pots forçar la inclusió del mòdul a l’initramfs abans de clonar:

echo virtio_blk >> /etc/initramfs-tools/modules  # Debian/Ubuntu
update-initramfs -u

O després, des d’ un entorn de rescat muntant el sistema:

mount /dev/vda1 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
echo virtio_blk >> /etc/initramfs-tools/modules
update-initramfs -u

Configuració de xarxa

La majoria de les vegades, la interfície de xarxa canvia de nom (d’enp0s3 a ens3, eth0, etc.). Ajusta /etc/network/interfaces o els arxius de Netplan o systemd-networkd segons el sistema. O simplement esborra la configuració i deixa que el sistema n’assigni dinàmicament una de nova.

A Debian:

rm /etc/udev/rules.d/70-persistent-net.rules

I revisar ip a després del primer boot per veure el nou nom.

Pas 5: Boot de prova i ajustos

Arrenca la VM. Si falla:

  • Arrenca amb una ISO live.
  • Munta el disc virtual i verifica GRUB, fstab, mòduls de kernel.

Verifica /etc/fstab: fa servir UUIDs correctes? Dispositius per nom (/dev/sdX) que han canviat?

Fes servir blkid per a revisar els UUIDs reals:

blkid /dev/vda1

Edita fstab si és necessari. També pots regenerar grub.cfg:

mount /dev/vda1 /mnt
chroot /mnt
update-grub

Pas 6 (opcional): Neteja post-migració

Després de confirmar que la VM funciona bé, pots:

  • Treure paquets de maquinari específic del servidor físic.
  • Instal·lar qemu-guest-agent per millorar la integració.
  • Reconfigurar noms de host si has de mantenir ambdues màquines actives.

Consideracions finals i errors comuns

Errors freqüents:

  • Clonar només particions, sense GRUB ni taula de particions.
  • No adaptar firmware (UEFI/BIOS).
  • Fer servir VirtIO sense suport a initramfs.
  • Fallades a la xarxa per canvi de noms.
  • Assumir que fstab o GRUB estan llestos per a la VM.

Sobre la mida de disc:
Si el disc físic té 1 TB però només 50 GB ocupats, l’arxiu .img serà d’1 TB llevat que utilitzis partclone o redueixis el disc primer. Considera fer servir gparted per a reduir la partició abans de clonar, si és possible.

Sobre els snapshots:
Un cop la VM funciona, considera fer un snapshot abans de fer canvis majors. Especialment útil en processos de migració gradual.

Aquest procés no reemplaça eines com virt-p2v en entorns integrats, però permet migrar sistemes antics, appliances mal documentats o equips sense agent sense dependre de res més que eines comunes. Funciona, i entendre què fa cada pas t’estalvia moltes hores davant errors que no expliquen res al bootejar.

Deixa un comentari

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