刪除一個OSD的最佳實踐

當你要縮小集羣規模或者處理壞盤時,你就需要通過刪除OSD來實現,但是在刪除之前你要確保集羣不會達到full的狀態。

雖然社區的文檔給出了刪除一個OSD的步驟(http://docs.ceph.com/docs/hammer/rados/operations/add-or-rm-osds/),並且也能夠work,但是它不是最好的方案,因爲這其中會涉及到兩次數據遷移,即在執行‘ceph osd out osd.x'和‘ceph osd crush remove osd.x‘時。標記一個OSD out會使得它上面的pg重新臨時remap到另外的OSD上,當然有些時候會出現不能找到OSD來存放,這主要取決於你的crushmap如何設計。而將一個OSD從crush中remove出去,則會使得它的pg永久性的map的另外的OSD上。那麼如何才能避免這兩次數據遷移呢?

這要看你要刪除什麼樣的OSD:
1正常的OSD,那麼你可以遵循以下步驟,

1)ceph osd crush reweight osd.x 0.0
... 等待平衡結束....
2)ceph osd out osd.x
3)service ceph stop osd.x
4)ceph osd crush remove osd.x
5)ceph auth del osd.x
6)ceph osd rm osd.X
這麼做的目的是,先將osd的crush 權重調整爲0,則osd可以參與到數據重建過程。

2有問題的OSD,則可以按照社區的文檔來操作,只是在ceph osd out osd.x之後要立馬執行ceph osd crush remove osd.x,而不要等待平衡結束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章