[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [RFC] Image Fleecing for Libvirt (BZ 955734, 905125)



于 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 redhat com
https://www.redhat.com/mailman/listinfo/libvir-list



--
Best Regards

Wenchao Xia


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]