[libvirt-users] Live snapshots of a single block device

Andrew Martin amartin at xes-inc.com
Fri May 23 14:41:54 UTC 2014


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




More information about the libvirt-users mailing list