On 07/06/2015 05:42 PM, Dr. David Alan Gilbert wrote: > * Wen Congyang (ghost...@gmail.com) wrote: >> At 2015/7/3 23:30, Dr. David Alan Gilbert Wrote: >>> * Wen Congyang (we...@cn.fujitsu.com) wrote: >>>> Block replication is a very important feature which is used for >>>> continuous checkpoints(for example: COLO). >>>> >>>> Usage: >>>> Please refer to docs/block-replication.txt >>>> >>>> You can get the patch here: >>>> https://github.com/wencongyang/qemu-colo/commits/block-replication-v7 >>>> >>>> You can get ths patch with framework here: >>>> https://github.com/wencongyang/qemu-colo/commits/colo_framework_v7.2 >>> >>> Hi, >>> I seem to be having problems with the new listed syntax on the wiki; >>> on the secondary I'm getting the error >>> >>> Block format 'replication' used by device 'virtio0' doesn't support the >>> option 'export' >>> >>> ./try/bin/qemu-system-x86_64 -enable-kvm -nographic \ >>> -boot c -m 4096 -smp 4 -S \ >>> -name debug-threads=on -trace events=trace-file \ >>> -netdev tap,id=hn0,script=$PWD/ifup-slave,\ >>> downscript=no,colo_script=$PWD/qemu/scripts/colo-proxy-script.sh,colo_nicname=em4 >>> \ >>> -device e1000,mac=9c:da:4d:1c:b5:89,id=net-pci0,netdev=hn0 \ >>> -device virtio-rng-pci \ >>> -drive >>> if=none,driver=raw,file=/home/localvms/bugzilla.raw,id=colo1,cache=none,aio=native >>> \ >>> -drive >>> if=virtio,driver=replication,mode=secondary,export=colo1,throttling.bps-total-max=70000000,\ >>> file.file.filename=$TMPDISKS/colo-active-disk.qcow2,\ >>> file.driver=qcow2,\ >>> file.backing.file.filename=$TMPDISKS/colo-hidden-disk.qcow2,\ >>> file.backing.driver=qcow2,\ >>> file.backing.backing.backing_reference=colo1,\ >>> file.backing.allow-write-backing-file=on \ >>> -incoming tcp:0:8888 >> >> Sorry, the option export is removed, because we use the qmp command >> nbd-server-add to let a BB be NBD server. > > If I remove the export= the secondary starts, but then when I issue the > child_add > on the primary I get the error: > > Server requires an export name > > on the secondary I had done: > > (qemu) nbd_server_start :8889 > (qemu) nbd_server_add -w colo1 > > Can you please confirm your exact command line and sequence needed with this > 7.2 set please.
This is the child_add command that I used: child_add disk1 child.driver=replication,child.mode=primary,child.file.host=$nbd_host,child.file.port=$nbd_port,child.file.export=colo1,child.file.driver=nbd,child.ignore-errors=on I guess you remove export from this command too. Thanks Wen Congyang > >> >>> This is using 6fd6ce32 from the colo_framework_v7.2 tag. >>> >>> What have I missed? >>> >>> Dave >>> P.S. the name 'file.backing.backing.backing_reference' is not nice! >> >> Which name is better? My native language is not English, so any such >> suggestion is welcome. > > My only problem is the way that 'backing' is repeated 3 times; that seems > odd! > > Dave > >> >> Thanks >> Wen Congyang >> >>> >>>> >>>> TODO: >>>> 1. Continuous block replication. It will be started after basic functions >>>> are accepted. >>>> >>>> Changs Log: >>>> V7: >>>> 1. Implement adding/removing quorum child. Remove the option non-connect. >>>> 2. Simplify the backing refrence option according to Stefan Hajnoczi's >>>> suggestion >>>> V6: >>>> 1. Rebase to the newest qemu. >>>> V5: >>>> 1. Address the comments from Gong Lei >>>> 2. Speed the failover up. The secondary vm can take over very quickly even >>>> if there are too many I/O requests. >>>> V4: >>>> 1. Introduce a new driver replication to avoid touch nbd and qcow2. >>>> V3: >>>> 1: use error_setg() instead of error_set() >>>> 2. Add a new block job API >>>> 3. Active disk, hidden disk and nbd target uses the same AioContext >>>> 4. Add a testcase to test new hbitmap API >>>> V2: >>>> 1. Redesign the secondary qemu(use image-fleecing) >>>> 2. Use Error objects to return error message >>>> 3. Address the comments from Max Reitz and Eric Blake >>>> >>>> >>>> Wen Congyang (17): >>>> Add new block driver interface to add/delete a BDS's child >>>> quorum: implement block driver interfaces add/delete a BDS's child >>>> hmp: add monitor command to add/remove a child >>>> introduce a new API qemu_opts_absorb_qdict_by_index() >>>> quorum: allow ignoring child errors >>>> introduce a new API to enable/disable attach device model >>>> introduce a new API to check if blk is attached >>>> block: make bdrv_put_ref_bh_schedule() as a public API >>>> Backup: clear all bitmap when doing block checkpoint >>>> allow writing to the backing file >>>> Allow creating backup jobs when opening BDS >>>> block: Allow references for backing files >>>> docs: block replication's description >>>> Add new block driver interfaces to control block replication >>>> skip nbd_target when starting block replication >>>> quorum: implement block driver interfaces for block replication >>>> Implement new driver for block replication >>>> >>>> block.c | 198 +++++++++++++++++- >>>> block/Makefile.objs | 3 +- >>>> block/backup.c | 13 ++ >>>> block/block-backend.c | 33 +++ >>>> block/quorum.c | 244 ++++++++++++++++++++++- >>>> block/replication.c | 443 >>>> +++++++++++++++++++++++++++++++++++++++++ >>>> blockdev.c | 90 ++++++--- >>>> blockjob.c | 10 + >>>> docs/block-replication.txt | 179 +++++++++++++++++ >>>> hmp-commands.hx | 28 +++ >>>> include/block/block.h | 11 + >>>> include/block/block_int.h | 19 ++ >>>> include/block/blockjob.h | 12 ++ >>>> include/qemu/option.h | 2 + >>>> include/sysemu/block-backend.h | 3 + >>>> include/sysemu/blockdev.h | 2 + >>>> qapi/block.json | 16 ++ >>>> util/qemu-option.c | 44 ++++ >>>> 18 files changed, 1303 insertions(+), 47 deletions(-) >>>> create mode 100644 block/replication.c >>>> create mode 100644 docs/block-replication.txt >>>> >>>> -- >>>> 2.4.3 >>>> >>> -- >>> Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK >>> >>> > -- > Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK > . >