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

Eric Blake eblake at redhat.com
Thu May 22 22:44:54 UTC 2014


On 05/22/2014 04:31 PM, Andrew Martin wrote:
> Hello,
> 

[Can you convince your mailer to wrap long lines?]

> 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.

> multiple disks, I'd like to back them up individually with separate
> calls to snapshot-create-as, so I can more easily manage the disk
> images. The code I have now is essentially as follows:

> virsh snapshot-create-as --domain "vmname" --name "snapshotname" --description "snapshot description" --disk-only --atomic --no-metadata --diskspec "vda"
> 
> I run this command for each block device (e.g vda, vdb, etc). However, after running the above command (to only backup vda), I see that a snapshot has also been created for vdb. I tried running it with --print-xml, which gives this output:
> <domainsnapshot>
>   <name>05-22-14_17-09-25</name>
>   <description>05-22-14_17-09-25</description>
>   <disks>
>     <disk name='vda'/>
>   </disks>

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>

> 
> 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).

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20140522/33558479/attachment.sig>


More information about the libvirt-users mailing list