Systemd : mise en veille des VM de libvirtd à la mise en veille de la machine hôte

Lors d'une mise en veille d'une machine Debian utilisant systemd et hébergeant des machines virtuelles créés avec libvirtd, les machines virtuelles empêchent la mise en veille. Résultat, une coupure franche de la machine. Ce qui n'est pas bon.

Pour y remédier, c'est fort simple.

mkdir /etc/systemd/system-sleep

Dans ce répertoire, créer le script suivant (appelons-le virsh.sh par exemple) :

#!/bin/bash
# vim:set sw=4 ts=4 sts=4 ft=sh expandtab:

case "$1" in
    pre)
        for i in $(virsh list | grep running | awk '{print $2}')
        do
            virsh suspend $i
        done
        ;;
    post)
        for i in $(virsh list | grep paused | awk '{print $2}')
        do
            virsh resume $i
        done
        ;;
    *) exit $NA
        ;;
esac

On le rend exécutable :

chmod 755 /etc/systemd/system-sleep/virsh.sh

Je pense qu'il est bon de reloader le dæmon systemd :

systemctl daemon-reload

Et c'est bon ! La mise en veille fonctionne tout à fait normalement maintenant.

Explication : avant de mettre en veille, on suspend toutes les machines virtuelles qui sont en train de tourner, et après on les rallume (ce qui rallumera aussi celles que vous aviez vous-même mises en veille, mais bon).

3 réflexions au sujet de “Systemd : mise en veille des VM de libvirtd à la mise en veille de la machine hôte”

Les commentaires sont fermés.