Ceph入门到精通-CEPH故障以其处理方法

1. Slow OSD heartbeats

复制代码
  1. ceph -s

  2. health: HEALTH_WARN
  3. Slow OSD heartbeats on back (longest 6181.010ms)
  4. Slow OSD heartbeats on front (longest 5953.232ms)

OSDs之间会相互测试(ping)访问速度,若两个OSDs之间的连接延迟高于1s,则表示OSDs之间的延迟太高,不利于CEPH集群的数据存储和访问。两个OSDs之间可以通过内网(存储服务器之间 / back)检测其延迟,也可以通过外网(存储服务器到使用服务器 / front)检测其延迟。若延迟过高,会将相应的OSDs down掉,进而可能导致CEPH数据丢失。

一般情况下OSDs之间延迟高的原因是因为网络原因导致的。可能是某台存储服务器重启网络导致,或网线出问题导致。前者的时间会逐渐变小,最后恢复正常,后者则问题一直存在。通过查看详细的OSDs延迟信息查找延迟较高的主机,再进行解决。

复制代码
  1. ceph health detail

  2. [WRN] OSD_SLOW_PING_TIME_BACK: Slow OSD heartbeats on back (longest 11846.602ms)
  3. Slow OSD heartbeats on back from osd.12 [] to osd.25 [] 11846.602 msec
  4. Slow OSD heartbeats on back from osd.8 [] to osd.17 [] 3617.281 msec
  5. Slow OSD heartbeats on back from osd.16 [] to osd.27 [] 2784.517 msec
  6. Slow OSD heartbeats on back from osd.21 [] to osd.17 [] 1678.064 msec
  7. Slow OSD heartbeats on back from osd.11 [] to osd.15 [] 1675.884 msec
  8. Slow OSD heartbeats on back from osd.20 [] to osd.13 [] 1073.790 msec
  9. [WRN] OSD_SLOW_PING_TIME_FRONT: Slow OSD heartbeats on front (longest 11427.677ms)
  10. Slow OSD heartbeats on front from osd.12 [] to osd.25 [] 11427.677 msec
  11. Slow OSD heartbeats on front from osd.8 [] to osd.17 [] 3787.868 msec
  12. Slow OSD heartbeats on front from osd.16 [] to osd.27 [] 3465.298 msec
  13. Slow OSD heartbeats on front from osd.11 [] to osd.15 [] 1469.591 msec
  14. Slow OSD heartbeats on front from osd.21 [] to osd.17 [] 1341.135 msec
  15. Slow OSD heartbeats on front from osd.20 [] to osd.13 [] 1224.235 msec
  16. Slow OSD heartbeats on front from osd.5 [] to osd.16 [] 1101.175 msec
  17. 通过以上信息查看,可以发现有一台主机和其它主机的OSDs延迟都比较高,将该主机的光纤网线拔下擦拭干净并重新插上得以解决。

2. slow ops

复制代码
  1. ceph -s

  2. 21 slow ops, oldest one blocked for 29972 sec, mon.ceph1 has slow ops

先保证所有存储服务器上的时间同步一致,再重启相应主机上的moniter服务解决。

3. pgs not deep-scrubbed in time

复制代码
  1. ceph -s

  2. 47 pgs not deep-scrubbed in time

应该是OSDs掉线后,CEPH自动进行数据恢复。再将相应的OSDs重新加入后,则需要将恢复的数据再擦除掉。于是提示相应的警告信息,正在进行删除相关的操作,且其pgs的数量会不断变少。等待一段时间后,则恢复正常,此时ceph文件系统性能很差。

4. MDS cache is too large

复制代码
  1. ceph config set mds mds_cache_memory_limit 10GB
  2. ceph config dump

当MDS使用的缓存过高,比设定的阈值高很多时,则有此警告信息。使用如上命令设置更高的MDS缓存阈值,即可消除次警告信息,但会消耗更多的内存。使用config dump命令可以查看各项参数阈值信息。

此外,可能增大了mds_cache_memory_limit参数后,过了一段时间后仍然提示该警告,检测发现MDS缓存使用又超过新设定值的1.5倍大小了。此时,可以考虑设置多个活动状态的MDS服务。

复制代码
  1. 先开启3台服务器的MDS服务,确保这3台服务器的内存是够用的,最好这3台服务器的内存更大。

  2. ceph orch apply mds cephfs ceph106,ceph107,ceph109
  3. ceph fs set cephfs max_mds 3
  4. 由于激活了3台服务器的MDS,缺少备用的MDS服务。再增加一个备用的MDS服务主机。

  5. ceph orch apply mds cephfs ceph106,ceph107,ceph109,ceph110

