Table des matières

, , , , ,

Virsh

virsh est la CLI disponible en espace utilisateur dialoguant avec le module KVM et permettant de gérer les machines virtuelles notamment:

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:

Obtenir des informations

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

É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 <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

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 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 :

<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.

Références