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. Stefan