ceph osd full – osd磁碟滿的處理

NO IMAGE
ceph一旦有osd寫滿了,就會進入一種保護狀態。所謂osd寫滿,是指osd空間使用率達到了osd full ratio規定的百分比,例如0.95。這種情況下,ceph不允許用rbd rm等命令刪除上面的rbd image以釋放空間。如何處理osd full的窘境,參考下面的方法。
方法1
增加磁碟空間。
如果可能,試著刪除osd上無用的檔案,釋放部分磁碟空間。或者向系統新增新的硬碟,部署一個新的osd,ceph將自動平衡資料到新的osd,從而釋放full osd上的部分空間。
但是,釋放或增加空間的辦法,有時候條件不具備,無法施行。嘗試下面的方法。
方法2
資料再平衡。命令如下
ceph osd crush reweight <osd> <weight>
這裡的調整分為兩種情況。
如果osd是處於full狀態的osd,設定為更小的weight值。例如原值是1,可以設定為0.8,0.5,0.01。
如果osd是還有空間餘量的osd,那麼weight設定為更大的值,例如原來是1,現在可以設定為1.5, 2, 10, 100。
weight代表的是osd之間的相對關係,數值可以逐步調整,根據實際效果,多次執行上面的reweight命令。每次調整,通過ceph -w ,df,ceph health detail 等命令,觀察資料的分佈變化,直到osd從full變成了near full狀態。再平衡的方法之所以能夠奏效,是因為每個osd的空間利用率並不完全相同,例如某個osd利用率達到95%,認定為full狀態,此時其他osd空間佔用為92%,93%,等等。再平衡的目標是讓
osd full 的空間佔用下降一點,低於 full ratio。
有一個要注意的問題,osd的調整以同一個crush ruleset的osd為範圍。執行ceph osd tree,調整的osd應當位於同一個root。
解除了osd full,執行rbd rm等命令,刪除不用的rbd image釋放空間,直到osd可用空間處於警戒線以下。
ceph狀態恢復正常之後,再次執行ceph osd crush reweight命令,恢復weight為合理的設定。例如,1TB大小的osd,weight通常設定為1.0。
方法3
還有一個修改ceph配置項的方法,在 /etc/ceph/ceph.conf 的 [global] 分節,例如原來配置
mon osd full ratio = 0.90
修改為更大的值,例如0.98。然後重啟ceph服務。但經過博主試驗,並未奏效。
參考
https://www.itzhoulin.com/2016/04/20/deal_with_ceph_full/
http://cloud.51cto.com/art/201505/476346_all.htm