Re: [RFC] mon manage client cache info for rwl replication

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

 



Update the framework diagram since the orginal diagram maybe not shown
correctly in the browser or some APP:
https://gist.github.com/changchengx/67694841d9559debf5bbf31a16d5bd0d

On 09:11 Fri 26 Mar, Liu, Changcheng wrote:
> Hi all,
>     This email talks about how to design
>     1) ReplicaDaemon:
>        The daemon, running on the host with DCPMM & RNIC(RDMA-NIC),
>        reports what kind of info to Ceph/Monitor.
>     2) ReplicaMonitor:
>        ReplicaMonitor, one new PaxosService in Ceph/Monitor, manage the
>        ReplicaDaemons' info and deal with librbd's request to select
>        the appropriate ReplicaDaemons' info to librbd.
> 
>     This email doesn't talk about:
>     After librbd get the ReplicaDaemons' info, how librbd will communite
>     with ReplicaDaemon and how to finish the replication.
> 
>     RFC PR: [WIP] aggregate client state and route info
>     https://github.com/ceph/ceph/pull/37931
> 
>     Detail:
>     +-----------------------------------+  +-----------------------------------------------+
>     |+---------------------------------+|  |                         +--------------------+|
>     || ReplicaDaemonInfo:              ||  |                         |PaxosServiceMessage ||
>     ||                                 ||  |+---------------------------------------------+|
>     || daemon_id;                      ||  ||MReplicaDaemonBlink(MSG_REPLICADAEMON_BLINK):||
>     || rnic_bind_port;                 ||  ||                                             ||
>     || rnic_addr;                      ||  ||ReplicaDaemonInfo;                           ||
>     || free_size;                      ||  |+---------------------------------------------+|
>     |+---------------------------------+|  |                         +--------------------+|
>     |+---------------------------------+|  |                         |PaxosServiceMessage ||
>     || ReqReplicaDaemonInfo:           ||  |+---------------------------------------------+|
>     ||                                 ||  ||MMonGetReplicaDaemonMap(CEPH_MSG_MON_GET_REPL||
>     || replicas;                       ||  ||ICADAEMONMAP):                               ||
>     || replica_size;                   ||  ||                                             ||
>     |+---------------------------------+|  ||ReqReplicaDaemonInfo;                        ||
>     |+---------------------------------+|  |+---------------------------------------------++
>     || ReplicaDaemonMap:               ||  |                                      +-------+|
>     ||                                 ||  |                                      |Message||
>     || std::vector<ReplicaDaemonInfo>; ||  |+---------------------------------------------+|
>     |+---------------------------------+|  ||MReplicaDaemonMap(CEPH_MSG_REPLICADAEMON_MAP)||
>     |   MetaData(need encode/decode)    |  ||                                             ||
>     |                                   |  ||                                             ||
>     |                                   |  ||ReplicaDaemonMap;                            ||
>     |                                   |  |+---------------------------------------------+|
>     |                                   |  |                                               |
>     |                                   |  |    Three messages defined for the MetaData    |
>     +-----------------------------------+  +-----------------------------------------------+
>                  +--------+                                                 +------------+
>                  |Dispatch|                                                 |PaxosService|
>     +---------------------+    Update ReplicaDaemonInfo      +---------------------------+
>     | ReplicaDaemon:      |            through               | ReplicaMonitor:           |
>     |                     |      MReplicaDaemonBlink         |                           |
>     | ReplicaDaemonInfo;  -----------------------------------> ReplicaDaemonMap;         |
>     |                     |                                  |                           |
>     | ms_dispatch;        |                                  | //Need implement some APIs|
>     +---------------------+                                  +------^-------------|------+
>                                                 Request ReplicaDaemonMap  Feedback ReplicaDaemonMap
>                                                        through      |             |through
>                                                 MMonGetReplicaDaemonMap       MReplicaDaemonMap
>                                                              +------|-------------v------+
>                                                              |          librbd           |
>                                                              +---------------------------+
>     ReplicaDaemon reports ReplicaDaemonInfo to ReplicaMonitor by MReplicaDaemonBlink message.
> 
>     ReplicaMonitor store all the ReplicaDaemonInfo into ReplicaDaemonMap after going through Paxos.
> 
>     The client(librbd) send MMonGetReplicaDaemonMap to ReplicaMonitor, ReplicaMonitor will
>     choose the approprite ReplicaDaemon and pack all the info to new ReplicaDaemonMap to send
>     back to the client by MReplicaDaemonMap message;
>     
> B.R.
> Changcheng
> _______________________________________________
> Dev mailing list -- dev@xxxxxxx
> To unsubscribe send an email to dev-leave@xxxxxxx
_______________________________________________
Dev mailing list -- dev@xxxxxxx
To unsubscribe send an email to dev-leave@xxxxxxx



[Index of Archives]     [CEPH Users]     [Ceph Devel]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux