ceph osd pool创建池子命令解析

1、执行创建池子命令:ceph osd pool create 128 128

注意此处创建池子命令和rados创建池子命令的流程完全不同。ceph命令调用librados接口向mon发送命令。

ceph 命令中大部分都是发送给mon的(MonCommands.h中),只有很少一部分直接发送给osd或者pg。

暂时未详细分析哪些命令是发送给osd和pg的。

2、Mon收到消息,在_ms_dispatch函数中进行处理。_ms_dispatch -> dispatch_op中处理客户端的command:

   case MSG_MON_COMMAND:

     op->set_type_command();

     handle_command(op);

handle_command中,发送给OSDMonitor进行处理:

 if (module == "osd") {
   osdmon()->dispatch(op);
   return;
  }

3、OSDMonitor处理消息,并创建池子

4、OSDMonitor的变化影响到了PGMonitor(paxos_service),PGMonitor中,post_paxos_update --> check_subs -> preprocess_query -> preprocess_pg_stats

PaxosService::dispatch -> prepare_update -> prepare_pg_stats

prepare_pg_stats函数通过pg_stats_have_changed函数检测到底层池子发生变化,然后调用send_pg_creates,发送了MOSDPGCreate消息。

4、OSD收到MSG_OSD_PG_CREATE消息,然后通过handle_pg_create函数创建pg。

大致流程:ceph命令->Monitor->OSDMonitor->PGMonitor->OSD

转载于:https://my.oschina.net/itfanr/blog/1649298

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值