On Fri, Nov 22, 2013 at 01:47:26PM +0800, Fam Zheng wrote: > On 2013年11月20日 10:32, Ian Main wrote: > >On Thu, Oct 17, 2013 at 01:36:41PM +0800, Fam Zheng wrote: > >>This series adds for point-in-time snapshot NBD exporting based on > >>blockdev-backup (variant of drive-backup with existing device as target). > > > >In general this seems to work great. I did a bunch of testing and was > >able to mount filesystems over NBD, do many writes (on backed up > >image)/reads (on target), intense IO etc and all held up fine. > > > >There are definitely some issues with some of the commands allowing you > >to blow things up. I'm interested to hear opinions on whether this is a > >showstopper at this time or not. > > > > Thanks very much for your testing, Ian. QEMU should report error > instead of crashing with invalid operations. I added an "operation > blocker" and incorporated into the next version. > > In the future, we still want to review more on those commands and > try to enable safe ones, and possibly also allow multiple block jobs > on a BDS. For now it is good enough to only allow blockdev-backup on > the source and NBD export on the target (which is safe, and all what > we need for image fleecing, as this version shows). With that being > a working implementation, I've posted v4. Please test and free to > make comments.
That's great. Interesting solution you have come up with. I will give it a try and let you know how it goes. > >>We get a thin point-in-time snapshot by COW mechanism of drive-backup, and > >>export it through built in NBD server. The steps are as below: > >> > >> 1. (SHELL) qemu-img create -f qcow2 BACKUP.qcow2 <source size here> > >> > >> (Alternatively we can use -o backing_file=RUNNING-VM.img to omit > >> explicitly > >> providing the size by ourselves, but it's risky because > >> RUNNING-VM.qcow2 is > >> used r/w by guest. Whether or not setting backing file in the image > >> file > >> doesn't matter, as we are going to override the backing hd in the next > >> step) > >> > >> 2. (QMP) blockdev-add backing=source-drive file.driver=file > >> file.filename=BACKUP.qcow2 id=target0 if=none driver=qcow2 > > > >I had to create a custom python script to make these commands work as > >they require nested dicts. Is that normal or did I miss something > >entirely? > > > > Yes, I use a python script locally to test it too. I like your notation.. I might try to make a patch for qmp/qmp-shell to allow it to create nested dicts using the dot notation. Ian