
----- Original Message -----
From: "Eric Blake" <eblake@redhat.com> To: "Andrew Martin" <amartin@xes-inc.com>, libvirt-users@redhat.com Sent: Thursday, May 22, 2014 5:44:54 PM Subject: Re: [libvirt-users] Live snapshots of a single block device
On 05/22/2014 04:31 PM, Andrew Martin wrote:
Hello,
[Can you convince your mailer to wrap long lines?] Sorry, my client won't auto-wrap and I forgot to run my post through vim before sending. Will do now :)
I am working on a script to automatically create live snapshots of running VMs using qemu-kvm 1.4.0 and libvirt 1.0.2. If a VM has
Any reason you aren't upgrading to newer versions? Although these seem sufficient for what you are trying.
The VM hosts I'm using all run Ubuntu 12.04 and I haven't had time to backport and test newer versions yet. I've published the latest versions I built in this PPA: https://launchpad.net/~xespackages/+archive/virtualization The main functionality I need is live snapshotting with snapshot-create-as and blockpull, so I haven't had a good reason to invest time to upgrade.
The problem you are facing is that the snapshot code MUST have an action for every disk; and if you don't specify the action directly in your <domainsnapshot> xml, then the action chosen is inherited from the <domain> xml (if you used <disk snapshot='no'>) or ultimately from the type of snapshot you are creating (here, since you didn't use <disk snapshot='no'> in the
> domain xml, and didn't specify vdb in the <domainsnapshot>, libvirt > assumes from --disk-only that you want vdb to have an external > snapshot taken).
</domainsnapshot>
What am I doing wrong - how can I tell snapshot-create-as to create an external snapshot for a specific block device only (not all block devices)?
Use: --diskspec vda --diskspec vdb,snapshot=no
which produces this subset of xml:
<disks> <disk name='vda'/> <disk name='vdb' snapshot='no'/> </disks>
Ah, that makes sense, thanks so much for clearing this up!
Also, while looking at the manpage, does the --live option do anything different if used with the above command?
--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
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? Thanks, Andrew