[pve-devel] [PATCH 0/7] Handle guest shutdown during backups

Dominik Csapak d.csapak at proxmox.com
Fri Sep 18 16:20:45 CEST 2020


overall the series looks ok to me (and tested ok), though a few points:

* i'd really like for someone else to look over this too
   maybe someone who is really good with c ( wolfgang, when you're back 
from holidays? ;) )
* regarding the killing, i'd like better what we already discussed off-list:
   maybe using either the 'quit' command via qmp, or using a pidfd
   to avoid races
* at this point, i think a rewrite in rust could be good,
   before we tack even more features onto this?
   (we have all that we need to handle this, mio,serde_json, etc.)


On 9/3/20 10:58 AM, Stefan Reiter wrote:
> Use QEMU's -no-shutdown argument so the QEMU instance stays alive even if the
> guest shuts down. This allows running backups to continue.
> 
> To handle cleanup of QEMU processes, this series extends the qmeventd to handle
> SHUTDOWN events not just for detecting guest triggered shutdowns, but also to
> clean the QEMU process via SIGTERM (which quits it even with -no-shutdown
> enabled).
> 
> A VZDump instance can then signal qmeventd (via the /var/run/qmeventd.sock) to
> keep alive certain VM processes if they're backing up, and once the backup is
> done, they close their connection to the socket, and qmeventd knows that it can
> now safely kill the VM (as long as the guest hasn't booted again, which is
> possible with some changes to the vm_start code also done in this series).
> 
> This series requires a lot of testing, since there can be quite a few edge cases
> lounging around. So far it's been doing well for me, aside from the VNC GUI
> looking a bit confused when you do the 'shutdown during backup' motion (i.e. the
> last image from the framebuffer stays in the VNC window, looks more like the
> guest has crashed than shut down) - but I haven't found a solution for that.
> 
> 
> qemu-server: Stefan Reiter (6):
>    qmeventd: add handling for -no-shutdown QEMU instances
>    qmeventd: add last-ditch effort SIGKILL cleanup
>    vzdump: connect to qmeventd for duration of backup
>    vzdump: use dirty bitmap for not running VMs too
>    config_to_command: use -no-shutdown option
>    fix vm_resume and allow vm_start with QMP status 'shutdown'
> 
>   PVE/QemuServer.pm                             |  25 +-
>   PVE/VZDump/QemuServer.pm                      |  40 ++-
>   debian/control                                |   1 +
>   qmeventd/Makefile                             |   4 +-
>   qmeventd/qmeventd.c                           | 331 ++++++++++++++++--
>   qmeventd/qmeventd.h                           |  41 ++-
>   .../custom-cpu-model-defaults.conf.cmd        |   1 +
>   .../custom-cpu-model-host-phys-bits.conf.cmd  |   1 +
>   test/cfg2cmd/custom-cpu-model.conf.cmd        |   1 +
>   test/cfg2cmd/efi-raw-old.conf.cmd             |   1 +
>   test/cfg2cmd/efi-raw.conf.cmd                 |   1 +
>   test/cfg2cmd/i440fx-win10-hostpci.conf.cmd    |   1 +
>   test/cfg2cmd/minimal-defaults.conf.cmd        |   1 +
>   test/cfg2cmd/netdev.conf.cmd                  |   1 +
>   test/cfg2cmd/pinned-version.conf.cmd          |   1 +
>   .../q35-linux-hostpci-multifunction.conf.cmd  |   1 +
>   test/cfg2cmd/q35-linux-hostpci.conf.cmd       |   1 +
>   test/cfg2cmd/q35-win10-hostpci.conf.cmd       |   1 +
>   test/cfg2cmd/simple-virtio-blk.conf.cmd       |   1 +
>   test/cfg2cmd/simple1.conf.cmd                 |   1 +
>   test/cfg2cmd/spice-enhancments.conf.cmd       |   1 +
>   test/cfg2cmd/spice-linux-4.1.conf.cmd         |   1 +
>   test/cfg2cmd/spice-usb3.conf.cmd              |   1 +
>   test/cfg2cmd/spice-win.conf.cmd               |   1 +
>   24 files changed, 410 insertions(+), 50 deletions(-)
> 
> manager: Stefan Reiter (1):
>    ui: qemu: set correct disabled state for start button
> 
>   www/manager6/qemu/Config.js | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 






More information about the pve-devel mailing list