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