Skip to content

L'agent QEMU

L'agent QEMU va permettre une communication entre l'hyperviseur (le serveur sur lequel est hébergé l'instance), et l'OS de l'instance.

Configurer l'image🔗

La communication est faite à travers un périphérique virtuel dédié. Openstack l'ajoutera automatiquement à l'instance si il détecte la propriété hw_qemu_guest_agent à yes

Sur une image déjà existante, il faut faire:

openstack image set --property hw_qemu_guest_agent=yes {{ image_name ou image_id}}

Installer l'agent🔗

Linux🔗

Par defaut qemu-guest-agent n'est pas installé, mais une fois installé, il n'y aura pas besoin de faire quoi que ce soit pour que le mécanisme de gel/dégel du système de fichiers fonctionne.

# Installer l'agent
$ apt-get update
$ apt-get install qemu-guest-agent

# Vérifier le fonctionnement
$ systemctl status qemu-guest-agent.service
# Installer l'agent
$ dnf install qemu-guest-agent

# Vérifier le fonctionnement
$ systemctl status qemu-guest-agent.service

Windows🔗

Télécharger et installer le MSI correspondant à l'architecture du système depuis le site du projet Fedora https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-qemu-ga/

Le service peut être vérifié en faisant:

PS C:\Users\Administrator> Get-Service QEMU-GA

Status   Name               DisplayName
------   ----               -----------
Running  QEMU-GA            QEMU Guest Agent

Configuration avancée🔗

Il est possible d'ajouter des scripts qui seront executés avant que le système de fichiers soit gelé par l'agent et après que celui-ci soit dégelé.

Attention

Il faut faire très attention avec ces scripts, si l'un échoue, le snapshot va être abandonné et détruit. Si aucune image n'est créée après une demande de snapshot, c'est probablement qu'un des scripts a échoué. Dans ce cas il faut analyser les logs de qemu-agent depuis l'instance .

Activer fsfreeze-hook🔗

Il faut avant tout ajouter et activer le mécanisme de hook dans le service qemu-guest-agent.

# Créer le répertoire qui va contenir les hooks
$ mkdir -p /etc/qemu/fsfreeze-hook.d

# Télécharger le script fsfreeze-hook depuis le dépot de QEMU
$ wget -O /etc/qemu/fsfreeze-hook https://raw.githubusercontent.com/qemu/qemu/master/scripts/qemu-guest-agent/fsfreeze-hook

# Ajouter l'utilisation de ce script dans la configuration du service qemu-guest-agent
$ tee /etc/default/qemu-guest-agent > /dev/null <<EOF
DAEMON_ARGS="-F/etc/qemu/fsfreeze-hook"
EOF

# Redémarrer le service
$ systemctl restart qemu-guest-agent.service

Exemple de script🔗

On va ajouter un script d'exemple qui va logger dans /tmp/freeze.log les actions de gel et dégel.

# tee /etc/qemu/fsfreeze-hook.d/test_hook.sh > /dev/null <<EOF
#!/bin/bash

case \$1 in
 freeze)
   echo "I'm frozen" > /tmp/freeze
   ;;
 thaw)
   echo "I'm thawed" >> /tmp/freeze
   ;;
 *)
   exit 1
   ;;
esac
EOF

chmod +x /etc/qemu/fsfreeze-hook.d/test_hook.sh