今天突然一個osd節點pod一直無法正常運行,查看logs后發現報出的錯誤信息沒辦法判斷是出了什么問題,在網絡上搜索也沒有找到解決辦法,無奈之下只能決定格式化osd節點硬盤,重新加載試試。
1、進入rook ceph toolbox工具pod
kubectl -n rook-ceph exec -it $(kubectl -n rook-ceph get pod -l "app=rook-ceph-tools" -o jsonpath='{.items[0].metadata.name}') bash
2、命名用ceph命令查詢並刪除osd
#查詢狀態,找到要移除的osd id ceph osd status #標記移除的osd ceph osd out osd.1 ceph osd purge 1 --yes-i-really-mean-it ceph osd crush remove osd.1 ceph auth rm osd.1 ceph osd rm osd.1
3、刪除相關osd節點的deployment
kubectl delete deploy rook-ceph-osd-1 -n rook-ceph
4、登錄要刪除osd所在的服務器,格式化osd硬盤
安裝sgdisk命令,yum install -y gdisk
#檢查硬盤路徑 fdisk -l #刪除硬盤分區信息 DISK="/dev/sdb" sgdisk --zap-all $DISK #清理硬盤數據(hdd硬盤使用dd,ssd硬盤使用blkdiscard,二選一) dd if=/dev/zero of="$DISK" bs=1M count=100 oflag=direct,dsync blkdiscard $DISK #刪除原osd的lvm信息(如果單個節點有多個osd,那么就不能用*拼配模糊刪除,而根據lsblk -f查詢出明確的lv映射信息再具體刪除,參照第5項操作) ls /dev/mapper/ceph-* | xargs -I% -- dmsetup remove % rm -rf /dev/ceph-* #重啟,sgdisk –zzap-all需要重啟后才生效 reboot
報錯錯誤:cannot open /dev/sdb: Device or resource busy
5、手動查看並刪除原osd創建的lvm信息(可選,根據第4步執行情況決定),否則格式化時會報 cannot open /dev/sdb: Device or resource busy 異常
#查看lvm設備信息 dmsetup ls; #刪除ceph osd lvm映射關系 dmsetup remove ceph--5a4cb4bb--70b3--40bd--9da7--09d4f264a513-osd-xxxxxxxxx #移動lv lvremove /dev/mapper/ceph--5a4cb4bb--70b3--40bd--9da7--09d4f264a513-osd—xxxxxxxxx
#刪除相關文件
rm –rf /dev/ceph--5a4cb4bb--70b3--40bd--9da7--09d4f264a513
5、重啟ceph operator調度,使檢測到格式化后的osd硬盤,osd啟動后ceph集群會自動平衡數據
kubectl rollout restart deploy rook-ceph-operator -n rook-ceph
注:如果新osd pod無法執行起來可以通過查詢osd prepare日志找問題
kubectl -n rook-ceph logs rook-ceph-osd-prepare-node1-fvmrp provision