Outils pour utilisateurs

Outils du site


software:applications:virsh

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
software:applications:virsh [2023/02/27 21:54] – créée yoannsoftware:applications:virsh [2024/06/08 11:02] (Version actuelle) – [Description et commentaires] yoann
Ligne 4: Ligne 4:
 ====== Virsh ====== ====== Virsh ======
  
-**virsh** est le CLI disponible en espace utilisateur dialoguant avec le module KVM et permettant gérer les machines virtuelles notamment:+**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;   * Lister les VMs;
Ligne 10: Ligne 10:
   * Contrôler l'exécution des VMs : démarrer, arrêter, suspendre;   * Contrôler l'exécution des VMs : démarrer, arrêter, suspendre;
   * Modifier les configurations à chaud (en ligne) ou de façon permanente.    * Modifier les configurations à chaud (en ligne) ou de façon permanente. 
 +
 +<note>
 +Pour un gestionnaire en mode graphique voir **virt-manager**
 +</note>
 +
 +===== Connexion =====
 +
 +La CLI **virsh** dialogue avec le service de virtualisation. Pour se connecter en mode interactif localement:
 +
 +<code bash>
 +virsh
 +
 +# équivalent à
 +virsh --connect qemu:///system
 +</code>
 +
 +===== 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**
 +
 +<code bash>
 +dominfo aVm
 +</code>
 +
 +  * **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:
 +<code bash>
 +virsh edit aDomainName
 +</code>
 +
 +Utiliser la commande **edit** est équivalent aux commandes:
 +<code>
 +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
 +</code>
 +
 +
 +===== É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:
 +
 +<code bash>
 +# 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
 +</code>
 +
 +===== Description et commentaires ====
 +
 +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>%%**
 +
 +<code xml>
 +<metadata>
 +  <comment>
 +    Mes commentaires
 +    ici
 +  </comment>
 +</metada>
 +</code>
 +
 +Après toute modification apportée au document, vérifier la syntaxe :
 +
 +<code bash>
 +virt-xml-validate aVMConfig.xml
 +</code>
 +
 +===== Supprimer une VM =====
 +
 +Utiliser la commande **undefine** sur une VM à l'arrêt:
 +
 +<code>
 +list --all
 + Id   Name       State
 +---------------------------
 +    debian11   shut off
 +
 +undefine debian11 
 +Domain debian11 has been undefined
 +</code>
 +
 +===== Connexion à la VM =====
 +
 +Pour se connecter à une VM en mode graphique on peut utiliser le client **remote-viewer**
 +<code bash>
 +# Affiche l'URI de connexion à l'interface graphique de la VM
 +domdisplay aDomainName
 +
 +# Connexion à la GUI de la VM
 +remote-viewver spice://localhost:5900
 +</code>
 +
 +Si une console a été définie on peut également se connecter à la console
 +<code bash>
 +virsh console --domain aVM
 +</code>
 +
 +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 :
 +
 +<code bash>
 +# liste l'ensemble des réseaux
 +virsh net-list --all
 +
 +# liste les réseau virtuels actif :
 +virsh net-list
 +</code>
 +
 +
 +Pour obtenir les informations détaillées d’un réseau virtuel :
 +
 +<code bash>
 +virsh net-info nom_reseau
 +</code>
 +
 +Comme pour les VMs, la configuration du réseau virtuel peut être exportée et éditée :
 +
 +<code bash>
 +virsh net-dumpxml aNetwork > aNetwork.xml
 +</code>
 +
 +Ci dessous pour exemple le dump du réseau virtuel par défaut :
 +<code xml>
 +<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>
 +</code>
 +
 +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 :
 +
 +<code bash>
 +virsh net-destroy nom_reseau
 +</code>
 +
 +Pour activer un réseau virtuel :
 +
 +<code bash>
 +virsh net-start default 
 +</code>
 +
 +Voir également [[software/applications/virsh/gerer_les_reseaux|gérer les réseaux virtuels avec virsh]].
  
 ===== Références ===== ===== Références =====
  
 +  * https://www.libvirt.org/manpages/virsh.html
 +  * https://ubuntu.com/server/docs/virtualization-libvirt
   * https://www.youtube.com/watch?v=jDSJ3WYfxUI   * https://www.youtube.com/watch?v=jDSJ3WYfxUI
software/applications/virsh.1677534859.txt.gz · Dernière modification : 2023/02/27 21:54 de yoann