osd流程

作者: andyzyao | 来源:发表于2017-06-08 10:52 被阅读0次

接上次说到的objecter的流程,现在看下文件的写入在osd侧的流程。

OSD::ms_fast_dispatch -> OSD::enqueue_op,enqueue_op会把请求入到op_shardedwq的队列中,op_shardedwq是一个按照pg做sharded的多线程的任务队列,其中每个队列的任务也是有多个线程在执行的,相关配置有: osd_op_num_shards、osd_op_num_threads_per_shard。

op_sharededwq里的请求,最终由OSD::ShardedOpWQ::_process来进行处理。
这里用到了boost::static_visitor模式,用这种方式来实现多态。
调用的方法实际上是这个:
void PGQueueable::RunVis::operator()(const OpRequestRef &op) {
return osd->dequeue_op(pg, op, handle);
}

然后是 pg->do_request(op, handle);
在然后void PrimaryLogPG::do_request( OpRequestRef& op, ThreadPool::TPHandle &handle)
注意,在这一步有判断pg的状态,如果pg不是active并且peered的话,请求会加到waiting_for_peered等待队列里,等pg状态正常了才会处理:

  if (!is_peered()) {
    // Delay unless PGBackend says it's ok
    if (pgbackend->can_handle_while_inactive(op)) {
      bool handled = pgbackend->handle_message(op);
      assert(handled);
      return;
    } else {
      waiting_for_peered.push_back(op);
      op->mark_delayed("waiting for peered");
      return;
    }
  }

后面PrimaryLogPG::do_op(OpRequestRef& op)
PrimaryLogPG::execute_ctx
然后这里进行事务相关的处理。

PrimaryLogPG::execute_ctx里会调用prepare_transaction,然后再调用issue_repop,在issue_repop里调用了pgbackend->submit_transaction。

相关文章

  • CEPH 心跳机制osd-heartbeat

    osd heartbeat流程分析:从ceph_osd.cc开始, 也就是ceph-osd服务启动开始: hb_b...

  • osd流程

    接上次说到的objecter的流程,现在看下文件的写入在osd侧的流程。 OSD::ms_fast_dispatc...

  • 删除osd

    3、删除osd 删除上面创建的osd。 ceph osd outsystemctl stop ceph-osd@c...

  • ceph osd

    删除osd 将特定osd out,out之后,ceph开始重新平衡,拷贝此osd上数据到其它osd,此osd状态变...

  • ceph osd 部署

    配置文件中添加osd模块 生成uuid作为osd ID 创建osd实例 创建osd目录 创建osd文件系统 添加o...

  • ceph数据恢复—系统盘故障,如何恢复集群

    1将osd从crush中删除,并删除对应的osd,和auth,host ceph osd crush rm osd...

  • 删除osd

    ceph修复osd为down的情况 尝试一、直接重新激活所有osd 1、查看osd树 发现osd.1是down掉的...

  • 分布式存储ceph——(3)ceph 添加/删除osd

    一、添加osd: 当前ceph集群中有如下osd,现在准备新添加osd: (1)选择一个osd节点,添加好新的硬盘...

  • 维护ceph的15条关键命令

    1、ceph osd tree 2、ceph osd df 3 ceph osd dump从osdmap中获取信息...

  • Ceph 移除OSD

    针对osd是一整块硬盘的情况针对osd是一整块硬盘的情况针对osd是一整块硬盘的情况 删除OSD(手动) 找到os...

网友评论

      本文标题:osd流程

      本文链接:https://www.haomeiwen.com/subject/vemzfxtx.html