virsh est l'interface ou la commande de gestion des machines virtuelles basées sur l'hyperviseur KVM. Sur l'interface virsh, les machines virtuelles sont identifiées par leurs noms de domaine, donc virsh est généralement utilisé pour répertorier les domaines actuels, pour créer, mettre en pause et arrêter des domaines. Virsh est sous licence publique générale limitée GNU et prend en charge Xen, QEmu, KVM, LXC, OpenVZ, VirtualBox et VMware ESX.
Dans ce tutoriel, nous discutons des exemples pratiques de la commande virsh :
Exemple 1 :Obtenez la version KVM installée sur la machine hôte.
# 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
Exemple 2 :Obtenir des informations sur la mémoire de l'hyperviseur KVM (hôte).
# virsh nodememstats total : 65979984 kB free : 44783040 kB buffers: 604388 kB cached : 16473328 kB
Exemple 3 :Obtenir des informations sur le processeur de l'hyperviseur KVM.
# virsh nodecpustats user: 122779270000000 system: 1304262720000000 idle: 470011564690000000 iowait: 110371800000000
Exemple 4 :Obtenez un certain nombre de machines virtuelles invitées, quel que soit leur état, comme l'exécution, la sauvegarde, l'arrêt, etc.
# virsh list --all Id Name State ---------------------------------- 3 test running
Exemple 5 :Obtenez tous les réseaux disponibles pour l'hyperviseur KVM.
# virsh net-list Name State Autostart ----------------------------------------- default active yes
Exemple 6 :Obtenir les informations matérielles d'une machine invitée KVM.
Syntaxe :
# virsh dominfo BaseMachine
Exemple :
# 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
Exemple 7 :Arrêtez la machine virtuelle.
# virsh shutdown machine_name
Exemple 8 :Redémarrez la machine virtuelle.
# virsh reboot machine_name
Exemple 9 :Forcez l'arrêt ou détruisez la machine.
# virsh destroy machine_name
Exemple 10 :Démarrez la machine virtuelle.
# virsh start machine_name
Exemple 11 :Connectez-vous à une machine virtuelle spécifique à l'aide de virt-viewer.
syntaxe :
# virt-viewer -c qemu:///system machine_name
Exemple :
# virt-viewer -c qemu:///system test
Exemple 12 :Créez une nouvelle machine virtuelle à l'aide de virt-install.
Supposons que je souhaite installer Centos 6.X sur un espace de 10 Go, puis créez d'abord un fichier img à l'aide de la commande ci-dessous :
# dd if=/dev/zero of=/var/lib/libvirt/images/centos-linux.img bs=1M count=10240
puis exécutez la commande 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
L'écran ci-dessous apparaîtra lorsque nous exécuterons la commande ci-dessus :
Exemple 13 :Migration en direct d'une machine virtuelle d'un hyperviseur à un autre à l'aide de la commande virsh.
Exigences de base de la migration dynamique :
- L'image de l'invité doit se trouver sur un stockage partagé et doit être accessible via iSCSI, NFS, GFS2 ou Fibre Channel.
- Le stockage partagé doit être monté sur le même chemin sur les deux hôtes.
- Les deux invités doivent exécuter la même version de KVM.
- Les deux invités doivent avoir la même configuration réseau et la même configuration de pontage (leurs adresses IP doivent être différentes)
# virsh migrate --live machine_name qemu+ssh://destination_server/system