Ceph OSD为DOWN时修复

本文所使用Ceph版本为luminous(不同版本删除OSD基本操作相同),当出现Ceph OSD为down的情况时,可以通过以下方法解决(假设ceph-admin节点OSD.1 Down,该OSD对应磁盘为/dev/sdb):

1.首先尝试能否重启ceph-osd服务

近期在维护ceph集群时,发现一些新的情况:

(1)ceph osd down掉之后(这里假设osd.1 down),去到对应的机器上使用systemctl | grep ceph 命令查看ceph进程时,发现ceph-osd@1.service仍然显示active,此时通过systemctl restart ceph-osd@1.service可以解决这个问题(这也许是ceph的一个bug?并没有严格考证过),可能需要等待一段时间服务才会重启成功(大约几分钟)。

{最近发现有时这种情况下简单重启一下进程不能解决问题,这时可以尝试以下步骤重新开启osd进程:

ceph osd out osd.1

systemctl stop ceph-osd@1.service

ceph-osd -i 1          //执行完这一条命令后需要等待比较长的时间

如果执行成功,应提示如下信息:

[root@a-08 ~]# ceph-osd -i 1
starting osd.1 at - osd_data /var/lib/ceph/osd/ceph-1 /home/nvme/ceph/ceph-1/journal
2020-01-04 12:04:32.815 7f2cc6e82b80 -1 osd.1 69155 log_to_monitors {default=true}
如果执行失败并且提示如下信息:

osd.1 init authentication failed: (1) Operation not permitted

解决方法:

ceph auth del osd.1

ceph auth add osd.1 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-1/keyring

ceph osd out osd.1

systemctl stop ceph-osd@1.service

ceph-osd -i 1

问题应该得到解决

}

(2)如果ceph.conf配置文件中的cluster network字段配置错误会导致所有的osd服务down掉。

(3)ceph health detail提示slow ops, oldest one blocked for 109179 sec, daemons [osd.1,osd.2,osd.3] have slow ops,此时需要进入osd所对应机器上重启ceph-osd进程,但如果使用systemctl restart ceph-osd@1.service重启会导致ceph-osd开始自动重启,过一段时间之后就会导致ceph-osd进程状态为failed,无法重启服务(后来尝试重启几次机器之后发现集群状态恢复正常,但是这种方法可能会导致数据丢失)。经过几次尝试,发现提示这种情况的slow ops时,需要首先使用systemctl stop ceph-osd@1.service命令使ceph-osd@1.service进程停止后,再使用systemctl start ceph-osd@1.service才不会发生上述问题(执行完systemctl stop 命令后,不要马上重新执行systemctl start,需要等待集群状态趋于稳定后再执行systemctl start命令,可以通过ceph -w查看ceph集群实时状态,如果集群信息连续多行显示相同的信息,则说明集群状态已经处于稳定,此时可以执行systemctl start命令使osd重新启动)。如果重启这个进程之后ceph集群并未达到健康状态,则继续按此方法重启ceph health detail中有问题的osd。(如果ceph health detail中只是提示slow ops和monitorID,并没有具体的osd编号时,重启相应的monitor进程即可)

(4)有可能是硬件故障导致ceph osd down掉(概率比较低,但我确实遇到过),需要确认非硬件故障之后再尝试方法2(发生硬件故障之后是无法执行方法2的)。

2.如果重启无望,可采用以下步骤重新格式化硬盘并将其加入ceph集群中(以下步骤会将硬盘中的所有数据抹除)

步骤1.停止相应OSD服务

           此步骤需要在Down掉的OSD所在节点上操作,

           输入命令:

           systemctl stop ceph-osd@1.service

步骤2.取消OSD挂载

           安装OSD时,会将osd.1挂载至/var/lib/ceph/osd/ceph-1,因此,删除OSD时,需要首先取消OSD挂载,

           输入命令:

           umount /var/lib/ceph/osd/ceph-1

步骤3. 设置OSD为OUT

           输入命令:

           ceph osd out osd.1

步骤4.删除OSD

           输入命令:

           ceph osd crush remove osd.1(如果未配置Crush Map则不需要执行这一行命令)

           ceph auth del osd.1

           ceph osd rm 1

步骤5.清空已删除磁盘中的内容

          输入命令:

          wipefs -af /dev/sdb

          完成此项操作后,重启该OSD所在节点的机器

          重启完成后,需要zap该磁盘,输入命令如下:

           ceph-volume lvm zap /dev/sdb

          如果zap成功,会提示以下信息:

            --> Zapping: /dev/sdb
            Running command: /usr/sbin/cryptsetup status /dev/mapper/
            stdout: /dev/mapper/ is inactive.
            Running command: /usr/sbin/wipefs --all /dev/sdb
            Running command: /bin/dd if=/dev/zero of=/dev/sdb bs=1M count=10
            stderr: 10+0 records in
            10+0 records out
            stderr: 10485760 bytes (10 MB) copied, 0.0195807 s, 536 MB/s
            --> Zapping successful for: /dev/sdb

步骤6.重新安装OSD

           输入命令:

           ceph-deploy osd create  --bluestore  ceph-admin --data /dev/sdb

步骤7.查看OSD TREE

           输入命令:

           ceph osd tree

           此时应该看到OSD为UP的情况

附:

如果不清楚osd编号与盘符的对应关系,可以通过以下命令查看(ceph在安装osd时,会向磁盘中写入一些信息,其中就包括osd编号、集群ID等):

此处以sdb为例

ceph-volume lvm list /dev/sdb (注:ceph-volume lvm list命令会将所有与ceph相关的磁盘中写入的ceph信息都显示出来)

如果磁盘很多,可以参考以下shell脚本(批量显示磁盘中的ceph集群信息),这个脚本可以显示出每一个磁盘对应的osd编号:

#!/bin/bash
osd=`fdisk -l | grep [^o]sd  | awk '{print $2}' | sed "s/://g" | sort `
echo "Device in Ceph"
for i in $osd
do
  echo $i
  ceph-volume lvm list $i | grep "=====" | awk '{print $2}'
  echo
  echo "==================================================="
  echo
done

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值