Ceph剔除主機,Crushmap遺留臟數據


背景:

  1. 一個集群總共有5台主機(Host11,Host12,Host13,Host14,Host16),由於資源過剩,需要剔除兩台主機用於其他用途,host11-13都是monitor+node,Pool的副本數目是2。所以優先考慮剔除主機14和16

操作步驟:

  1. Monitor操作,將OSD的狀態設置Out

  2. 登錄對應OSD節點 ,停止OSD守護進程

  3. Crushmap中刪除OSD

  4. 刪除OSD的認證信息

  5. 登錄對應OSD節點 ,取消掛載文件系統

注意事項:

  1. 由於副本數目是2,同一時間不能有兩個OSD或者以上不工作。

  2. 停止OSD和刪除Crushmao的信息,都將導致PG的重新收斂,所以最好每一個步驟都確保當前ceph狀態是OK才進行下一步。

  ######參考腳本

#!/bin/sh
####judge state of ceph
judge() {
  while true
  do
    sleep 5
    ceph -s |grep HEALTH_OK
      if [[ $? -eq 0 ]]
      then
        break
      else
        sleep 60
      fi
  done
}
####rdel osd from host14
while true
do
  for host in `seq 31 39`
  do
    echo "now.... ,del osd.$host from host14" >>stat.txt
    ceph osd out $host
    judge
    ssh 192.168.220.14 "/etc/init.d/ceph stop osd.$host"
    judge
    ceph osd crush remove osd.$host
    judge
    ceph auth del osd.$host
    judge
    ceph osd rm osd.$host
    judge
    ssh 192.168.220.14 "umount /var/lib/ceph/osd/ceph-$host"
    judge
    echo "del osd.$host from host14 suceess!!!!" >>stat.txt
  done
  break
done

######del osd from host16
while true
do
  for host in `seq 40 45`
  do
    echo "now.... ,del osd.$host from host16" >>stat.txt
    ceph osd out $host
    judge
    ssh 192.168.220.16 "/etc/init.d/ceph stop osd.$host"
    judge
    ceph osd crush remove osd.$host
    judge
    ceph auth del osd.$host
    judge
    ceph osd rm osd.$host
    judge
    ssh 192.168.220.16 "umount /var/lib/ceph/osd/ceph-$host"
    judge
    echo "del osd.$host from host16 suceess!!!!" >>stat.txt
  done
  break
done

故障現象以及解決方案:

  1. 剔除完OSD之后,使用ceph -s狀態正常,但是使用ceph osd tree查看列表的時候,依舊發現了host14和host16的存在。此時兩台主機都沒有任何OSD,列表中有他們倆算是無用的臟數據

  2. crushmap的一些架構圖,是不會動態修改的,所以需要手工的修改crushmap,修改進行如下的操作

ceph osd  getcrushmap -o old.map        //導出crushmap
crushtool -d old.map -o old.txt            //將crushmap轉成文本文件,方便vim修改
cp old.txt new.txt        //做好備份工作
vim new.txt
 host node14 { xxxxx xxxxx } host node16 { xxxxx xxxxx } root default { item node14 weight 0.098 item node16 weight 0.098 }
###把以上的內容都刪除掉,然后重新編譯為二進制文件,最后將二進制map應用到當前map中
curshtool -c new.txt -o new.map
ceph osd setcrushmap -i new.map
###此時ceph會重新收斂,等待收斂完畢后,ceph可正常使用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM