{{tag>application software virsh virtualisation vm cli aide-mémoire cheat-sheet}}
====== Aide-mémoire virsh ======
:TODO:
===== Fonctionnement global =====
{{virsh-architecture.svg}}
Selon les distributions il peut y avoir un service système monolithique, c'est le cas pour Debian/Ubuntu avec ''libvirtd'' ou un ensemble de daemons comme pour RHEL/Fedora/RockyLinux exécutant ''virtqemud'', ''virtnetworkd'' et ''virtstoraged''.
===== Modes d'exécution des VMs =====
libvirt fonctionne selon deux modes distincts :
* **mode session** : les processus de virtualisation s'exécutent avec les droits de l'utilisateur courant. On le spécifie à la CLI ''virsh'' via l'option **%%--connect qemu:///session%%**. Par défaut les VMs de l’utilisateur sont alors stockées dans ''~/.local/share/libvirt'';
* **mode système** : les processus de virtualisation s'exécutent en tant que service via un utilisateur système dédié (''libvir-qemu''). on le spécifie à ''virsh'' via l'option **%%--connect qemu:///system%%** Les VMs sont stockées par défaut dans ''/var/lib/libvirt''.
Exemples avec options longues et courtes :
# Lister les VMs disponibles sur le système (l'utilisateur invoquant la commande
# devra y être autorisé )
virsh --connect qemu:///system list --all
virsh -c qemu:///system list --all
# Lister les VMs de l'utilisateur courant
virsh --connect qemu:///session list --all
virsh -c qemu:///session list --all
Pour ne pas avoir à spécifier systématiquement cette option on peut utiliser la variable d'environnement ''LIBVIRT_DEFAULT_URI''
export LIBVIRT_DEFAULT_URI="qemu:///system"
# Lister les VMs système en cours d'exécution
virsh list
Si l'utilisateur souhaite invoquer un mode par défaut, il peut exporter la variable dans son fichier ''~/.bashrc''
===== Vocabulaire libvirt =====
* **domain** : désigne la VM (terme issu de Xen). libvirt peut s'appuyer sur différents ;
* **pool** : espace de stockage regroupant des volumes
* **volume** : disque virtuel ou image
===== Journaux =====
Lister les traces produites par le service libvirtd :
journalctl --unit libvirtd
===== Gestion des pools =====
Création d'un nouveau pool **persistant** de type répertoire sur un disque externe pour stockage des médias d'installation.
Dans cet exemple le répertoire existe et n'est pas vide, il contient les fichiers ISOs :
virsh pool-define-as --name removable-sysinstall --type dir --target /media/yoann/srv_info/libvirt/pool/install/
virsh pool-start removable-sysinstall
Pour créer un pool temporaire, on peut utiliser **virsh pool-create-as**
virsh pool-create-as --name temp-repo --type dir --target /media/tmp/
On peut à présent lister les volumes de ce pool :
virsh vol-list --pool removable-sysinstall
# Equivalent
virsh vol-list removable-sysinstall
===== Réseau =====
Lister les réseau disponibles :
virsh net-list --all
Pour créer un nouveau réseau, utiliser une définition dans un fichier XML
user-vmnet
Pour créer le réseau depuis le fichier XML :
virsh net-define ./user-vmnet.xml
Le réseau est créé mais l'interface n'est pas encore démarrée :
===== Références =====
* https://blog.stephane-robert.info/docs/virtualiser/type1/kvm/virsh-commandes/
* [[https://fr.linux-terminal.com/?p=4598|Déplacer le pool de stockage par défaut (fr.linux-terminal.com)]]
* [[https://gist.github.com/ralvares/a54d3d28bc4235d390c31f42705ee5ac|Créer un nouveau réseau via virsh (gist.github.com)(en)]]