Come posso spostare di host una VM?
Per chi è conosce VMware o VirtualBox resta decisamente spiazzato con KVM anche se usa l'intervaccia grafica "Virtual Machine Manager" che rendo tutto intuitivo e semplice come le altre due soluzioni.
Naturalmente stiamo parlando di una installazione desktop. Nelle installazioni "server farm" i tool di gestione prevedono questo ed altro.
E' possibile, ma dobbiamo procedere in modo più artigianale sia nell'aexport, sia nell'import. Ecco come fare.
Panoramica
Vogliamo trasferire-copiare la VM "VM-001" dal PC "MioPC1" a "MioPC2". I PC, in questo caso, per KVM sono gli Host.
Il trasferimento-copia lo vogliamo fare tramite una pendrive su cui copiare la VM.
Entrambi gli host sono con hardware uguale, e sono dotati dello stesso ambiente KVM+qemu, con console "Virtual Machine Manager" e Linux Mint 21 come OS.
Nota: KVM insieme a Qemu permettono, contemporaneamente, sia di virtualizzare, sia di emulare. In ogni caso se le nostre VM sono configurate per comunicare direttamente con hardware specifico connesso e/o integrato nell'host questo non viene migrato in nessun modo.
Pertanto la migrazioni delle VM è indicato per VM generiche o che fungono da "bolle software".
Esport
- Autentichiamoci nell'host "MioPC1" con un utente amministratore della virtualizzazione (=è nel gruppo "libvirt" o "libvirtd");
- assicurarsi che la VM da esportare sia stoppata;
- aprire un terminale (da tastiera CTRL+ALT+T);
- creiamo una directory dove mettere l'export della VM;
mkdir VM-001
cd VM-001
- estraiamo la definizione della VM con il comando
dumpxml vm_name > file_name.xml
virsh dumpxml VM-001 > VM-001.xml
- individuiamo e copiamo l'immagine della VM con il domando virsh domblklist vm_name
NB: normalmente servono i diritti di root per copia il file immagine
virsh domblklist VM-001
Target Source
--------------------------------------
vda /var/lib/libvirt/images/VM-001.qcow2
sda -
sudo cp /var/lib/libvirt/images/VM-001.qcow2 ./
- comprimiamo la directory per ottenere un file unico (e un po' più piccolo)
cd ..
zip -9 -r VM-001.zip VM-001
Il nostro file per l'esportazione pronto! Copiamolo su una pendrive o su un altro sistema per copiarlo sul "MioPC2".
Import
- Autentichiamoci nell'host "MioPC2" con un utente amministratore della virtualizzazione (=è nel gruppo "libvirt" o "libvirtd");
- copiamo il file VM-001.zip nella home o in una directory a piacimento ed estraiamolo. Otterremo la directory
VM-001
che contiene i fileVM-001.xml
eVM-001.qcow2
; - aprire un terminale (da tastiera CTRL+ALT+T);
- posizioniamoci nella directory
VM-001
cd VM-001
- copia il file immagine nello store di libvirt
sudo cp VM-001.qcow2 /var/lib/libvirt/images/
- importiamo la definizione della VM con il comando
virsh define file_name.xml
virsh define VM-001.xml
VM importata! Ora la possimo comodamente lanciare dalla console "Virtual Machine Manager" o da CLI con il comando virsh start VM-001
.
Note finali
Molti elementi, come i percorsi dei file, sono variabili che possiamo manipolare.
Un toccasana, soprattutto nell'importazione, è controllare ed eventualmente correggere l'xml .