Salta al contenuto principale

virt-clone: panoramica pratica delle funzioni principali

·539 parole·3 minuti
❯ lineadicomando.it
Autore
❯ lineadicomando.it
Specs, Bugs and Log Console

Contesto
#

virt-clone è uno strumento della suite virt-install che crea copie di VM gestite da libvirt, duplicando configurazione e dischi con opzioni granulari.

È utile quando vuoi preparare ambienti di test, template derivati o VM “gemelle” senza riscrivere la definizione XML a mano.


Prerequisiti
#

  • Host Linux con libvirt funzionante
  • Pacchetto virt-install installato (include virt-clone)
  • VM sorgente già definita
  • Spazio disco sufficiente per i volumi clonati

Verifica rapida:

virt-clone --version
virsh list --all

Differenza tra utente normale e sudo
#

Con virt-clone la differenza non è solo sui permessi, ma anche sul contesto libvirt raggiunto:

  • utente normale: può vedere/clonare VM della propria sessione (qemu:///session) se presenti
  • con sudo: opera di norma su VM di sistema (qemu:///system), incluse quelle in /var/lib/libvirt/images

Confronto pratico:

virsh uri
sudo virsh uri
virsh list --all
sudo virsh list --all

Esempio esplicito su daemon di sistema senza dipendere da sudo:

virt-clone --connect qemu:///system --original <vm_sorgente> --name <vm_clone>

Se lanci il comando da utente non abilitato a qemu:///system, l’errore tipico è legato ai permessi su socket libvirt o sui path disco di destinazione.


1. Sintassi minima
#

Clonazione base da VM sorgente a nuovo nome:

virt-clone --original <vm_sorgente> --name <vm_clone> --auto-clone

Esempio:

virt-clone --original debian-base --name debian-lab01 --auto-clone

Con --auto-clone, virt-clone genera automaticamente i path dei nuovi dischi partendo da quelli della VM sorgente.


2. Variante manuale: selezione e destinazione dischi con –file
#

Se vuoi controllo completo sui nuovi volumi, specifica i path manualmente con --file:

virt-clone \
  --original <vm_sorgente> \
  --name <vm_clone> \
  --file /var/lib/libvirt/images/<vm_clone>.qcow2

VM con più dischi:

virt-clone \
  --original app-prod \
  --name app-stage \
  --file /var/lib/libvirt/images/app-stage-root.qcow2 \
  --file /var/lib/libvirt/images/app-stage-data.qcow2

3. Rete e MAC automatici
#

In genere virt-clone rigenera automaticamente i MAC address per evitare conflitti L2.

Puoi verificare subito dopo il clone:

virsh domiflist <vm_clone>

Se operi in ambienti con policy rigide (DHCP reservation, ACL), valida sempre la nuova identità di rete prima dell’avvio.


4. Variante utile: clone senza avvio immediato
#

Dopo la clonazione la VM è definita ma non avviata. Questo consente di fare hardening o tuning prima del primo boot:

virsh dumpxml <vm_clone> > <vm_clone>.xml
virsh edit <vm_clone>

Controlli tipici pre-avvio:

  • CPU/RAM adeguate al nuovo ruolo
  • path disco e permessi corretti
  • rete collegata al bridge/network desiderato

5. Verifica post-clone
#

Controlla che sorgente e clone siano entrambe presenti:

virsh list --all

Confronta informazioni principali:

virsh dominfo <vm_sorgente>
virsh dominfo <vm_clone>

Avvia la VM clonata:

virsh start <vm_clone>

Verifica stato runtime:

virsh domstate <vm_clone>

6. Errori comuni
#

Nome già esistente

Se il nome target è già definito, scegli un nuovo --name o rimuovi la definizione non necessaria.

Path disco già occupato

Usa path univoci in --file per evitare overwrite o collisioni.

Spazio insufficiente

La clonazione fallisce durante la copia: controlla spazio disponibile su storage pool e filesystem host.

Permessi/SELinux

Se i dischi sono in path non standard, allinea ownership, context e policy prima dell’avvio.


Note operative
#

  • Esegui sempre il clone a VM sorgente spenta quando cerchi consistenza massima dei dati.
  • Per provisioning massivo valuta template cloud-init e immagini golden, invece di cloni manuali ripetuti.
  • Dopo il primo boot aggiorna hostname, SSH host keys e identificativi applicativi della VM clonata.

Riferimenti
#