[Slackbuilds-users] Libvirt package - small change to /etc/rc.d/rc.libvirt
Sebastian Arcus
s.arcus at open-t.co.uk
Thu May 4 11:55:03 UTC 2017
I have a small change to suggest for the /etc/rc.d/rc.libvirt script.
The script at the moment does a 'virsh shutdown <vm-name>' on all
running guests, and then, after waiting only 40 seconds, it destroys all
guests which are still running. I think in most circumstances this is
very likely to lead to corrupted guests because:
1. Many guests will take longer than 40 seconds to shutdown, specially
if they are Windows guests.
2. Some Windows guests might be trying to install updates on shutdown,
which can take 10, 20 or even 60 minutes.
3. If there are a number of guests running and the host is busy trying
to shut them all down at the same time, even Linux guests will still be
in the process of shutting down after 40 seconds.
4. If it is a setup where users connect to guests remotely, it is
possible that people are in the middle of doing work which would be lost.
Would it maybe be safer to do a 'virsh managedsave <vm-name>' on every
running guest instead? I can see many advantages to this option, including:
1. It is much less likely for users who might use the guests remotely to
loose work, as the machine state is suspended.
2. Guests stopped with 'managedsave' will start fine with the 'start'
command - so no need to change any settings anywhere else, and the
'autostart' feature of libvirt will continue to work fine.
2. On my server, the 'managedsave' operation takes around 20 seconds per
guest, and it is more predictable in duration than a 'shutdown', which
depends on the OS in the guest, if it is installing updates etc.
4. The 'managedsave' command doesn't return immediately, so we can wait
for each guest in turn and know when it is done. Or ampersand could be
used on the command, and then just do a looped check on 'virsh list'
lower down, waiting for the 'managedsave' on all guests to finish.
5. If my understanding is correct, the 'shutdown' command depends on the
guest implementing correctly and acting on ACPI commands, while a
'managedsave' seems to be under the complete control of libvirt - which
means the script would work correctly out of the box with a much wider
variety of OS's and configurations on the guest side.
If necessary, I suppose the script could also implement a
'reboot_guests' separate command, for people to use it to reboot all
running guests - as the "stop" command wouldn't be performing a full
shutdown any more.
Just a suggestion in case it helps. I'm already very happy with the
current script, as I used to have to write my own to shutdown kvm/qemu
guests :-)
More information about the SlackBuilds-users
mailing list