Ceph mon_osd_down_out_subtree_limit参数

1、前言

以前跟一个朋友沟通一个其余的问题的时候,发现了有一个参数 mon osd down out subtree limit 一直没有接触到,看了一下这个参数仍是颇有做用的,本篇将讲述这个参数的做用和使用的场景前端

2、测试环境准备

首先配置一个集群环境,配置基本参数测试

mon_osd_down_out_interval = 20

调整这个参数为20s,默认为300s,默认一个osd,down超过300s就会标记为out,而后触发迁移,这个是为了方便尽快看到测试的效果,不少测试都是能够这样缩短测试周期的spa

本次测试关心的是这个参数 mon osd down out subtree limit 
参数,那么这个参数作什么用的,咱们来看看code

[root@lab8106 ceph]# ceph --show-config|grep mon_osd_down_out_subtree_limit
mon_osd_down_out_subtree_limit = rack

首先解释下这个参数是作什么的,这个是控制标记为out的最小子树(bucket),默认的这个为rack,这个可能咱们平时感知不到这个有什么做用,大部分状况下,咱们通常都为主机分组或者作了故障域,也不多作到测试去触发它,本篇文章将告诉你这个参数在什么状况下生效,对咱们又有什么做用blog

准备两个物理节点,每一个节点上3个osd,一共六个osd,上面的down out的时间已经修改成20s,那么会在20s后出现out的状况进程

3、测试过程

3.1 测试默认参数中止一台主机单个OSD

首先用默认的 mon_osd_down_out_subtree_limit = rack 去作测试get

开启几个监控终端方便观察it

ceph -w
watch ceph osd tree

在其中的一台上执行集群

systemctl stop ceph-osd@5

测试输出监控

2016-10-13 10:15:39.673898 mon.0 [INF] osd.5 out (down for 20.253201)
2016-10-13 10:15:39.757399 mon.0 [INF] osdmap e60: 6 osds: 5 up, 5 in

中止一个后正常out

3.2 测试默认参数中止掉一台主机全部osd

咱们再来中止一台主机全部osd

systemctl stop ceph-osd.target

测试输出

2016-10-13 10:17:09.699129 mon.0 [INF] osd.3 out (down for 23.966959)
2016-10-13 10:17:09.699178 mon.0 [INF] osd.4 out (down for 23.966958)
2016-10-13 10:17:09.699222 mon.0 [INF] osd.5 out (down for 23.966958)

能够看到这台主机上的节点所有都正常out了

3.3 测试修改参数后中止一台主机单个OSD

咱们再调整下参数

mon_osd_down_out_subtree_limit = rack

将这个参数设置为host

mon_osd_down_out_subtree_limit = host

重启全部的进程,让配置生效,咱们测试下只断一个osd的时候能不能out

systemctl stop ceph-osd@5

中止掉osd.5

测试输出

2016-10-13 10:48:45.612206 mon.0 [INF] osd.5 out (down for 21.966238)

能够看到能够osd.5能够正常的out

3.4 测试修改参数后中止一台主机全部OSD

咱们再来中止lab8107的全部的osd

systemctl stop ceph-osd.target

中止掉 lab8107 全部的osd,能够看到没有out了,这个是由于把故障out设置为host级别了,这个地方出现host级别故障的时候,就不进行迁移了

4、总结

关键的地方在于总结了,首先咱们要想想,ceph机器的迁移开不开(noout),关于这个问题,必定有两个答案

  • 开,不开的话,盘再坏怎么办,就会丢数据了
  • 不开,人工触发,默认的状况下迁移数据会影响前端业务

这里这个参数其实就是将咱们的问题更加细腻的控制了,咱们如今根据这个参数就能作到,迁移能够开,坏掉一个盘的时候我让它迁移,一个盘的数据恢复影响和时间是能够接受的,主机损坏我不让他迁移,为何?主机损坏你去让他迁移,首先会生成一份数据,等主机好了,数据又要删除一份数据,这个对于磁盘都是消耗,主机级别的故障必定是可修复的,这个地方主机down机,主机电源损坏,这部分数据都是在的,那么这个地方就是须要人工去作这个修复的工做的,对于前端的服务是透明的,默认的控制是down rack才不去标记out,这个固然你也能够控制为这个,好比有个rack掉电,就不作恢复,若是down了两台主机,让他去作恢复,固然我的不建议这么作,这个控制就是本身去判断这个地方须要作不

ceph里面仍是提供了一些细微粒度的控制,值得去与实际的应用场景结合,固然默认的参数已经能应付大部分的场景,控制的更细只是让其变得更好

相关文章
相关标签/搜索