Ceph刪除OSD上乙個異常object

2022-06-15 09:18:10 字數 1189 閱讀 8259

ceph裡面的資料是以物件的形式儲存在osd當中的,有的時候因為磁碟的損壞或者其它的一些特殊情況,會引起集群當中的某乙個物件的異常,那麼我們需要對這個物件進行處理

在物件損壞的情況下,啟動osd有的時候都會有問題,那麼通過rados rm的方式是沒法傳送到這個無法啟動的osd的,也就無法刪除,所以需要用其他的辦法來處理這個情況

[root@lab8106 ~]# ceph osd map rbd  rbd_data.857e6b8b4567.00000000000000ba

osdmap e53 pool 'rbd' (0) object 'rbd_data.857e6b8b4567.00000000000000ba' -> pg 0.2daee1ba (0.3a) -> up ([1], p1) acting ([1], p1)

先找到這個物件所在的osd以及pg

[root@lab8106 ~]#ceph osd set noout
這個是為了防止osd的停止產生不必要的刪除

[root@lab8106 ]#systemctl stop ceph-osd@1
如果osd已經是停止的狀態就不需要做這一步

[root@lab8106 ]#ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-1/ --journal-path /var/lib/ceph/osd/ceph-1/journal --pgid 0.3a  rbd_data.857e6b8b4567.00000000000000ba remove
如果有多個副本的情況下,最好都刪除掉,影響的資料就是包含這個物件的資料,這個操作的前提是這個物件資料已經被破壞了,如果是部分破壞,可以用集群的repair進行修復,這個是無法修復的情況下的刪除物件,來實現啟動osd而不影響其它的資料的

[root@lab8106 ]# systemctl start ceph-osd@1
[root@lab8106 ~]#ceph osd unset noout
一般情況下比較少出現這個情況,如果有這樣的刪除損壞的物件的需求,就可以這麼處理

whywho

when

建立武漢-運維-磨渣

2017-04-19

刪除乙個OSD的最佳實踐

當你要縮小集群規模或者處理壞盤時,你就需要通過刪除osd來實現,但是在刪除之前你要確保集群不會達到full的狀態。雖然社群的文件給出了刪除乙個osd的步驟 並且也能夠work,但是它不是最好的方案,因為這其中會涉及到兩次資料遷移,即在執行 ceph osd out osd.x 和 ceph osd ...

如何刪除Github上乙個pull request

stackoverflow上有提問 如何刪除乙個pull request 答案是 github使用者自己是沒有辦法刪除pull request的。如果pull requst裡不慎提交了使用者密碼,token,secret之類的敏感資訊,可以聯絡github support,讓支援人員在github後...

ceph 刪除osd的一些問題 小太陽

1 刪除osd刪除建立的osd。資料和日誌在同乙個磁碟上的osd將osd.0踢出集群,執行ceph osd out 0停止此osd程序,執行systemctl stop ceph osd 0 然後執行 ceph osd crush remove osd.0,此時osd.0已經不再osd tree中了...