Contesto #
virsh è la CLI di libvirt per amministrare VM, reti virtuali, storage pool e volumi.
Questa guida raccoglie le funzioni più utili in un unico punto, con esempi pronti per uso quotidiano.
Prerequisiti #
- Host Linux con
libvirtattivo - Privilegi adeguati (
rooto utente nel gruppolibvirt) - Hypervisor supportato (tipicamente KVM/QEMU)
Differenza tra utente normale e sudo #
Con virsh, il comportamento cambia in base a quale istanza libvirt stai raggiungendo:
- utente normale: spesso lavora su
qemu:///session(VM per-utente, isolate dal daemon di sistema) - con
sudo: tipicamente lavora suqemu:///system(VM globali gestite dal serviziolibvirtd/virtqemud)
Verifica pratica:
virsh uri
sudo virsh uriPer evitare ambiguità, specifica sempre l’URI:
virsh -c qemu:///system list --all
virsh -c qemu:///session list --allNota: anche con URI corretto, senza permessi adeguati potresti avere permission denied su socket libvirt o storage.
1. Connessione a libvirt e shell interattiva #
Connessione esplicita al daemon di sistema:
virsh -c qemu:///systemConnessione in sola lettura (utile per audit e troubleshooting):
virsh --readonly -c qemu:///systemvirsh può essere usato anche come shell interattiva con help integrato:
$ virsh
virsh # help
virsh # help list
virsh # help dominfo
virsh # quitIn shell puoi esplorare rapidamente i comandi disponibili e i dettagli di ciascuna funzione senza uscire dal terminale.
2. Inventario e stato delle VM #
Elenco VM (accese e spente):
virsh list --allDettagli di una VM:
virsh dominfo <vm_name>Stato corrente:
virsh domstate <vm_name>Interfacce di rete viste dalla VM:
virsh domiflist <vm_name>Dischi associati alla VM:
virsh domblklist <vm_name>3. Ciclo di vita: avvio, stop, riavvio #
Avvio:
virsh start <vm_name>Shutdown “pulito” (ACPI):
virsh shutdown <vm_name>Riavvio:
virsh reboot <vm_name>Spegnimento forzato (equivalente power-off):
virsh destroy <vm_name>Abilitare avvio automatico all’avvio host:
virsh autostart <vm_name>Sospendere e riprendere:
virsh suspend <vm_name>
virsh resume <vm_name>4. Configurazione VM (XML) #
Stampare la definizione XML:
virsh dumpxml <vm_name>Modifica diretta della definizione:
virsh edit <vm_name>Definire una VM da file XML:
virsh define <file.xml>Rimuovere definizione VM (senza cancellare i dischi):
virsh undefine <vm_name>5. Snapshot #
Elenco snapshot VM:
virsh snapshot-list <vm_name>Creazione snapshot con nome:
virsh snapshot-create-as <vm_name> pre-updateRollback a uno snapshot:
virsh snapshot-revert <vm_name> pre-updateEliminazione snapshot:
virsh snapshot-delete <vm_name> pre-update6. Storage pool e volumi #
Elenco pool:
virsh pool-list --allInformazioni su un pool:
virsh pool-info <pool_name>Elenco volumi del pool:
virsh vol-list <pool_name>Dettagli volume:
virsh vol-info <volume_name> --pool <pool_name>7. Reti virtuali #
Elenco reti libvirt:
virsh net-list --allDettagli rete:
virsh net-info <net_name>Avviare una rete e abilitarla al boot:
virsh net-start <net_name>
virsh net-autostart <net_name>Lease DHCP assegnati:
virsh net-dhcp-leases <net_name>8. Comandi utili lato host #
Versione libvirt/virsh:
virsh versionURI della connessione corrente:
virsh uriCapacita host/hypervisor:
virsh nodeinfo
virsh capabilitiesStatistiche aggregate delle VM:
virsh domstats --state-runningVerifica #
Controllo rapido che la connessione e i comandi principali siano operativi:
virsh -c qemu:///system list --all
virsh -c qemu:///system net-list --all
virsh -c qemu:///system pool-list --allSe i comandi rispondono senza errori, la base operativa di virsh è pronta.
Note operative #
- Usa
shutdownprima didestroyquando vuoi evitare possibili corruzioni. - Prima di
edit, salva un backup condumpxml > <vm_name>.xml. - In ambienti condivisi, preferisci
--readonlyper analisi e audit.