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裏面仍是提供了一些細微粒度的控制,值得去與實際的應用場景結合,固然默認的參數已經能應付大部分的場景,控制的更細只是讓其變得更好

相關文章
相關標籤/搜索