文档章节

Ceph Jewel版本三副本读操作流程

linuxhunter
 linuxhunter
发布于 2016/05/20 14:20
字数 626
阅读 711
收藏 1

一、主OSD读处理流程

OSD::ms_fast_dispatch()

|__OSD::dispatch_session_waiting()

     |__OSD::dispatch_op_fast()

          |__OSD::handle_op()

               |__OSD::get_pg_or_queue_for_pg()           找到OpRequest中对应的PG和Pool信息

               |__OSD::enqueue_op()

                    |__PG::queue_op()

                         |__OSD::ShardedThreadPool::ShardedWQ::queue()     将PG和Op一起放入队列中

 

OSD::ShardedOpWQ::_process()          负责处理OSD::ShardedThreadPool::ShardedWQ队列中的Op

|__PGQueueable::RunVis::operator()(const OpRequestRef &op)

     |__OSD::dequeue_op()

          |__ReplicatedPG::do_request()

               |__检查当前PG是否处于flush或peering状态,若是则将op放入waiting_for_peered队列中等待PG变成可用状态

               |__检查当前PG是否处于Active状态,若不是则将op放入waiting_for_active队列中

               |__检查当前PG是否处于REPLAY状态,若是则将op放入waiting_for_active队列中

               |__ReplicatedPG::do_op()

                    |__RepliatedPG::do_pg_op()               对于请求中包含对PG的操作CEPH_OSD_RMW_FLAG_PGOP

                    |__根据op请求创建hobject_t类对象(head)

                    |__检查对象名字长度/对象locator key长度/对象locator名称空间长度是否大于osd_max_object_name_len

                    |__通过FileStore检查object的head是否有效

                    |__检查op请求地址是否在OSDMap的blacklist中

                    |__对于写请求,检查写请求的数据大小是否大于osd_max_write_size值

                    |__对于op请求的head目前不可读,则将op放入waiting_for_unreadable_object队列中且调用maybe_kick_recovery()函数尝试启动recovery

                    |__ReplicatedPG::is_degraded_or_backfilling_object()          检查当前op请求的head是否处于recovery或backfill状态

                    |__ReplicatedPG::wait_for_degraded_object()                       将当前op请求的head放入waiting_for_degraded_object队列中

                    |__检查head是否在objects_blocked_on_degraded_snap队列中,若是则将当前op请求的head放入waiting_for_degraded_object队列中

                    |__检查head是否在objects_blocked_on_snap_promotion队列中,若是则将当前op请求的head放入waiting_for_blocked_object队列中

                    |__检查head是否在objects_blocked_on_cache_full队列中,若是则将当前op请求的head放入waiting_for_cache_not_full队列中

                    |__检查head的snapdir是否不可读,若是则将head的snapdir放入waiting_for_unreadable_object队列中且调用maybe_kick_recovery()函数尝试启动recovery

                    |__检查head的snapdir是否处于recovery或backfill状态,若是则将head的snapdir放入waiting_for_degraded_object队列中

                    |__对于op写请求已经在PGLog中,则若已经完成了写操作则直接给客户端返回MOSDOpReply消息且设置CEPH_OSD_FLAG_ACK,否则将op放入到waiting_for_ack或waiting_for_ondisk队列中

                    |__ReplicatedPG::find_object_context()               得到object context信息

                    |__检查object context是否处于io blocked状态,若是则将op请求放入到waiting_for_blocked_object或waiting_for_degraded_object队列中

                    |__ReplicatedPG::execute_ctx()     

                         |__ReplicatedPG::prepare_transaction()

                         |__创建MOSDOpReply消息实例

                         |__调用ReplicatePG::complete_read_ctx()     将读操作的结果返回给client端

© 著作权归作者所有

linuxhunter
粉丝 72
博文 144
码字总数 93264
作品 0
沈阳
高级程序员
私信 提问
Ceph Jewel版本三副本写操作流程

一、主OSD写处理流程 OSD::msfastdispatch() __OSD::dispatch_session_waiting() __OSD::dispatch_op_fast() __OSD::handle_op() __OSD::get_pg_or_queue_for_pg() 找到OpRequest中对应的PG和......

linuxhunter
2016/05/20
646
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
2018/07/19
182
0
闲聊Ceph目前在中国的发展&Ceph现状

近年来,大型企业以及开源社区不断的推动中国开源技术的发展,今天的中国已然成为OpenStack & Ceph等开源技术大放光彩的乐土。 图为 Ceph中国行各地沙龙 Ceph国内用户生态 Ceph作为全球最火热...

Devin
2017/06/01
0
0
Ceph集群由Jewel版本升级到Luminous版本

参考文档 https://www.virtualtothecore.com/en/upgrade-ceph-cluster-luminous/ http://www.chinastor.com/distristor/11033L502017.html 缘起 首先看之前安装版本链接及测试 http://blog.......

minminmsn
2018/07/11
0
0
闲聊Ceph目前在中国的发展Ceph现状

近年来,大型企业以及开源社区不断的推动中国开源技术的发展,今天的中国已然成为OpenStack & Ceph等开源技术大放光彩的乐土。 图为 Ceph中国行各地沙龙 Ceph国内用户生态 Ceph作为全球最火热...

三石头
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安全组和云防火墙的区别

前言 熟悉云平台的朋友可能都会注意到这样一个事情:无论公有云还是私有云,创建虚拟机的时候都需要选择安全组,来对虚拟机进行安全防护;有的云平台在VPC里,还能选择防火墙,ZStack在3.6版...

ZStack社区版
25分钟前
2
0
教育性app开发的重要性和好处

在这个精通技术的世界中,流行的app主导着无聊的教育系统。当我们将技术和教育结合在一起时,它将带来当代以及强大的学习资源。因此,将教育移动app集成到您的学习过程中,并根据自己的信念把...

a429011717
26分钟前
3
0
IE6/7/8如何兼容CSS3属性

本文转载于:专业的前端网站➩IE6/7/8如何兼容CSS3属性 最近在工作中总是要求IE8兼容CSS3属性,在网上搜了搜主要是引入了一个htc文件(ie-css3.htc或者PIE.htc。个人认为这两个文件的作用差不...

前端老手
41分钟前
3
0
手把手教你ALLEGRO的约束规则的设置教程!

约束规则的设置 分三步, 定义规则(一、基本约束规则设置:1、线间距设置;2、线宽设置;3、设置过孔;4、区域约束规则设置;5、设置阻抗;6、设置走线的长度范围;7、设置等长:7.1、不过电阻的NET 等...

demyar
43分钟前
4
0
完美解决H5滚动滑动穿透方案:不使用系统滚动

网上有很多黑科技解决这个问题,都不是从根本去解决,例如通过js控制弹出时html加上position:fixed; 弹窗关闭后再去掉该样式,总觉得不太对,像是打补丁。 今天终于找到了滚动穿透的原因和完...

未来cc
48分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部