當前位置:
首頁 >
ceph中使用ceph-objectstore-tool将pg从incomplete标记为complete
發布時間:2023/11/27
64
豆豆
生活随笔
收集整理的這篇文章主要介紹了
ceph中使用ceph-objectstore-tool将pg从incomplete标记为complete
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
起始原因是集群中部分osd元數據丟失,導致集群部分pg狀態一直為incomplete,從而無法恢復為activate+clean
所以同事介紹之前調研得ceph-objectstore-tool工具來做這樣一個pg incomplete狀態的恢復
普及一下incomplete狀態表示:Peering過程中由于無法選出權威日志或者通過choos_acting選出的acting不足以完成數據恢復,(例如針對糾刪碼,存活的副本數小于k值)等,導致Peering無法正常完成。即pg元數據丟失,無法恢復pg狀態
操作如下:
- 停止出現問題資源池的所有osd
systemctl stop ceph-osd@id - 先獲取當前osd的所有pg數目
ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0/ --op list-pgs
如下3.f7s4 3.f6s1 3.f4s1 3.f2s2 3.ecs3 3.ebs3 3.eas0 3.e0s3 3.des2 3.dbs4 3.d7s0 2.fd 3.d0s1 2.f7 3.5es3 2.f6 - 針對每一個pg進行狀態標記
ceph-objectstore-tool --pgid 6.22 --op mark-complete --data-path /var/lib/ceph/osd/ceph-0/ --type bluestore - 完成所有pg狀態的標記之后重啟osd
systemctl start ceph-osd@id
針對以上操作可以實現如下腳本完成:
#!/bin/bash
for i in `ceph osd tree down 2>/dev/null |grep -w -A 4 node1 |grep -v node|awk '{print $4}'|sed 's/osd.//g'` #獲取當前節點down的osd
do
ceph osd in osd.$i #將osd標記為in,防止數據遷移ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-$i/ --op list-pgs > pg."$i" 2>/dev/null #獲取當前osd的所有pg并放入對應pg.id文件中for j in `cat pg."$i"`doceph-objectstore-tool --pgid $j --op mark-complete --data-path /var/lib/ceph/osd/ceph-$i/ --type bluestore #取出每個pg,標記為completedone
done
總結
以上是生活随笔為你收集整理的ceph中使用ceph-objectstore-tool将pg从incomplete标记为complete的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “密如飘玉屑”上一句是什么
- 下一篇: ceph osd混合部署和普通部署