{{tag>software virtualisation vm cli kvm linux}} ====== Virsh ====== **virsh** est la CLI disponible en espace utilisateur dialoguant avec le module [[sysadmin/linux/virtualisation_avec_kvm|KVM]] et permettant de gérer les machines virtuelles notamment: * Lister les VMs; * Afficher des informations sur l'état des VMs et des ressources; * Contrôler l'exécution des VMs : démarrer, arrêter, suspendre; * Modifier les configurations à chaud (en ligne) ou de façon permanente. Pour un gestionnaire en mode graphique voir **virt-manager** ===== Connexion ===== La CLI **virsh** dialogue avec le service de virtualisation. Pour se connecter en mode interactif localement: virsh # équivalent à virsh --connect qemu:///system ===== Contrôler l'exécution des VMs ===== Une fois en mode interactif, on va pouvoir contrôler les machines via les commandes: * **list** : afficher les VMs * **start** : démarrer une VM * **console** : ouvre un terminal sur la VM * **suspend** : susprendre l'exécution de la VM * **resume** : reprendre l'exécution de la VM * **shutdown** : arrêter une VM * **reset** : redémarrage forcé de la VM * **destroy** : forcer l'arrêt d'une VM ===== Obtenir des informations ===== Pour obtenir des informations sur les VMs (désignées domaines) on dispose de la commande **dominfo** dominfo aVm * **domstate** : état de la VM * **dommemstat** : consommation de la mémoire * **domstats** : affiche les variables statisqtiques * **domblklist** : lister les périphériques de type bloc (disques) associés à une VM * **domiflist** : lister les interfaces d'une VM: 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 ===== Éditer une configuration ===== 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 ===== Description et commentaires ==== Le document XML comprend les balises **%%%%** pour fournir une description courte (sans retour à la ligne) et **%%%%**. La balise **%%%%** peut également contenir une balise **%%%%** Mes commentaires ici Après toute modification apportée au document, vérifier la syntaxe : virt-xml-validate aVMConfig.xml ===== Supprimer une VM ===== 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 ===== Connexion à la VM ===== 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 [[/software/applications/virsh/lister_adresses_ip_systeme_invite| déterminer l'adresse IP de la VM]]. ===== Gestion des réseaux ===== 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 : default af20a5ca-db45-4b5e-a2ee-e50ad4c79264 On peut y voir notamment : * le périphérique virtuel de type pont associé "virbr0" * La configuration DHCP * La configuration du NAT Pour désactiver un réseau virtuel : virsh net-destroy nom_reseau Pour activer un réseau virtuel : virsh net-start default Voir également [[software/applications/virsh/gerer_les_reseaux|gérer les réseaux virtuels avec virsh]]. ===== Références ===== * https://www.libvirt.org/manpages/virsh.html * https://ubuntu.com/server/docs/virtualization-libvirt * https://www.youtube.com/watch?v=jDSJ3WYfxUI