5. Client node18 failing to respond to cache pressure

表示node18主机和MDS服务之前的响应较慢,若过一会儿就显示health_ok,则不用管它。若是长期显示该警告,则在对应的node18主机上卸载ceph文件系统后重新挂载即可。

客户端在使用相应数据时,MDS服务端则将其数据缓存到服务器的内存中。当MDS服务端需要减少缓存消耗时,则会给客户端发送相应的请求。此时,客户端响应过慢,则提示此警告信息。若一直如此,会导致MDS服务器缓存无法释放,内存消耗持续增加甚至导致宕机。

ceph集群提供元数据服务,则客户端可以提挂载ceph文件系统。客户端访问数据时,则在客户端和元数据服务器中都缓存相应的数据。元数据服务器会和客户端inode占用情况来消减缓存。当客户端响应太慢,则会报错"failing to respond to cache pressure" or MDS_HEALTH_CLIENT_RECALL。若确实是客户端负荷较大,是正常读写操作,可以考虑增大mds_recall_warning_decay_rate参数的值(默认为60s),从而消除警告。

可以查询ceph客户端的ID号及其使用inode数(num_caps的值)。

复制代码
  1. ceph tell mds.0 session ls

谨慎使用如下命令踢出目标客户端或全部客户端。

复制代码
  1. ceph tell mds.0 session evict id=11134635
  2. ceph tell mds.0 session evict

踢出客户端是将客户端加入了黑名单,可以使用如下命令查看黑名单信息或移出黑名单。虽然移出黑名单,可能还不能让客户端正常挂载ceph文件系统,因此需要谨慎处理。

复制代码
  1. ceph osd blacklist ls
  2. ceph osd blacklist rm 192.168.20.1:0/1498586492
  3. ceph osd blacklist clear

6. Reduced data availability: 4 pgs inactive, 4 pgs incomplete

当有pgs出现incomplete时,表明pgs对应的OSDs存活数量少于最小副本数。因此,其对应的数据无法读写,处于reduced状态,会导致MDS服务出问题,提示如下报错信息,示例:

复制代码
  1. 3 MDSs report slow metadata IOs
  2. 2 MDSs report slow requests
  3. 2 MDSs behind on trimming
  4. Reduced data availability: 4 pgs inactive, 4 pgs incomplete
  5. pg 5.6de is incomplete, acting [254,356,222,352,111,247,100,133,351,206] (reducing pool cephfs_data min_size from 8 may help; search ceph.com/docs for 'incomplete')
  6. pg 5.6e9 is incomplete, acting [276,244,357,358,221,321,311,229,314,351] (reducing pool cephfs_data min_size from 8 may help; search ceph.com/docs for 'incomplete')
  7. pg 5.73b is incomplete, acting [186,279,351,247,293,354,359,220,181,283] (reducing pool cephfs_data min_size from 8 may help; search ceph.com/docs for 'incomplete')
  8. pg 5.eda is incomplete, acting [164,157,120,227,353,351,295,269,95,354] (reducing pool cephfs_data min_size from 8 may help; search ceph.com/docs for 'incomplete')

此时,需要修复pgs。

复制代码
  1. 查询pg信息(pg id 为 5.6de)

  2. ceph pg 5.6de query
  3. 强行重建pg

  4. ceph osd force-create-pg 5.6de --yes-i-really-mean-it

7. failed to probe daemons or devices stderr:Non-zero exit code 125 from /bin/podman

由于Ceph存储集群中个别服务器的podman容器出问题,导致相应服务启动失败。报告警告如下:

复制代码
  1. [WRN] CEPHADM_REFRESH_FAILED: failed to probe daemons or devices
  2. host ceph105 ceph-volume inventory failed: cephadm exited with an error code: 1, stderr:Non-zero exit code 125 from /bin/podman run --rm --ipc=host --net=host --entrypoint stat -e CONTAINER_IMAGE=docker.io/ceph/ceph:v15 -e NODE_NAME=ceph105 docker.io/ceph/ceph:v15 -c %u %g /var/lib/ceph
  3. stat:stderr Error: readlink /var/lib/containers/storage/overlay/l/HMGABIBEWBRXOSBT4JLOKQIKDA: no such file or directory
  4. Traceback (most recent call last):
  5. File "", line 6112, in
  6. File "", line 1299, in _infer_fsid
  7. File "", line 1382, in _infer_image
  8. File "", line 3581, in command_ceph_volume
  9. File "", line 1477, in make_log_dir
  10. File "", line 2084, in extract_uid_gid
  11. RuntimeError: uid/gid not found

