Recently I brought my KVM host down for an upgrade. I shut down the guests within their OSes, confirmed they were powered off with a virsh list --all, and everything went well with the upgrade.
However, upon returning the guests to service, one of them would not start up. Typing virsh start I got the helpful error message
Error restoring domain: cannot send monitor command
Connection reset by peer
Why was this one VM broken but the others were fine?
I played around with virsh autostart and virsh autostart --disable but that had no effect, nor did a reboot of the hypervisor.
After some searching around, it turns out libvirt has the capability to keep "managed save states" of guests, kinda like a sleep mode or snapshot, to save you fully powering a guest OS off.
For some reason, a managed save for this one guest had been created, perhaps it had not shut down properly, or perhaps there's an errorr in libvirt. I could view the saved state with
# virsh list --all --managed-save
Id Name State
- guest1 shut off
- guest2 saved
Now a virsh managedsave-remove guest2 returned it to the "shut off" state, and I could start it properly with virsh start as per usual.