添加或刪除osd均在ceph部署節點的cent用戶下的ceph目錄進行。
1. 添加osd
當前ceph集群中有如下osd,現在准備新添加osd:
(1)選擇一個osd節點,添加好新的硬盤:
(2)顯示osd節點中的硬盤,並重置新的osd硬盤:
列出節點磁盤:
ceph-deploy disk list rab1
擦凈節點磁盤:
ceph-deploy disk zap rab1 /dev/sbd(或者)ceph-deploy disk zap rab1:/dev/vdb1
(3)准備Object Storage Daemon:
ceph-deploy osd prepare rab1:/var/lib/ceph/osd1
(4)激活Object Storage Daemon:
ceph-deploy osd activate rab1:/var/lib/ceph/osd1
2. 刪除osd
現在要將 rab1中的 osd.4 刪除:
(1)把 OSD 踢出集群
ceph osd out osd.4
(2)在相應的節點,停止ceph-osd服務
systemctl stop ceph-osd@4.service systemctl disable ceph-osd@4.service

(3)刪除 CRUSH 圖的對應 OSD 條目,它就不再接收數據了
ceph osd crush remove osd.4

(4)刪除 OSD 認證密鑰
ceph auth del osd.4
(5)刪除osd.4
ceph osd rm osd.4
3. ceph osd故障硬盤更換
正常狀態:
故障狀態:
實施更換步驟:
(1)關閉ceph集群數據遷移:
osd硬盤故障,狀態變為down。在經過mod osd down out interval 設定的時間間隔后,ceph將其標記為out,並開始進行數據遷移恢復。為了降低ceph進行數據恢復或scrub等操作對性能的影響,可以先將其暫時關閉,待硬盤更換完成且osd恢復后再開啟:
for i in noout nobackfill norecover noscrub nodeep-scrub;do ceph osd set $i;done
(2)定位故障osd
ceph osd tree | grep -i down
(3)進入osd故障的節點,卸載osd掛載目錄
[root@node3 ~]# umount /var/lib/ceph/osd/ceph-5
(4)從crush map 中移除osd
[root@node1 ~]# ceph osd crush remove osd.5 removed item id 5 name 'osd.5' from crush map
(5)刪除故障osd的密鑰
[root@node1 ~]# ceph auth del osd.5 updated
(6)刪除故障osd
[root@node1 ~]# ceph osd rm 5 removed osd.5
(7)更換完新硬盤后,注意新硬盤的盤符,並創建osd
(8)在部署節點,切換為cent用戶,添加新的osd
[cent@deploy ceph]$ ceph-deploy osd create --data /dev/sdd node3

(9)待新osd添加crush map后,重新開啟集群禁用標志
for i in noout nobackfill norecover noscrub nodeep-scrub;do ceph osd unset $i;done
ceph集群經過一段時間的數據遷移后,恢復active+clean狀態