执行以下命令时,会有如上报错。而正常的存储节点则不会报错。

复制代码
  1. cephadm shell

该类报错表示podman的docker容器出错。查找出错的存储节点:

复制代码
  1. ceph orch ps | grep error

在各存储节点重新pull相应的docker镜像:

复制代码
  1. cephadm pull
  2. podman pull ceph/ceph:v15
  3. 以上两个命令都可以达到目的,后者能看到下载的速度,以免等待较长时间下载几百M的文件而不清楚进度。

  4. 重新pull镜像后,会提升ceph版本。不会影响使用

检查podman的docker镜像

复制代码
  1. podman images
  2. podman ps

最后重启服务器或重启CEPH服务。

8. mds.cephfs.ceph109.avzzqn(mds.1): Behind on trimming (594/128) max_segments: 128, num_segments: 594

有MDS服务器报警:

复制代码
  1. [WRN] MDS_TRIM: 2 MDSs behind on trimming
  2. mds.cephfs.ceph109.avzzqn(mds.1): Behind on trimming (594/128) max_segments: 128, num_segments: 594
  3. mds.cephfs.ceph106.hggsge(mds.0): Behind on trimming (259/128) max_segments: 128, num_segments: 259

MDS服务器将元数据以segments(object)方式存放,当MDS中的segments数量超出mds_log_max_segments的设置值(默认为128)时,MDS服务开始启动Trimming,即将segments数据进行回写。当MDS中的segments数超过设定值两倍时,开始报警Behind on trimming信息。当MDS服务器内存足够时,推荐增大mds_log_max_segments参数值。

复制代码
  1. ceph config set mds mds_log_max_segments 1024

9. mds N slow requests are blocked > 30 secs

MDS服务报警:

复制代码
  1. [WRN] MDS_SLOW_REQUEST: 3 MDSs report slow requests
  2. mds.cephfs.ceph109.avzzqn(mds.1): 29 slow requests are blocked > 30 secs
  3. mds.cephfs.ceph110.sfagxf(mds.2): 1 slow requests are blocked > 30 secs
  4. mds.cephfs.ceph106.hggsge(mds.0): 3 slow requests are blocked > 30 secs

以上报警表示MDS响应慢,原因可能是:mds服务运行太慢、底层pg或OSD出问题导致写入日志未确认、或BUG。通过设置mds_op_complaint_time值为3000,问题依旧。

出现此警告时,OSD未报错。而mds服务运行应该正常,内存也足够用。通过阵列卡检测硬盘,发现有两台服务器分别有一块硬盘没有检测到。推测是相应的硬盘出问题,而OSD还未反应过来,带后续观察。

10. insufficient standby MDS daemons available

当有mds服务crash的时候,候选的mds则补上。此时,已经连接上的计算服务器还是可以正常访问ceph存储。但是,新的计算服务器无法挂载ceph文件系统。

解决方法是,ssh登陆到mds服务有crash的服务器,然后重启其mds服务。再登陆备用的mds服务器,重启其mds服务。

复制代码
  1. ssh ceph107
  2. systemctl restart ceph-8f1c1f24-59b1-11eb-aeb6-f4b78d05bf17@mds.cephfs.ceph106.hggsge.service
  3. ssh ceph102
  4. systemctl restart ceph-8f1c1f24-59b1-11eb-aeb6-f4b78d05bf17@mds.cephfs.ceph102.imxzno.service
相关推荐
幽兰的天空9 小时前
介绍 HTTP 请求如何实现跨域
网络·网络协议·http
lisenustc9 小时前
HTTP post请求工具类
网络·网络协议·http
心平气和️9 小时前
HTTP 配置与应用(不同网段)
网络·网络协议·计算机网络·http
心平气和️9 小时前
HTTP 配置与应用(局域网)
网络·计算机网络·http·智能路由器
淡黄的Cherry10 小时前
ceph基本概念,架构,部署(一)
ceph
Mbblovey10 小时前
Picsart美易照片编辑器和视频编辑器
网络·windows·软件构建·需求分析·软件需求
北顾南栀倾寒11 小时前
[Qt]系统相关-网络编程-TCP、UDP、HTTP协议
开发语言·网络·c++·qt·tcp/ip·http·udp
GZ_TOGOGO11 小时前
PIM原理与配置
网络·华为·智能路由器
7ACE11 小时前
Wireshark TS | 虚假的 TCP Spurious Retransmission
网络·网络协议·tcp/ip·wireshark·tcpdump
大丈夫立于天地间12 小时前
ISIS基础知识
网络·网络协议·学习·智能路由器·信息与通信