ceph中有n个节点构成了monitor,这些monitor 形成了一个monmap,表示了这些monitor的逻辑关系。
ceph通过paxos协议来管理这些monitor,在monitor端有如下功能的monitor:
通过init_paxos来初始化这些monitor,monitor的类型如下:
#define PAXOS_PGMAP 0 // before osd, for pg kick to behave
#define PAXOS_MDSMAP 1
#define PAXOS_OSDMAP 2
#define PAXOS_LOG 3
#define PAXOS_MONMAP 4
#define PAXOS_AUTH 5
#define PAXOS_NUM 6
由此可以看出,ceph 的monitor上有5个子monitor:pgmonitor,mdsmonitor,osdmonitor,logmonitor,monmap。每个monitor都继承了paxosservice类。
void Monitor::init_paxos()
{
dout(10) << __func__ << dendl;
paxos->init();
// init services
for (int i = 0; i < PAXOS_NUM; ++i) {
paxos_service[i]->init(); //在这里调用每一个monitor的init方法。
}
refresh_from_paxos(NULL);
}
阅读(5400) | 评论(0) | 转发(0) |