On 2016/11/22 18:33, Stefan Hajnoczi wrote:
On Thu, Oct 20, 2016 at 09:57:33PM +0800, zhanghailiang wrote:
COLO block replication doesn't support the shared disk case,
Here we try to implement it.

Just as the scenario of non-shared disk block replication,
we are going to implement block replication from many basic
blocks that are already in QEMU.
The architecture is:

          virtio-blk                     ||                               
.----------
              /                          ||                               | 
Secondary
             /                           ||                               
'----------
            /                            ||                                 
virtio-blk
           /                             ||                                     
 |
           |                             ||                               
replication(5)
           |                    NBD  -------->   NBD   (2)                      
 |
           |                  client     ||    server ---> hidden disk <-- 
active disk(4)
           |                     ^       ||                      |
           |              replication(1) ||                      |
           |                     |       ||                      |
           |   +-----------------'       ||                      |
          (3)  |drive-backup sync=none   ||                      |
--------. |   +-----------------+       ||                      |
Primary | |                     |       ||           backing    |
--------' |                     |       ||                      |
           V                     |                               |
        +-------------------------------------------+            |
        |               shared disk                 | <----------+
        +-------------------------------------------+
1) Primary writes will read original data and forward it to Secondary
    QEMU.
2) The hidden-disk will buffers the original content that is modified
    by the primary VM. It should also be an empty disk, and
    the driver supports bdrv_make_empty() and backing file.
3) Primary write requests will be written to Shared disk.
4) Secondary write requests will be buffered in the active disk and it
    will overwrite the existing sector content in the buffe

This design looks good.  I have not reviewed the patches in detail but
will review the next revision.


Thanks very much, I'll update it with the recent upstream. :)

Stefan



Reply via email to