在ceph集羣裏,磁碟出故障是不可避免,所以替換故障磁碟成為ceph日常運維不斷重複的任務。本課程演示如何替換一個故障盤。

定位故障磁碟

#MegaCli -PDList -aALL|grep "Media Error"
Enclosure Device ID: 0
Slot Number: 3
Enclosure position: 0
Device Id: 2
Sequence Number: 2
Media Error Count: 227 <- 物理故障
Other Error Count: 2
Enclosure Device ID: 0

定位故障OSD

#lsblk -i|grep /dev/sdc
/dev/sdc1 on /var/lib/ceph/osd/ceph-1

停止故障OSD

systemctl status [email protected]

雖然osd.1的服務已停止,然而他任然被標記為IN(集羣中)狀態。只要他的狀態還是IN,Ceph集羣就不會為他觸發數據恢復。默認情況下,ceph集羣需要5分鐘來將一個DOWN狀態的磁碟標記為OUT狀態,然後開始數據恢復。我們可以手工將故障OSD標記為OUT。一旦該OSD被標記為OUT,ceph集羣會為該OSD上的PG啟動恢復過程。

  • 當某個PG對應的OSD set中有一個OSD被標記為down時(假如是Primary被標記為down,則某個Replica會成為新的Primary,並處理所有讀寫 object請求),則該PG處於active+degraded狀態,也就是當前PG有效的副本數是N-1。
  • 過了5秒之後,假如還是無法連接該OSD,則它被標記為out,Ceph會重新計算PG到OSD set的映射(當有新的OSD加入到集羣時,也會重新計算所有PG到OSD set的映射),以此保證PG的有效副本數是N。

#ceph osd out osd.1
#ceph status

刪除故障OSD

  • 從ceph CRUSH map中移除

#ceph osd crush rm osd.1

  • 刪除該osd的祕鑰

#ceph auth del osd.1

  • 從ceph集羣中刪除該osd

#ceph osd rm osd.1

拔掉故障盤,插入新磁碟......................

重新組建 RAID

[root@hh-yun-ceph-cinder016-128056 ~]# MegaCli -CfgLdAdd -r0 [0:3] WB Direct -a0
Adapter 0: Created VD 2
Adapter 0: Configured the Adapter!!
Exit Code: 0x00

創建OSD,加入集羣

#ceph-deploy disk list ceph-node1
#ceph-deploy disk zap ceph-node2:sdc
#ceph-deploy --overwrite-conf osd create ceph-node1:sdc

一旦OSD加入到集羣,ceph會執行回填backfilling操作,他會將PG從第二OSD上移到這個新的OSD上。

閱讀全文:Ceph實驗室:第五課:Ceph運維之換盤

推薦閱讀:

相關文章