We're running libvirt under Debian 12, package version 9.0.0-4. Earlier
today I made a configuration change and restarted libvirtd. I've done
this for years and never had a problem, after restarting it shows all
the active storage pools, networks, and virtual machines and worked
fine.
However, I guess this is the first time I've done it on a system with an
sr-iov network pool. After restarting, I was unable to initialize any
virtual machines, as it would try to reallocate vf's that were in use by
existing machines already running, resulting in an error from qemu.
I spent a fair amount of time trying to recover from this, ideally with
some way to make libvirt scan existing vm's and update the sr-iov pool
in use status, or even some manual way to tell it which ones were in
use. Unfortunately, I couldn't find anything and ended up having to shut
down all the vm's and then restart them to fix it.
Where is the sr-iov pool state stored? Is it just in an in-memory data
structure that goes away when libvirt restarts? libvirt doesn't
inventory existing vm's and figure out what's in use at startup if
that's the case?
Is there any way to recover from this situation short of the nuclear
"shut down and restart everything" option?
Thanks much...