virsh est la CLI disponible en espace utilisateur dialoguant avec le module KVM et permettant de gérer les machines virtuelles notamment:
La CLI virsh dialogue avec le service de virtualisation. Pour se connecter en mode interactif localement:
virsh # équivalent à virsh --connect qemu:///system
Une fois en mode interactif, on va pouvoir contrôler les machines via les commandes:
Pour obtenir des informations sur les VMs (désignées domaines) on dispose de la commande dominfo
dominfo aVm
La configuration du domaine est décrite dans un fichier XML. Les balises du document sont décrites dans la documentation disponible en ligne à l'URL https://libvirt.org/formatdomain.html
La commande virsh edit permet d'éditer le document XML décrivant le domaine:
virsh edit aDomainName
Utiliser la commande edit est équivalent aux commandes:
virsh dumpxml --inactive --security-info domain > domain.xml
# Lance l'éditeur en fonction des variables $VISUAL et $EDITOR
vi domain.xml
# Redéfini le domaine avec le fichier modifié
virsh define domain.xml
Les commandes ci-dessous sont équivalente à virsh edit mais l'exécution pas à pas permet de conserver des révisions du fichier XML. On copie la configuration initiale, on la modifie et de la réimporte si la syntaxe est correcte:
# Exporter la configuration de la VM virsh dumpxml aDomain > aFile.xml # Editer le fichier XML vim aFile.xml # Tester la validité du fichier après altération virt-xml-validate afile.xml # Redéfinir la VM via le fichier modifié virsh define afile.xml
Le document XML comprend les balises <title></title> pour fournir une description courte (sans retour à la ligne) et <description></description>.
La balise <metadata> peut également contenir une balise <comment></comment>
<metadata> <comment> Mes commentaires ici </comment> </metada>
Après toute modification apportée au document, vérifier la syntaxe :
virt-xml-validate aVMConfig.xml
Utiliser la commande undefine sur une VM à l'arrêt:
list --all Id Name State --------------------------- - debian11 shut off undefine debian11 Domain debian11 has been undefined
Pour se connecter à une VM en mode graphique on peut utiliser le client remote-viewer
# Affiche l'URI de connexion à l'interface graphique de la VM domdisplay aDomainName # Connexion à la GUI de la VM remote-viewver spice://localhost:5900
Si une console a été définie on peut également se connecter à la console
virsh console --domain aVM
Si la VM fournit les services telnet ou ssh, on peut ouvrir un shell distant mais il faut d'abord déterminer l'adresse IP de la VM.
Pour afficher les réseau virtuels :
# liste l'ensemble des réseaux virsh net-list --all # liste les réseau virtuels actif : virsh net-list
Pour obtenir les informations détaillées d’un réseau virtuel :
virsh net-info nom_reseau
Comme pour les VMs, la configuration du réseau virtuel peut être exportée et éditée :
virsh net-dumpxml aNetwork > aNetwork.xml
Ci dessous pour exemple le dump du réseau virtuel par défaut :
<network> <name>default</name> <uuid>af20a5ca-db45-4b5e-a2ee-e50ad4c79264</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:85:29:24'/> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network>
On peut y voir notamment :
Pour désactiver un réseau virtuel :
virsh net-destroy nom_reseau
Pour activer un réseau virtuel :
virsh net-start default
Voir également gérer les réseaux virtuels avec virsh.