
ceph
布衣小弟
恒
展开
-
ceph——三副本读写流程——1
加入队列 void OSD::ms_fast_dispatch(Message *m) //接受client发送到OSD的请求,并开始处理请求 |—service.is_stopping() //osd服务已经停止的话,则m->put(),nref减计数,计数减到0时? //op的类型是 typedef boost::intrusive_ptr Ref |—O...原创 2018-07-01 15:29:34 · 2307 阅读 · 0 评论 -
ceph——认证——1
当链接建立或者链接异常断开后重新建立时,需要首先执行认证流程。认证流程入口如下:认证分为三个阶段。第一阶段首先MONC发送CEPH_MSG_AUTH到MONMON收到该消息之后处理如下 mon处理完成后需要给MONC返回一个CEPH_MSG_AUTH_REPLY消息,MONC收到该消息后处理如下:...原创 2019-02-23 22:30:34 · 444 阅读 · 0 评论 -
ceph——认证——2
第二阶段mon处理:mon处理完成后再次返回CEPH_MSG_AUTH_REPLY消息给monc,monc处理如下:原创 2019-02-23 22:34:43 · 263 阅读 · 0 评论 -
ceph——认证——3
mon收到第三阶段认证消息后处理如下:mon再次返回认证reply消息给monc,monc处理如下:疑问:1:L版本一个monc会给monmap中所有节点都发送认证消息,怎么确认哪个mon完成认证呢?2:对于链接断开后重新建立的情况,monc的global_id一定为0吗3:认证的第一步是mon分配global_id,如果素有mon同时认证,那么所有mon分配的global_id都一...原创 2019-02-23 22:43:43 · 294 阅读 · 0 评论 -
MON首次_active框架
蓝色字体为重载函数原创 2019-02-25 22:26:41 · 327 阅读 · 0 评论 -
L版本PGMonitor不在使用
在PGMonitor最初的两次paxos之后,did_delete被设置为true。did_delete被设置成为true之后,PGMonitor将不在起作用。原创 2019-02-25 23:09:38 · 182 阅读 · 0 评论 -
ceph——AsyncMessenger类图
以上类图简单的画出了关键类之间的关系,可能存在错误的地方。AsyncMessenger构造打字过程1:生成DispatchQueue对象2:生成AsyncMessenger::stack,该变量为PosixNetworkStack类型指针在其父类NetworkStack构造时,会生成vector<Worker*>成员,Worker*是PosixWorer的父类指针Worker...原创 2019-03-02 22:55:08 · 413 阅读 · 0 评论 -
paxos流程
疑问:为什么一次paxos需要提交两次数据库?buffer_list的结构,t如何去解析以及存储数据?原创 2019-02-26 23:57:53 · 286 阅读 · 0 评论 -
主MON处理创建pool的命令
创建完成pool,才会生成PGMap,下次分析PGMAP流程。创建pool流程最主要的目的是在osdmonitor中的pending_inc中保存数据,而后进行paxos流程。下文首先分析创建pool后,触发的paxos流程。...原创 2019-02-27 00:04:28 · 518 阅读 · 0 评论 -
MON-probe 未完待续
原创 2018-10-10 22:24:49 · 170 阅读 · 0 评论 -
MON消息接收的公共处理
原创 2018-10-10 21:37:21 · 220 阅读 · 0 评论 -
Monitor::preinit
int Monitor::preinit()|---r = sanitize_options() |---g_conf->mon_lease_renew_interval_factor //必须小于1.0 |---g_conf->mon_lease_ack_timeout_factor // 必须大于1.0|---PerfCountersBuilder pcb(g...原创 2018-09-08 19:20:35 · 236 阅读 · 0 评论 -
ceph——三副本读写——2
处理线程void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb)|---auto& sdata = osd->shards[shard_index]; //vector<OSDShard*> shards;|---if (sdata->pqueue->...原创 2018-07-01 21:00:00 · 2053 阅读 · 2 评论 -
ceph——创建pg
CEPH_MSG_OSD_MAP //MON通知OSD创建OSDMap的消息码bool OSD::ms_dispatch(Message *m)|---如果是标记osd down的话,直接返回service.got_stop_ack(), return true|---如果osd已经已经停止服务,则return true|---do_waiters() //li...原创 2018-07-04 00:11:08 · 1271 阅读 · 0 评论 -
ceph——三副本读写——3
PrimaryLogPG::do_op(OpRequestRef& op)|---if (m->finish_decode()) //解码什么?|---hobject_t head = m->get_hobj()// info.pgid.pgid.get_split_bits = unsigned pg_t::get_split_bits(unsigned pg_n...原创 2018-07-04 23:16:00 · 4270 阅读 · 0 评论 -
ceph通信(1)——AsyncMessenger构造
AsyncMessenger(cct, name, type, std::move(lname), nonce); // name = entity_name_t、type = &quot;async+posix&quot;、 lname = &quot;client&quot; nonce = pidentity_name_t::OSD(whoami)|---entity_name_t(TYPE_OSD, i) // s.原创 2018-08-05 10:38:52 · 748 阅读 · 0 评论 -
ceph通信(2)——AsyncMessenger::bind绑定端口
|—ms_public->bind(g_conf->public_addr); // AsyncMessenger::bind(const entity_addr_t &bind_addr) // 入参 bind_addr=”本节点IP:0/0” |—for (auto &&p : processors) |— p->bind...原创 2018-08-05 13:58:10 · 305 阅读 · 0 评论 -
ceph通信(3)——AsyncMessenger启动接收线程
OSD::init |—client_messenger-&gt;add_dispatcher_head(this) // Messenger.h void add_dispatcher_head(Dispatcher *d) |—bool first = dispatchers.empty() // 初始化时dispatcher为空,list原创 2018-08-05 17:08:36 · 387 阅读 · 0 评论 -
AsyncMessager初步
ceph_osd.cc// 创建AsyncMessager对象|---Messenger *ms_public = Messenger::create(g_ceph_context, public_msgr_type, entity_name_t::OSD(whoami), "client", getpid(), Messenger::HAS_HE...原创 2018-08-01 01:15:00 · 272 阅读 · 0 评论 -
ceph——osd——osd new
将osd扩容进集群时,客户端会给mon发送一个osd new的cmd。mon收到该cmd后会给该磁盘分配osdid同时在pending_inc的new_state和new_uuid中记录信息,等待执行一次paxos...原创 2019-03-17 08:51:58 · 483 阅读 · 1 评论