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.
libvirt fonctionne selon deux modes distincts :
virsh via l'option --connect qemu:///session. Par défaut les VMs de l’utilisateur sont alors stockées dans ~/.local/share/libvirt;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
Lister les traces produites par le service libvirtd :
journalctl --unit libvirtd
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
Lister les réseau disponibles :
virsh net-list --all
Pour créer un nouveau réseau, utiliser une définition dans un fichier XML
<network> <name>user-vmnet</name> <forward mode='nat' /> <bridge name='virbr1' stp='on' delay='0'/> <domain name='user-vmnet.internal'/> <ip address='192.168.123.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.123.2' end='192.168.123.254'/> </dhcp> </ip> </network>
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 :