On Wed, Oct 30, 2013 at 08:44:32AM -0600, Eric Blake wrote:
Right now, when creating an external snapshot, the snapshot xml
requires
that the destination be in the local file system:
http://libvirt.org/formatsnapshot.html
<domainsnapshot>
...
<disks>
<disk name='vda' snapshot='external'>
<driver type='qcow2'/>
<source file='/path/to/new'/>
</disk>
...
Interesting - we're missing the 'type' attribute here to distinguish
file vs block too - which impacts on the attribute name in the
<source> element - eg <source dev="/dev/foo1"/>
But libvirt already allows for a network device with qcow2 contents,
provided that there is no backing chain:
# qemu-img info gluster://red/vol1/img2
image: gluster://red/vol1/img2
file format: qcow2
virtual size: 10M (10485760 bytes)
disk size: 193K
cluster_size: 65536
# virsh dumpxml dom
<domain type='kvm'>
...
<disk type='network' device='disk'>
<driver name='qemu' type='qcow2'/>
<source protocol='gluster' name='vol1/img2'>
<host name='red'/>
</source>
<target dev='vdc' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x09'
function='0x0'/>
</disk>
...
I'm working on patches to the backing chain code to allow a gluster (or
other network device) with qcow2 contents to have a backing file, but
for the code to be useful, we also need to patch <domainsnapshot> xml to
allow the destination file to be a gluster or other network device,
rather than forcing it to be a local file name.
Here's the XML I think we need to add to domainsnapshot:
<domainsnapshot>
...
<disks>
<disk name='vda' snapshot='external' type='network'>
<driver type='qcow2'/>
<source protocol='gluster' name='vol1/img2'>
<host name='red'/>
</source>
</disk>
that is, add an optional /disk@type attribute (if absent, it defaults to
type='file'), and where if present, the <source> subelement then takes
on alternate forms in the same manner in which //domain/devices/disk
handles alternates (here, allowing a protocol, name, and host
specification).
We should wire up type=block while fixing this, so we have consistent
representations. Indeed, is there a way to share the parsing code for
this between the two schemas, to guarantee consistency ? Likely just
want to share the source specification part of the schema (eg the QEMU
"backend" config equivalent).
[Ultimately, we need to fix //domain/devices/disk to specify a full
backing chain, but one step at a time...]
Yep, we'd want to fix the <domain> <disk> schema to deal with this
before we consider what it means for <domainsnapshot> (if anything)
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|