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

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
software:applications:virsh [2023/03/02 21:36] yoannsoftware:applications:virsh [2026/01/05 22:14] (Version actuelle) yoann
Ligne 4: Ligne 4:
 ====== Virsh ====== ====== 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:+**virsh** est la CLI disponible en espace utilisateur dialoguant avec le module **KVM**((**K**ernel **V**irtual **M**achine)) 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>
 +
 +<note>
 +Pour créer facilement une VM, voir la [[sysadmin/linux/virtualisation/kvm/creer_une_vm_avec_virt-install|CLI virt-install]]
 +</note>
 +
 +
 +Pour que l'utilisateur courant puisse gérer les VMs avec virsh sans élévation de privilèges (via sudo), il doit faire parti du groupe ''libvirt'' :
 +
 +<code bash>
 +# Vérifier que l'utilisateur courant appartient au groupe libvirt
 +groups | grep libvirt
 +
 +# Si la commande ne retourne pas de ligne, ajouter l'utilisateur au groupe libvirt
 +sudo adduser $( whoami ) libvirt
 +</code>
 +
 +Pour plus de détail voir la [[sysadmin:linux:virtualisation:kvm:installer-kvm|procédure d'installation de KVM]].
 +
  
 ===== Connexion ===== ===== Connexion =====
  
-Pour se connecter en mode interactif localement:+La CLI **virsh** dialogue avec le service de virtualisation. Pour se connecter en mode interactif localement: 
 <code bash> <code bash>
 virsh virsh
Ligne 34: Ligne 57:
   * **destroy** : forcer l'arrêt d'une VM   * **destroy** : forcer l'arrêt d'une VM
  
-===== Obtenir des informations =====+===== Obtenir des informations sur une VM =====
  
-Pour obtenir des informations sur les VMs (désignés également domaines) on dispose de la commande **dominfo**+Pour obtenir des informations sur les VMs (désignées domaines) on dispose de la commande **dominfo**
  
 <code bash> <code bash>
Ligne 45: Ligne 68:
   * **dommemstat** : consommation de la mémoire   * **dommemstat** : consommation de la mémoire
   * **domstats** : affiche les variables statisqtiques   * **domstats** : affiche les variables statisqtiques
-  * **domblklist** : lister les périphériques de type bloc (disques) associés à une VM+  * **domblklist** : lister les périphériques de type bloc (disques, CD-ROMs, disquettes) associés à une VM
   * **domiflist** : lister les interfaces d'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>
 +
 +==== Passer des arguments à QEMU ====
 +
 +Il est possible de spécifier des arguments à transmettre à la ligne de commande de QEMU
 +
 +
 +==== Vérifier la syntaxe ====
 +
 +Après toute modification apportée à la configuration, 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
 +
 +# Alternative
 +virt-viewver aDomainName
 +</code>
 +
 +Si une console série a été définie on peut également se connecter à la console avec :
 +
 +<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.youtube.com/watch?v=jDSJ3WYfxUI+ 
 +  [[https://ubuntu.com/server/docs/virtualization-libvirt| A propos de la bibliothèque libvirt (ubuntu.com) (en)]] 
 +  * [[https://www.libvirt.org/manpages/virsh.html| Documentation libvirt (libvirt.org) (en)]] 
 +  * [[https://blog.vmsplice.net/2011/04/how-to-pass-qemu-command-line-options.html|Comment passer des options à QEMU via libvirt ? (vmsplice.net) (en)]] 
 +  * 📹 [[https://www.youtube.com/watch?v=jDSJ3WYfxUI|Comment gérer les machines virtuelles avec Virsh sous Red Hat (youtube.com, Alphorm)]]
software/applications/virsh.1677793007.txt.gz · Dernière modification : 2023/03/02 21:36 de yoann