ceph 創建和刪除osd
1、概述
本次主要是使用ceph-deploy工具和使用ceph的相關命令實現在主機上指定磁盤創建和刪除osd,本次以主機172.16.1.96(主機名hadoop96)為例,此主機系統盤為/dev/sda, 其他盤有/dev/sdb、/dev/sdc和/dev/sdd,這幾個盤都是裸磁盤,目的是使用這幾個盤的組合創建osd。
磁盤情況如下圖:

2、創建osd
使用ceph-deploy(工具安裝在hadoop95上)創建osd,這里創建兩個osd,其中一個數據和日志在同一個磁盤上,另外的osd日志被獨立到另一個盤。
1)數據和日志在同一個磁盤上
執行ceph-deploy osd create hadoop96:/dev/sdb,然后在hadoop96上查看如下圖:

進入/var/lib/ceph/osd/ceph-4目錄查看

如上圖可知日志目錄被鏈接到/dev/disk/by-partuuid/17f23e99-13dc-4a15-827b-745213c5c3dd,我們查看/dev/disk/by-partuuid/17f23e99-13dc-4a15-827b-745213c5c3dd,如下圖:

說明/dev/sdb2被作為日志的分區使用,所以新創建的osd.4默認數據和日志都在同一個磁盤/dev/sdb上不同分區。
2)osd日志被獨立到另一個盤
執行ceph-deploy osd create hadoop96:/dev/sdc:/dev/sdd,然后在hadoop96上查看如下圖:

進入/var/lib/ceph/osd/ceph-5目錄查看

如上圖可知日志目錄被鏈接到/dev/disk/by-partuuid/96eb886f-4095-4cb4-90fc-2976a8869cc1,我們查看/dev/disk/by-partuuid/96eb886f-4095-4cb4-90fc-2976a8869cc1,如下圖:

說明/dev/sdd1被作為日志的分區使用,所以新創建的osd.5數據在/dev/sdc1,而日志則獨立在另一個磁盤的分區/dev/sdd1。
3、刪除osd
刪除上面創建的osd。
1)數據和日志在同一個磁盤上的osd
將osd.4踢出集群,執行ceph osd out 4

停止此osd進程,執行systemctl stop
ceph-osd@4

然后執行:ceph osd crush remove osd.4,此時osd.4已經不再osd tree中了

執行ceph auth del osd.4 和 ceph osd rm 4, 此時刪除成功但是原來的數據和日志目錄還在,也就是數據還在

此時我們將/dev/sdb1磁盤umount,然后將磁盤進行擦除那么數據就會被完全刪除了,執行umount /dev/sdb,然后執行ceph-disk zap /dev/sdb

這時/dev/sdb又成為裸磁盤了,也就相當於徹底刪除了osd.4。
2)刪除日志被獨立到另一個盤的osd
執行步驟和之前類似。
將osd.5踢出集群,執行ceph osd out 5

停止此osd進程,執行systemctl stop
ceph-osd@5

然后執行:ceph osd crush remove osd.5,此時osd.5已經不再osd tree中了

執行ceph auth del osd.5和 ceph osd rm 5, 此時刪除成功但是原來的數據和日志目錄還在,也就是數據還在

此時我們將/dev/sdc1磁盤umount,然后將磁盤進行擦除那么數據就會被完全刪除了,執行umount /dev/sdc1,然后執行ceph-disk zap /dev/sdc

這時/dev/sdc又成為裸磁盤了,也就相當於徹底刪除了osd.5,但是原來作為日志的分區/dev/sdd1還在,此時如果sdd有多個分區作為其他osd的日志分區那么就不能擦除/dev/sdd盤,但是此時/dev/sdd1分區已經沒有被osd使用了所以再創建osd時要記得再利用,目前我覺得只能這樣。