
--live only makes sense when mixed with memory snapshots (with --memspec); but as you are doing a --disk-only snapshot, it doesn't help (I'm not sure if it will error out as mutually exclusive or just be silently ignored, without reading the code). I'm using this code in a script for creating live backups of VMs - would it make sense to include --memspec to capture the memory state so that an fsck on boot isn't necessary? I remember you explained --quiese awhile back: https://www.redhat.com/archives/libvirt-users/2013-February/msg00020.html
--memspec and --quiesce are orthogonal, you only need one or the other (in fact, they do NOT work together in the current implementation). --memspec says to capture the domain memory state (migrate to file; using --live additionally says to minimize the time the guest is paused but the file may be larger), and when the guest pauses at the end of that migration, then snapshot the disks. By resuming the guest from that migration stream and disk state, any pending I/O operations in flight in the guest OS will still be ready to go when the guest starts back up, no fsck needed. --quiesce says to tell the guest to flush all I/O, then captures disk state, all without stopping the guest. But --quiesce requires the guest to be running to work, while --memspec forceably stops the guest (the migration algorithm must pause, even if --live minimizes the pause to a fraction of a second). Would calling snapshot-create-as with --disk-only and --quiese still succeed on a VM that is stopped (since the disk would already be consistent, it would just call "qemu-img create")?
However I don't have qemu-guest-agent installed on the guests, so would using --memspec instead of --disk-only produce a snapshot that is consistent (since it would "resume" with the same memory state) or would this not be ideal for backups (e.g easy to restore/recover)? Can the memory image be written to the same image file (qcow2) as the disk snapshot?
External checkpoints (those where --memspec was used) have more information than disk-only snapshots (even if --quiesce was used to minimze the need for an fsck on the disk contents). Thus, --memspec snapshots require no guest cooperation, at the expense of requiring more disk space to hold the state. On the other hand, if you are going to do a --memspec snapshot, I _highly_ recommend that you snapshot ALL disks at once, rather than trying to do just one disk at a time. With --disk-only (whether or not you use --quiesce), all you can recover is the disk state by a fresh boot of the disk (--quiesce minimizes the chance that the fresh boot needs an fsck). But with --memspec, the memory state is only consistent if it matches ALL disk state taken at the same time as the memory state - if you omit a disk, then try to revert to that memory state, your running guest will behave as if the disk instantaneously corrupted data out of underneath the OS.
It sounds like --quiese would work better for my use case, since I'm only concerned with keeping the disk state consistent and prefer to not stop the guest (even for a fraction of a second). The qemu-kvm 1.4.0 package I built includes a version of qemu-guest-agent 1.4.0, so I will start testing after installing it in a guest and adding the XML to the config: http://wiki.libvirt.org/page/Qemu_guest_agent Thanks! Andrew