virsh è l'interfaccia o comando per la gestione delle macchine virtuali basate sull'hypervisor KVM. Sull'interfaccia virsh le macchine virtuali sono identificate dai loro nomi di dominio, quindi virsh viene generalmente utilizzato per elencare i domini correnti, per creare, mettere in pausa e spegnere i domini. Virsh è soggetto a GNU Lesser General Public License e supporta Xen, QEmu, KVM, LXC, OpenVZ, VirtualBox e VMware ESX.
In questo tutorial, discutiamo gli esempi pratici del comando virsh:
Esempio 1 :Ottieni la versione KVM installata sul computer host.
# virsh version Compiled against library: libvir 0.9.4 Using library: libvir 0.9.4 Using API: QEMU 0.9.4 Running hypervisor: QEMU 0.12.1
Esempio 2 :Ottieni informazioni sulla memoria dell'hypervisor (host) KVM.
# virsh nodememstats total : 65979984 kB free : 44783040 kB buffers: 604388 kB cached : 16473328 kB
Esempio 3 :Ottieni informazioni sulla CPU dell'hypervisor KVM.
# virsh nodecpustats user: 122779270000000 system: 1304262720000000 idle: 470011564690000000 iowait: 110371800000000
Esempio 4 :Ottieni un numero di macchine virtuali Guest indipendentemente dallo stato come esecuzione, salvataggio, spegnimento, ecc.
# virsh list --all Id Name State ---------------------------------- 3 test running
Esempio 5 :ottieni tutte le reti disponibili per l'hypervisor KVM.
# virsh net-list Name State Autostart ----------------------------------------- default active yes
Esempio 6 :Ottieni informazioni sull'hardware di una macchina guest KVM.
Sintassi:
# virsh dominfo BaseMachine
Esempio:
# virsh dominfo test Id: 3 Name: test UUID: 9ae96029-6c3d-8bd1-6e19-926183f89074 OS Type: hvm State: running CPU(s): 4 CPU time: 26862.0s Max memory: 4194304 kB Used memory: 4194304 kB Persistent: yes Autostart: disable Managed save: no
Esempio 7 :Arresta la macchina virtuale.
# virsh shutdown machine_name
Esempio 8 :riavvia la macchina virtuale.
# virsh reboot machine_name
Esempio 9 :Forza o cancella la macchina.
# virsh destroy machine_name
Esempio 10 :avvia la macchina virtuale.
# virsh start machine_name
Esempio 11 :Connetti a una macchina virtuale specifica usando virt-viewer.
sintassi:
# virt-viewer -c qemu:///system machine_name
Esempio:
# virt-viewer -c qemu:///system test
Esempio 12 :crea una nuova macchina virtuale utilizzando virt-install.
Supponiamo di voler installare Centos 6.X su 10 GB di spazio, quindi creare prima un file img usando il comando seguente:
# dd if=/dev/zero of=/var/lib/libvirt/images/centos-linux.img bs=1M count=10240
quindi esegui il comando virt-install:
# virt-install --virt-type kvm --name CentOS-Linux --ram 2048 --vcpus=2 --disk path=/var/lib/libvirt/images/centos-linux.img --network bridge=br0 --graphics vnc --cdrom /root/CentOS-6.2-x86_64-bin-DVD1.iso --os-variant=RHEL6
La schermata sottostante apparirà quando eseguiamo il comando precedente:
Esempio 13 :migrazione in tempo reale della macchina virtuale da un hypervisor all'altro utilizzando il comando virsh.
Requisiti di base della migrazione in tempo reale:
- L'immagine guest deve trovarsi su uno storage condiviso e deve essere accessibile tramite iSCSI, NFS, GFS2 o Fibre Channel.
- Lo storage condiviso deve essere montato sullo stesso percorso su entrambi gli host.
- Entrambi i guest devono eseguire la stessa versione di KVM.
- Entrambi i guest devono avere la stessa configurazione di rete e configurazione bridging (i loro IP devono essere diversi)
# virsh migrate --live machine_name qemu+ssh://destination_server/system