qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 5/6] replication: Implement block replication


From: Hailiang Zhang
Subject: Re: [Qemu-devel] [PATCH v3 5/6] replication: Implement block replication for shared disk case
Date: Tue, 7 Mar 2017 22:30:30 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

Hi Stefan,

Sorry for the delayed reply.

On 2017/2/28 1:37, Stefan Hajnoczi wrote:
On Fri, Jan 20, 2017 at 11:47:59AM +0800, zhanghailiang wrote:
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 is created automatically. It 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 buffer.

Signed-off-by: zhanghailiang <address@hidden>
Signed-off-by: Wen Congyang <address@hidden>
Signed-off-by: Zhang Chen <address@hidden>

Are there any restrictions on the shared disk?  For example the -drive
cache= mode must be 'none'.  If the cache mode isn't 'none' the
secondary host might have old data in the host page cache.  The

While do checkpoint, we will call vm_stop(), in which, the bdrv_flush_all()
will be called, is it enough ?

Secondary QEMU would have an inconsistent view of the shared disk.

Are image file formats like qcow2 supported for the shared disk?  Extra

In the above scenario, it has no limitation of formats for the shared disk.

steps are required to achieve consistency, see bdrv_invalidate_cache().


Hmm, in that case, we should call bdrv_invalidate_cache_all() while checkpoint.


Thanks,
Hailiang

Stefan





reply via email to

[Prev in Thread] Current Thread [Next in Thread]