----- Original Message -----
From: "Eric Blake" <eblake(a)redhat.com> To:
"Andrew Martin"
<amartin(a)xes-inc.com>, libvirt-users(a)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