[libvirt] [RFC] Image Fleecing for Libvirt (BZ 955734, 905125)
Wenchao Xia
xiawenc at linux.vnet.ibm.com
Wed Jul 24 05:38:03 UTC 2013
于 2013-7-24 11:40, Eric Blake 写道:
> [replying with useful information from another off-list email]
>
> On 07/15/2013 03:04 PM, Richard W.M. Jones wrote:
>> On Mon, Jul 15, 2013 at 05:57:12PM +0800, Fam Zheng wrote:
>>> Hi all,
>>>
>>> QEMU-KVM BZ 955734, and libvirt BZ 905125 are about feature "Read-only
>>> point-in-time throwaway snapshot". The development is ongoing on
>>> upstream, which implements the core functionality by QMP command
>>> drive-backup. I want to demonstrate the HMP/QMP commands here for image
>>> fleecing tasks (again) and make sure this interface looks ready and
>>> satisfying from Libvirt point of view.
>>>
>
>
> On 07/15/2013 06:24 AM, Paolo Bonzini wrote:> Il 15/07/2013 11:57, Fam
> Zheng ha scritto:
>>> Hi all,
>>>
>>> QEMU-KVM BZ 955734, and libvirt BZ 905125 are about feature "Read-only
>>> point-in-time throwaway snapshot". The development is ongoing on
>>> upstream, which implements the core functionality by QMP command
>>> drive-backup. I want to demonstrate the HMP/QMP commands here for image
>>> fleecing tasks (again) and make sure this interface looks ready and
>>> satisfying from Libvirt point of view.
>>
>> And since we are at it, here is a possible libvirt API to expose this
>> functionality (cut-and-paste from an old email). If needed, VDSM can
>> provide a similar API and proxy the libvirt API.
>>
>> Would something like this work?
>>
>> int virDomainBlockPeekStart (virDomainPtr dom,
>> const char ** disks,
>> unsigned int flags);
>>
>> Make it possible to use virDomainBlockPeek on the given disks
>> with the new VIR_DOMAIN_BLOCK_PEEK_IMAGE flag.
>>
>> It is okay to create multiple "snapshot groups", i.e. to invoke
>> the function multiple times with VIR_DOMAIN_BLOCK_PEEK_SNAPSHOT.
>> It is however not okay to specify the same disk multiple times
>> unless all of them are _without_ VIR_DOMAIN_BLOCK_PEEK_SNAPSHOT.
>>
>> flags:
>> VIR_DOMAIN_BLOCK_PEEK_SNAPSHOT
>> Make an atomic point-in-time snapshot of all the disks included
>> in the list of strings "disks", and expose the snapshot via
>> virDomainBlockPeek
>>
>> Note: if the virtual machine is running, this will use
>> nbd-server-start/add/end. If the virtual machine is paused,
>> this will use qemu-nbd. Libvirt should be able to switch
>> transparently from one method to the other.
>>
>> int virDomainBlockPeekStop (virDomainPtr dom);
>>
>> Stop communication with qemu-nbd or the hypervisor.
>>
>>
>> VIR_DOMAIN_BLOCK_PEEK_IMAGE
>>
>> A new flag for virDomainBlockPeek. If specified,
>> virDomainBlockPeek will access the disk image, not the "raw"
>> file (i.e. it will read data as seen by the guest). This
>> is only valid if virDomainBlockPeekStart has been called before
>> for this disk.
>>
>>
>> Because libvirt would use a local (Unix) socket to communicate with QEMU
>> and pass the file descriptor, there is no need to authenticate the NBD
>> connection. There is no need for ticketing, though if necessary we can
>> make QEMU only accept connections from libvirtd's pid. libvirt and VDSM
>> already do authentication and/or encryption.
>>
>> Paolo
>>
>>
>
How do I get the info about IP/port needed to access that snapshot?
call virSnapshotGetInfo(or similar API) later?
>
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>
--
Best Regards
Wenchao Xia
More information about the libvir-list
mailing list