Aller au contenu principal

qemu-guest-agent — communication VM ↔ hyperviseur

Contrairement aux autres fiches de ce lot, qemu-guest-agent tourne à l'intérieur de la VM invitée (pas sur l'hôte). Il fournit un canal de communication (via un port série virtio) entre l'hyperviseur et l'invité, permettant à l'hôte de demander des actions coordonnées : gel du système de fichiers avant un snapshot, arrêt propre, récupération de l'IP réelle de la VM, etc.

Installation

# À l'intérieur de la VM invitée
sudo apt install qemu-guest-agent # Debian/Ubuntu
sudo dnf install qemu-guest-agent # Fedora/RHEL
sudo systemctl enable --now qemu-guest-agent

Côté hôte, il faut aussi déclarer le canal virtio-serial dans la définition XML de la VM (<channel type='unix'><target type='virtio' name='org.qemu.guest_agent.0'/></channel>).

Fichiers de configuration

FichierRôle
/etc/sysconfig/qemu-ga (RHEL)Options de démarrage du démon
Aucun fichier de conf majeur côté Debian — configuration minimale par défaut

Commandes utiles

Côté hôte, piloté via virsh :

virsh domifaddr <vm> --source agent # IP réelle de la VM (via l'agent, plus fiable que le bail DHCP)
virsh guestinfo <vm>
virsh domfsfreeze <vm> # geler les FS avant un snapshot cohérent
virsh domfsthaw <vm>

Exemple de configuration

XML côté hôte pour activer le canal (à ajouter dans la définition libvirt de la VM) :

<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>

Sécurisation

  • Le canal guest agent permet à l'hôte d'exécuter certaines actions dans l'invité (gel FS, arrêt, exécution de commandes limitées) : ne l'activer que sur des VM de confiance dont on contrôle aussi l'hôte.
  • Ne pas exposer le socket virtio-serial à un tiers non fiable ayant accès à l'hyperviseur.

Logs & dépannage

# Dans la VM invitée
journalctl -u qemu-guest-agent
# Côté hôte, si "guest agent is not responding" :
virsh domifaddr <vm> --source agent # échoue si l'agent n'est pas démarré dans la VM

Voir aussi

  • libvirtd — l'hôte qui communique avec cet agent