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