背景:
經巡檢,發(fā)現(xiàn)ceph集群存儲節(jié)點osd故障。查詢日志后,發(fā)現(xiàn)為硬盤損壞,需要更換損壞硬件,重新添加osd。


正文:
以下為更換osd實施步驟:
1.確認故障osd與host對應關系
目標主機:存儲控制節(jié)點
ceph osd tree | egrep 'down|host'
(或者直接使用osd tree查看)

損壞的osd為osd.207,對應host 172.16.0.63
2.檢查ceph集群健康狀態(tài)
確保當前集群健康狀態(tài)為HEALTH_OK,且所有PG處于active + clean狀態(tài)(否則可能會出現(xiàn)pg不一致的問題)
目標主機:存儲控制節(jié)點

3.查詢并記錄原來的 OSD 的 DATA 與 JOURNAL 對應關系
目標主機:需要處理的存儲節(jié)點

sdj硬盤掛載異常,為故障盤

osd.207對應的日志盤(分區(qū))為 /dev/sdb3
4.檢查ceph參數(shù)
目標主機:存儲控制節(jié)點
cat /etc/ceph/ceph.conf
確保 osd_max_backfills =1, osd_recovery_max_active = 1

5.配置ceph狀態(tài)標志位
目標主機:存儲控制節(jié)點
執(zhí)行以下操作命令:
ceph osd set norebalance
ceph osd set nobackfill
ceph osd set noout
ceph osd set noscrub
ceph osd set nodeep-scrub
6.移除損壞的osd
目標主機:存儲控制節(jié)點
替換 [id] 為需要移除的故障 osd id,此處應為osd.207
ceph osd crush reweight osd.[id] 0
ceph osd crush rm osd.[id]
ceph osd rm osd.[id]
ceph auth del osd.[id]
ceph osd crush reweight osd.207 0
ceph osd crush rm osd.207
ceph osd rm osd.207
ceph auth del osd.207
7.卸載該OSD對應的磁盤
目標主機:需要處理的存儲節(jié)點
umount /dev/sdj1
如果該磁盤已無法識別,則檢查目錄有沒有異常掛載(目錄信息為“???”),存在則執(zhí)行卸載目錄操作。
ll /var/lib/ceph/osd/
umount -l /var/lib/ceph/osd/ceph-207
如步驟3圖所示,該盤已經無掛載信息,則不需要操作。
8.更換損壞硬盤
此步驟可以直接更換硬盤,不需要對存儲節(jié)點(服務器)進行關機;如果需要進入raid卡配置,則需要關機重啟,不會影響現(xiàn)有集群,更換完成后啟動服務器。
9.檢查日志盤分區(qū)權限
ls -l /dev/sdb3
此處日志盤分區(qū)為步驟3查到的對應分區(qū),權限應為ceph:ceph,若不是,則需要手動修改權限,否則osd服務啟動不成功。
chown ceph:ceph /dev/sdb3

10.重新添加osd節(jié)點新硬盤至集群
方法一:在mon節(jié)點使用工具添加。
目標主機:mon節(jié)點
ceph-deploy --overwrite-conf osd prepare [hostname]:[數(shù)據(jù)盤]:[日志盤分區(qū)] --zap-disk
ceph-deploy osd activate [hostname]:[數(shù)據(jù)盤分區(qū)]
本文應執(zhí)行如下命令
cd /root/ceph-cluster
ceph-deploy --overwrite-conf osd prepare hdzwy1-osd-172-16-0-63:/dev/sdj:/dev/sdb3 --zap-disk
ceph-deploy osd activate hdzwy1-osd-172-16-0-63:/dev/sdj1
方法二:在需要處理的存儲節(jié)點直接添加
ceph‐disk prepare [數(shù)據(jù)盤] [日志分區(qū)] ‐‐zap‐disk ‐‐filestore
ceph‐disk activate [數(shù)據(jù)盤分區(qū)]
本文應執(zhí)行如下命令:
ceph‐disk prepare /dev/sdj /dev/sdb3 ‐‐zap‐disk ‐‐filestore
ceph‐disk activate /dev/sdj1
11.檢查ceph集群狀態(tài)
目標主機:存儲控制節(jié)點
ceph -s
加入OSD的2分鐘內,會進行PG的remap操作,remap到新OSD上的PG會處于 peering狀態(tài),無法對外IO,故會對部分虛擬機造成慢請求。
如果處于peering狀態(tài)的pg數(shù)量未減少,且慢請求一直持續(xù),請執(zhí)行回滾操作
12.移除 ceph 狀態(tài)標志位
目標主機:存儲控制節(jié)點
確認需要添加的 osd 添加完成且 pg peering 全部完成之后,執(zhí)行以下操作
ceph osd unset norebalance
ceph osd unset nobackfill
13.移除剩余ceph狀態(tài)標志位
待集群所有 pg 狀態(tài)恢復為 active + clean 之后,執(zhí)行以下操作
ceph osd unset noout
ceph osd unset noscrub
ceph osd unset nodeep-scrub
至此,ceph集群更換osd結束。




