共計 2327 個字符,預計需要花費 6 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 ceph placement group 狀態有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一、歸置組狀態
1. Creating
創建存儲池時, 它會創建指定數量的歸置組。ceph 在創建一或多個歸置組時會顯示 creating; 創建完后, 在其歸置組的 Acting Set 里的 OSD 將建立互聯; 一旦互聯完成, 歸置組狀態應該變為 active+clean, 意思是 ceph 客戶端可以向歸置組寫入數據了。
2. peering
ceph 為歸置組建立互聯時, 會讓存儲歸置組副本的 OSD 之間就其中的對象和元數據狀態達成一致。ceph 完成了互聯, 也就意味著存儲著歸置組的 OSD 就其當前狀態達成了一致。然而, 互聯過程的完成并不能表明各副本都有了數據的最新版本。
3. active
ceph 完成互聯進程后, 一歸置組就可變為 active。active 狀態通常意味著在主歸置組和副本中的數據都可以讀寫。
4. clean
某一歸置組處于 clean 狀態時, 主 OSD 和副本 OSD 已成功互聯, 并且沒有偏離的歸置組。ceph 已把歸置組中的對象復制了規定次數。
5. degraded
當客戶端向主 OSD 寫入數據時, 由主 OSD 負責把副本寫入其余復制 OSD。主 OSD 把對象寫入復制 OSD 后, 在沒收到成功完成的確認前, 主 OSD 會一直停留在 degraded 狀態。
歸置組狀態可以是 active+degraded 狀態, 原因在于一 OSD 即使沒所有對象也可以處于 active 狀態。如果一 OSD 掛了,ceph 會把相關的歸置組都標記為 degraded; 那個 OSD 重生后, 它們必須重新互聯。然而, 如果歸置組仍處于 active 狀態, 即便它處于 degraded 狀態, 客戶端還可以向其寫入新對象。
如果一 OSD 掛了, 且 degraded 狀態持續,ceph 會把 down 的 OSD 標記為在集群外(out)、并把那些 down 掉的 OSD 上的數據重映射到其它 OSD。從標記為 down 到 out 的時間間隔由 mon osd down out interval 控制, 默認是 300 秒。
歸置組也會被降級(degraded), 因為歸置組找不到本應存在于歸置組中的一或多個對象, 這時, 你不能讀或寫找不到的對象, 但仍能訪問其它位于降級歸置組中的對象。
6. recovering
ceph 被設計為可容錯, 可抵御一定規模的軟、硬件問題。當某 OSD 掛了 (down) 時, 其內容版本會落后于歸置組內的其它副本; 它重生 (up) 時, 歸置組內容必須更新, 以反映當前狀態; 在此期間,OSD 在 recovering 狀態。
恢復并非總是這些小事, 因為一次硬件失敗可能牽連多個 OSD。比如一個機柜的網絡交換機失敗了, 這會導致多個主機落后于集群的當前狀態, 問題解決后每一個 OSD 都必須恢復。
ceph 提供了很多選項來均衡資源競爭, 如新服務請求、恢復數據對象和恢復歸置組到當前狀態。osd recovery delay start 選項允許一 OSD 在開始恢復進程前, 先重啟、重建互聯、甚至處理一些重放請求;osd recovery threads 選項限制恢復進程的線程數, 默認為 1 線程;osd recovery thread timeout 設置線程超時, 因為多個 OSD 可能交替失敗、重啟和重建互聯;osd recovery max active 選項限制一 OSD 最多同時接受多少請求, 以防它壓力過大而不能正常服務;osd recovery max chunk 選項限制恢復數據塊尺寸, 以防網絡擁塞。
7. back filling
有新 OSD 加入集群時,CRUSH 會把現有集群內的歸置組重分配給它。強制新 OSD 立即接受重分配的歸置組會使之過載, 用歸置組回填可使這個過程在后臺開始。回填完成后, 新 OSD 準備好時就可以對外服務了。
8. remapped
某一歸置組的 Acting Set 變更時, 數據要從舊集合遷移到新的。主 OSD 要花費一些時間才能提供服務, 所以它可以讓老的主 OSD 持續服務、直到歸置組遷移完。數據遷移完后, 主 OSD 會映射到新 acting set。
9. stale
雖然 ceph 用心跳來保證主機和守護進程在運行, 但是 ceph-osd 仍有可能進入 stuck 狀態, 它們沒有按時報告其狀態 (如網絡瞬斷)。默認,OSD 守護進程每半秒(0.5) 會一次報告其歸置組、出流量、引導和失敗統計
狀態, 此頻率高于心跳閥值。如果一歸置組的主 OSD 所在的 acting set 沒能向監視器報告、或者其它監視器已經報告了那個主 OSD 已 down, 監視器們就會把此歸置組標記為 stale。啟動集群時, 會經常看到 stale 狀態, 直到互聯完成。集群運行一陣后, 如果還能看到有歸置組位于 stale 狀態, 就說明那些歸置組的主 OSD 掛了(down)、或沒在向監視器報告統計信息。
二、找出故障歸置組
一般來說, 歸置組卡住時 ceph 的自修復功能往往無能為力, 卡住的狀態細分為:
1. unclean
不干凈: 歸置組里有些對象的復制數未達到期望次數, 它們應該在恢復中。
2. inactive
不活躍: 歸置組不能處理讀寫, 因為它們在等著一個持有最新數據的 OSD 再次進入 up 狀態。
3. stale
發蔫: 歸置組們處于一種未知狀態, 因為存儲它們的 OSD 有一陣子沒向監視器報告了(由 mon osdreport timeout 配置)。
為找出卡住的歸置組, 執行:
ceph pg dump_stuck [unclean|inactive|stale]
以上是“ceph placement group 狀態有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!