共計 3615 個字符,預計需要花費 10 分鐘才能閱讀完成。
這篇文章主要為大家展示了“Ceph 中的 Placement Group 狀態有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“Ceph 中的 Placement Group 狀態有哪些”這篇文章吧。
Placement Group(PG)的狀態有:
Creating
Peering
Activating
Active
Backfilling
Backfill-toofull
Backfill-wait
Incomplete
Inconsistent
Peered
Recovering
Recovering-wait
Remapped
Scrubbing
Unactive
Unclean
Stale
Undersized
Down
它們的含義、原因、后果、解決方案(對于非正常狀態)如下:Creating
含義:PG 正在創建
引起原因:創建 pool 的時候,根據指定的 pg 數量進行創建 pg 時出現的狀態,正常狀態
后果:無
解決方案:無需解決,正常狀態之一
Peering
含義:PG 之間進行互聯,就其中的對象和元數據狀態達成一致
引起原因:當 pg 被 creating 之后,會進行互聯,存儲歸置組副本的 OSD 之間就其中的對象和元數據狀態達成一致。
后果:無
解決方案:無需解決,正常狀態之一
Activating
含義:pg 在完成 peering 過程后,會對之前的結果進行固化,等待所有 pg 同步,嘗試進入 active 狀態
引起原因:pg 進入 active 前的準備狀態
后果:如果長期卡在該狀態,會影響該 PG 無法讀寫,進而影響整個 pool 可用性
解決方案:
停掉 PG 所在所有 OSD
用 ceph-object-tool 進行 pg 數據備份
用 ceph-object-tool 在主 PG 上刪除空的 pg(不要手動刪除)
再次使用 ceph-object-tool 導入數據
手動給該 pg 目錄賦 ceph 權限
最后重啟 osd
Active
含義:pg 是活躍態,可以進行讀寫操作
引起原因:正常狀態
后果:無
解決方案:無需解決,正常狀態之一
Backfilling
含義:回填狀態
引起原因:這種情況一般是由于 osd 的離線(超過 5 分鐘沒有心跳回應),ceph 找尋新的 osd 來替換所進行的全量數據拷貝。
后果:出現這個狀態一般都是確定有 osd 掛掉或者離線了
解決方案:多數情況下 ceph 會自動完成數據回填,如果無法完成回填,就會進入 backfill-toofull 狀態
Backfill-toofull
含義:backfilling 掛起狀態
引起原因:通常是因為 osd 容量不足以回填丟失的 osd 引起
后果:造成 pool 無法寫入,讀寫卡死。
解決方案:
需要檢查 osd 容量,是否有嚴重不平衡現象,將超量 osd 數據手動疏散(reweight),如果是集群 nearful 現象,應該盡快物理擴容
緊急擴容方式(治標不治本,最好的方法還是擴展 osd 數量和容量)
暫停 osd 讀寫:
ceph osd pause
通知 mon 和 osd 修改 full 閾值
ceph tell mon.* injectargs --mon-osd-full-ratio 0.96
ceph tell osd.* injectargs --mon-osd-full-ratio 0.96
通知 PG 修改 full 閾值:
ceph pg set\_full\_ratio 0.96
解除 osd 禁止讀寫:
ceph osd unpause
Backfill-wait
含義:PG 正在等待開始回填操作。
引起原因:OSD 離線造成(未親自捕獲該狀態,可能是太快了沒看到)
后果:接下來理論來講 pg 會進入 backfilling 狀態進行數據回填
解決方案:正常的回填必經狀態,無需特殊關注
Incomplete
含義:peering 過程中發現無法就數據狀態達成一致
引起原因:pg 在選擇權威日志的時候,權威日志沒法完成,或者權威日志完成后和本地日志對比邏輯不正常
后果:通常會導致 pg 無法創建,卡在 creating+incomplete 狀態,進而導致 pool 無法使用
解決方案:
首先確認 osd_allow_recovery_below_min_size 為 true,還有副本數量是否合理,crushmap 配置的選取 osd 數量是否與 pool 一致,如果都正常,嘗試執行以下恢復流程
停掉所有 incomplete 的 PG 對應的每一個 osd
使用 ceph-object-tool 對 osd 進行 mark complete
然后重啟 osd
Inconsistent
含義:其實就是副本數據不一致的意思
引起原因:某個副本數據未知原因丟失
后果:副本數據不一致導致安全性下降
解決方案:
使用 ceph pg repair 工具進行數據修復,一般情況下都可以恢復正常,如果無法恢復
把三副本的 osd 的 osd_max_scrubs 都先調大, 再次使用使用 ceph pg repair 工具進行數據修復,最后再將 osd_max_scrubs 調回 1
Peered
含義:搜索中,指的是 PG 找不到足夠的副本來進行讀寫操作(連 min_size 都無法滿足的情況下)
引起原因:多個 osd 掛掉,造成當前活躍 osd 副本數 min_size,讀寫功能鎖死
后果:pg 無法使用,甚至 pool 無法進行常規 io
解決方案:
集群健康狀態下,osd 掛掉超過 5 分鐘會自動 remapped 修復該狀態,想要快速修復該狀態方法有二:
1 嘗試啟動副本 osd,重新加入集群,peered 會自動消失
2 主動 out 掉失聯的 osd,ceph 會自動進入修復狀態
Recovering
含義:恢復中
引起原因:當某 OSD 掛了(down)時,其內的歸置組會落后于別的歸置組副本;此 OSD 重生(up)時,歸置組內容必須更新到當前狀態;
后果:恢復并非總是這些小事,因為一次硬件失敗可能牽連多個 OSD。比如一個機柜或房間的網絡交換機失敗了,這會導致多個主機上的 OSD 落后于集群的當前狀態,故障恢復后每一個 OSD 都必須恢復。
解決方案:集群出現這個狀態,說明 PG 正在自動恢復,等它恢復完成就好了。
Recovering-wait
含義:等待 Recovery 資源預留
引起原因:PG 正在等待恢復。
后果:理論來講 pg 會進入 recovering 狀態進行數據恢復
解決方案:正常的恢復狀態。
Remapped
含義:重新映射態
引起原因:當 Acting 集合里面的 PG 組合發生變化時,數據從舊的集合遷移到新的集合中。這段時間可能比較久,新集合的主 OSD 在遷移完之前不能響應請求。所以新主 OSD 會要求舊主 OSD 繼續服務指導 PG 遷移完成。一旦數據遷移完成,新主 OSD 就會生效接受請求。
后果:如果無法重新映射,數據就無法進行遷移,會造成數據的丟失。
解決方案:
在 OSD 掛掉或者在擴容的時候 PG 上的 OSD 會按照 Crush 算法重新分配 PG 所屬的 osd 編號。并且會把 PG Remap 到別的 OSD 上去。
Remapped 狀態時,PG 當前 Acting Set 與 Up Set 不一致。
客戶端 IO 可以正常讀寫。
Scrubbing
含義:清理中
引起原因:pg 正在做不一致性校驗。
后果:會造成 IO 性能下降
解決方案:可以根據實際環境需求,關閉該功能或者降低自檢頻率。
Unactive
含義:非活躍態,PG 不能處理讀寫請求
引起原因:PG 很長時間沒有顯示為 acitve 狀態, (不可執行讀寫請求), PG 不可以執行讀寫,
后果:PG 不可以執行讀寫
解決方案:等待 OSD 更新數據到最新的備份狀態
Unclean
含義:非干凈態,PG 不能從上一個失敗中恢復
引起原因:歸置組里有些對象的副本數未達到期望次數,它們應該在恢復中;
后果:數據安全性下降
解決方案:通常都要執行恢復操作
Stale
含義:為刷新態,pg 沒有被任何 osd 更新
引起原因:很可能是 osd 掛掉引起的,一般情況下跟隨 peering 狀態一起出現
模擬:手動停掉一個 osd,systemctl stop ceph-osd,查看 ceph -s 會發現在短時間內(peering 之前),pg 會進入 stale+clean+active 的特殊狀態
后果:警告標志,往往代表著 osd 出現異常,或者某節點斷網。
解決方案:一般情況下只需要等待 peering 完成即可。
Undersized
含義:副本數過小
引起原因:該 PG 的副本數量小于存儲池所配置的副本數量。通常是由于一個 osd 服務 down 了,出現此狀態。
后果:降低數據可用性
解決方案:調整 PG 所在池的副本數 osd pool default min size =1,不建議調整。等 osd 服務起來就好了
Down
含義:失效
引起原因:歸置組的權威副本 OSD 宕機,必須等待其開機,或者被標記為 lost 才能繼續
后果:這個時候該 PG 不能提供客戶端 IO 讀寫,IO 會掛起夯住
解決方案:將 OSD 服務起來。
以上是“Ceph 中的 Placement Group 狀態有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!