Virsh è un tool da linea di comando che consente di gestire le macchine virtuali nell’ambiente di emulazione kvm.
virsh sarà disponibile una volta installato
apt install libvirt-client
o
apt-get install libvirt-bin
Molti i comandi che virsh mette a disposizione
# virsh list
Il comando fornisce l’elenco delle virtual machine in esecuzione o in pausa:
E’ possibile anche accedere al terminale virsh in questo caso il comando precedente verrà eseguito semplicemente digitando list. Per accedere al terminale si digita virsh
virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
Ecco la listade delle virtual machine in esecuzione o in pausa:
virsh # list
Id Name State
----------------------------------------------------VMlist
2 centos59_165 running
5 Debian_74_wheezy running
6 Lub1404 running
8 Ubuntu12041S-2 running
9 Windows7 running
12 u1404-test paused
Possiamo visualizzare i pools a disposizione con
:virsh pool-list
Name State Autostart
-------------------------------------------
default active yes
VM-libvirt active yes
Per visualizzare tutte le vm usare
virsh list --all
per installare virsh
sudo apt-get install libvirt-bin
Per connettersi ad un ipervisore remoto
virsh -c qemu+ssh://maurizio@192.168.1.140/system
Ridimensionare una macchina virtuale con virsh
Ad esempio per ridimesionare il disco di una VM windows 7 visualizzare dapprima le informazioni del disco da ridimensionare con virsh vol-info
# virsh vol-info /media/VM/libvirt/images/W7-64b-ETH.img
Name: W7-64b-ETH.img
Type: file
Capacity: 24.00 GiB
Allocation: 24.00 GiB
Quindi ridimensioniamo con
# virsh vol-resize /media/VM/libvirt/images/W7-64b-ETH.img 30G --allocate
Size of volume 'W7-64b-ETH.img' successfully changed to 30G
se siamo dentro virsh possiamo controllare le nuove dimensioni con vol-info:
virsh # vol-info /media/VM/libvirt/images/W7-64b-ETH.img
Name: W7-64b-ETH.img
Type: file
Capacity: 30.00 GiB
Allocation: 30.00 GiB
Avviamo la macchina virtuale W7-64b-ETH.img con virsh start
: virsh start W7
Domain W7 started
Gestire una machina virtuale
Per fermare una macchina Virtuale si può utilizzare un comando del tipo
virsh --connect qemu:///system shutdown NomeVirtualMachine
Modificare il file di configurazione .xml di una macchina virtuale
La configurazione della macchine virtuali è conservata in file .xml in
/etc/libvirt/qemu
la struttura del file è del tipo :
<domain type='kvm'>
<name>debian_DMZ</name>
<uuid>b9f962c3-4031-4d31-b41d-b3aed75e693a</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>
<boot dev='hd'/>
</os>
<features>
...
Le modifiche possono essere apportate utilizzando il comando
virsh edit [Virtual-machine]
per l’esempio soprariportato virsh edit debian_DMZ
Il file .xml non può essere digitato direttamente perchè autogenerato.
Se si tenta la digitazione diretta con comando del tipo nano debian_DMZ si ottiene il warning che segue.
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit debian_DMZ
or other application using the libvirt API.
<domain type='kvm'>
<name>debian_DMZ</name>
<uuid>b9f962c3-4031-4d31-b41d-b3aed75e693a</uuid>
...
Macchine Ubuntu/Debian Installare acpid
Perchè l’arresto avvenga correttamente è necessario che sia installato acpid. Diversamente l’arresto sarà brutale come quando si toglie l’alimentazione con conseguenze che possono portare alla perdita di dati.
Una volta arrestata la VM può essere clonata ad esempio con
virt-clone --connect=qemu:///system -o CurrentVM -n NewVM -f /percorso_VMs/NewVM.gcow2
Se si clona una VM per evitare problemi è necessario procedere anche alla rinomina del host modificando i files hosts e hostaname
sudo vim /etc/hosts
sudo vim /etc/hostname
Altri comandi
virsh start NomeVirtualMachine
virsh reboot NomeVM
virsh shutdown NomeVM
virsh suspend NomeVM
virsh resume NomeVM
per visualizzare i dettagli di una VM
virsh dumpxml NomeVM
per reimportare i dati di una VM
virsh define Nome VM
cancellare una macchina virtuale
virsh destroy Nome VM
virsh undefine NomeVM
Risorse: