記5.1假期故障處理,苦逼的運(yùn)維人
故障現(xiàn)象
虛擬化平臺(tái)部分虛擬機(jī)顯示CPU hung死,ssh登錄異常,測(cè)試環(huán)境服務(wù)異常。如下圖所示:登錄查看對(duì)應(yīng)存儲(chǔ)集群狀況,發(fā)現(xiàn)osd都正常,只有1個(gè)PG處于recovering狀態(tài),并沒有down掉的osd,但是有好多阻塞的慢請(qǐng)求:
排查osd性能,發(fā)現(xiàn)有一個(gè)osd的讀取和寫入時(shí)延都特別高
fs_commit_latency
寫入延遲時(shí)間,表示寫journal的完成時(shí)間(毫秒)
fs_apply_latency
讀取延遲,表示寫到osd的buffer cache里的完成時(shí)間(毫秒)
通過(guò)ceph daemon osd.64 dump_historic_ops
查看這個(gè)osd上所有client的op的時(shí)延duration,確實(shí)存在處理時(shí)間較高的情況
通過(guò)smartctl -a /dev/sdi
查看硬盤的壽命,確認(rèn)ssd盤壽命已不足
在獲取到硬盤的SMART值(VALUE)后我們就可以通過(guò)與THRESH值比對(duì)來(lái)獲得硬盤當(dāng)前的健康情況。其中重點(diǎn)關(guān)注以下幾個(gè)值。
Re-allocatedSector Count(5h)
定義:此屬性的原始值顯示自離開工廠以來(lái)壞塊數(shù)量(已增長(zhǎng)的缺陷計(jì)數(shù))。VALUE值初始100,閾值0。接近0時(shí)表示硬盤即將失效。
AvailableReserved Space(AA)
報(bào)告剩余的保護(hù)區(qū)數(shù)量。
規(guī)范化值從100 (64h)開始,這相當(dāng)于保留空間的100%可用性。此屬性的閾值為10%可用性。VALUE值初始100,閾值10,低于10硬盤失效。
End to End Error Detection Count(B8)
Intel第二代的34nm固態(tài)硬盤有點(diǎn)到點(diǎn)錯(cuò)誤檢測(cè)計(jì)數(shù)這一項(xiàng)。固態(tài)硬盤里有一個(gè)LBA(logical block addressing,邏輯塊地址)記錄,這一項(xiàng)顯示了SSD內(nèi)部邏輯塊地址與真實(shí)物理地址間映射的出錯(cuò)次數(shù)。 VALUE值初始100,閾值90,低于90硬盤直接故障。
Current PendingSector Count(C5)
數(shù)據(jù)應(yīng)為0,當(dāng)前值應(yīng)遠(yuǎn)大于臨界值。這個(gè)參數(shù)的數(shù)據(jù)表示了“不穩(wěn)定的”扇區(qū)數(shù),即等待被映射的扇區(qū)(也稱“被掛起的扇區(qū)”)數(shù)量。如果不穩(wěn)定的扇區(qū)隨后被讀寫成功,該扇區(qū)就不再列入等待范圍,數(shù)據(jù)值就會(huì)下降。VALUE值初始100,閾值0,接近0時(shí)表示硬盤即將失效。
Media_Wearout_Indicator(E9h)
value表示NAND壽命百分比,降低為1后表示NAND已經(jīng)寫穿. VALUE值初始100,閾值0,接近0時(shí)表示硬盤即將失效。
UDMA_CRC Error Count
故障修復(fù)
-
先調(diào)整參數(shù)osd_pool_default_min_size恢復(fù)客戶端讀寫
按照我們集群的統(tǒng)一配置,這個(gè)參數(shù)應(yīng)該是小于osd_pool_default_size參數(shù)的,所以排查下為什么沒有生效
ceph生效min_size
結(jié)果顯示osd_pool_default_min_size為0,實(shí)際查看存儲(chǔ)池生效參數(shù)存儲(chǔ)池生效參數(shù)
為什么會(huì)有區(qū)別呢,查看相關(guān)資料
1.如果ceph.conf里面osd_pool_default_min_size=0,那么創(chuàng)建pool的時(shí)候min_size=(副本數(shù)-副本數(shù)/2的整數(shù)),也即min_size=(3-取整(3/2))=2
2.如果ceph.conf里面osd_pool_default_min_size不為0,那么min_size=min(min_size, 副本數(shù)),例如ceph.conf的min_size配置為1,那么min_size=在(1,3)中取個(gè)小的數(shù) =1
執(zhí)行ceph osd pool set ssd min_size 1
調(diào)整為1
2.調(diào)整osd reweight,讓pg不再分配讀寫到這個(gè)osd
ceph osd reweight 64 0
3.等待集群最終恢復(fù)health: HEALTH_OK
故障處理完成,回去接著睡覺,醒來(lái)再寫文檔.....
參考文檔
[1].osd_pool_default_min_size配置(https://blog.csdn.net/a1454927420/article/details/98080139)
[2].osd時(shí)延較高(http://www.strugglesquirrel.com/2020/10/30/ceph%E8%BF%90%E7%BB%B4%E5%A4%A7%E5%AE%9D%E5%89%91%E4%B9%8Bosd%E5%BB%B6%E6%97%B6%E8%B0%83%E6%9F%A5/)
[3].ssd盤故障判斷(https://blog.csdn.net/liudalab/article/details/79485646)
[4].ceph的weight和reweight的理解(https://blog.csdn.net/qq_40017427/article/details/107401851)