ceph文件系统的健康消息

集群健康检查

Ceph Monitor守护程序响应元数据服务器(MDS)的某些状态生成健康消息。 以下是健康消息的列表及其解释:

mds rank(s) have failed

一个或多个MDS rank当前未分配给任何MDS守护程序。在启动合适的替换守护程序之前,存储集群不会恢复。

mds rank(s) are damaged

一个或多个MDS rank存储的元数据出现严重损坏,在修复元数据之前无法重新启动。

mds cluster is degraded

一个或多个MDS rank当前未启动并运行,客户端可能会暂停元数据I/O,直到解决此问题。这包括失败或损坏的rank,以及在MDS上运行但尚未处于active状态的rank,例如,处于replay状态的rank。

mds are laggy

MDS守护进程应该按照mds_beacon_interval选项指定的时间间隔向监视器发送信标消息,默认值为4秒。如果MDS守护进程未能在mds_beacon_grace选项指定的时间内发送消息,默认值为15秒。Ceph Monitor将MDS守护进程标记为laggy,并自动将其替换为备用守护进程(如果有)。

守护进程报告的健康检查

MDS守护进程可以识别各种不需要的条件,并在ceph status命令的输出中返回它们。这些条件具有人类可读的消息,并且具有启动MDS_HEALTH的唯一代码,该代码出现在JSON输出中。下面是守护进程消息、它们的代码和说明的列表。

“Behind on trimming…”

Code: MDS_HEALTH_TRIM

CephFS 维护一个元数据日志,该日志分为日志段。 日志的长度(以段数计)由 mds_log_max_segments 设置控制。 当段数超过该设置时,MDS 开始回写元数据,以便它可以删除(修剪)最旧的段。 如果此过程太慢,或者软件错误阻止修剪,则会出现此运行状况消息。 此消息出现的阈值段数是 mds_log_max_segments 的两倍。

“Client failing to respond to capability release”

Code: MDS_HEALTH_CLIENT_LATE_RELEASE, MDS_HEALTH_CLIENT_LATE_RELEASE_MANY

CephFS 客户端由 MDS 发布能力。 这些能力就像锁一样工作。 有时,例如当另一个客户端需要访问时,MDS 会请求客户端释放他们的能力。 如果客户端没有响应,它可能无法及时响应,或者根本没有响应。 如果客户端响应的时间长于 mds_revoke_cap_timeout 选项指定的时间(默认为 60 秒),则会出现此消息。

“Client failing to respond to cache pressure”

Code: MDS_HEALTH_CLIENT_RECALL, MDS_HEALTH_CLIENT_RECALL_MANY

客户端维护一个元数据缓存。 客户端缓存中的项(例如 inode)也固定在 MDS 缓存中。 当 MDS 需要收缩其缓存以保持在其自己的缓存大小限制内时,MDS 也会向客户端发送消息以收缩其缓存。 如果客户端没有响应,它可能会阻止 MDS 正确地保持在其缓存大小内,并且 MDS 最终可能会耗尽内存并意外终止。 如果客户端所花费的时间超过 mds_recall_state_timeout 选项指定的时间(默认为 60 秒),则会出现此消息。 有关详细信息,请参考“了解 MDS 缓存大小限制”。

“Client failing to advance its oldest client/flush tid”

Code: MDS_HEALTH_CLIENT_OLDEST_TID, MDS_HEALTH_CLIENT_OLDEST_TID_MANY

用于客户端和 MDS 服务器之间通信的 CephFS 协议使用一个名为 oldest tid 的字段来通知 MDS 哪些客户端请求已完全完成,以便 MDS 可以忘记它们。 如果无响应的客户端未能推进此字段,则可能会阻止 MDS 正确清理客户端请求使用的资源。 如果某个客户端的请求数超过了 max_completed_requests 选项(默认为 100000)指定的数量,这些请求在 MDS 端完成但尚未计入客户端的oldest tid 值,则会出现此消息。

“Metadata damage detected”

Code: MDS_HEALTH_DAMAGE

从元数据池读取时遇到损坏或缺少元数据。此消息表示损坏已被充分隔离,MDS可以继续运行,尽管客户端访问损坏子树返回I/O错误。使用damage ls 管理套接字命令查看有关损坏的详细信息。一旦遇到任何损坏,就会显示此消息。

“MDS in read-only mode”

Code: MDS_HEALTH_READ_ONLY

MDS 已进入只读模式,并将向尝试修改任何元数据的客户端操作返回 EROFS 错误代码。

MDS 进入只读模式:

  • 如果在写入元数据池时遇到写入错误。

  • 如果管理员使用 force_readonly 管理套接字命令强制 MDS 进入只读模式。

" slow requests are blocked"

Code: MDS_HEALTH_SLOW_REQUEST

一个或多个客户端请求没有及时完成,说明 MDS 要么运行很慢,要么遇到了 bug。 使用 ops 管理套接字命令列出未完成的元数据操作。 如果任何客户端请求花费的时间超过 mds_op_complaint_time 选项指定的值(默认为 30 秒),则会出现此消息。

“Too many inodes in cache”

Code: MDS_HEALTH_CACHE_OVERSIZED

MDS 未能修剪其缓存以符合管理员设置的限制。 如果 MDS 缓存变得太大,守护程序可能会耗尽可用内存并意外终止。 默认情况下,如果 MDS 缓存大小超过其限制 50%,则会显示此消息。

MDS缓存大小限制

可以通过以下方式限制 CephFS MDS缓存的大小:

  • 内存限制: 使用 mds_cache_memory_limit 选项。重要提示:Red Hat 建议使用内存限制而不是 inode 计数限制。
  • Inode 计数: 使用 mds_cache_size 选项。 默认情况下,禁用按 inode 计数限制 MDS 缓存。

此外,可以使用mds_cache_reservation选项为mds操作指定缓存保留。缓存保留被限制为内存或inode限制的百分比,默认设置为5%。此参数的目的是让MDS为其缓存保留额外的内存,以供新的元数据操作使用。因此,MDS通常应该在低于其内存限制的情况下运行,因为它将从客户端回收旧状态,以便在其缓存中丢弃未使用的元数据。

除 MDS 节点向 Ceph Monitor发送健康警报,指示缓存太大外,mds_cache_reservation 选项在所有情况下都会替换 mds_health_cache_threshold 选项。 默认情况下,mds_health_cache_threshold 是最大缓存大小的 150%。

请注意,缓存限制不是硬限制。 CephFS 客户端或 MDS 中的潜在错误或行为不端的应用程序可能会导致 MDS 超出其缓存大小。 mds_health_cache_threshold 选项配置存储集群健康警告消息,以便操作员可以调查 MDS 无法收缩其缓存的原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值