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).
Merci pour le partage, j’ai déjà rencontré le même problème et ça m’a énervé, mais maintenant, tout est en ordre et c’est nickel pour moi.
libvirt-guests.service n’est pas là pour ça ?
Non, car libvirt-guests.service n’est pas appelé à la mise en veille de l’ordi, ni à son réveil.