Служба libvirt-guests запускается после завершения службы libvirtd, что не позволяет ей выключить или приостановить виртуальные машины. В unit-файле указан параметр After, но не на службу libvirtd, а на ее сокет. Изменение на службу исправляет проблему и виртуальные машины корректно выключаются и при включении компьютера восстанавливаются или включаются заново. Источник: https://forum.altlinux.org/index.php?topic=47934.0
Воспроизводится в сизифе. Нужно в файле /lib/systemd/system/libvirt-guests.service поменять After=libvirtd.socket на After=libvirtd.service После данного изменения виртуалки выключаются и включаются автоматически при выключении/включении хоста. Для информации: дополнительно ещё нужно в конфиге /etc/libvirt/libvirt.conf раскомментировать строку uri_default = "qemu:///system"
Проверка актуальности: в libvirt 12.6.0 юнит tools/libvirt-guests.service.in по-прежнему содержит After=libvirtd.socket (и сокеты modular-демонов), а не After=libvirtd.service — это апстримный юнит без изменений с нашей стороны. Баг актуален.