注意

本文档适用于 Ceph 的开发版本。

CephFS 健康消息

集群健康检查

Ceph monitor 守护程序会根据文件系统映射结构(以及包含的 MDS 映射)的特定状态生成健康消息。

消息:mds 排名 ranks 已失败 描述:一个或多个 MDS 排名当前未分配给 MDS 守护程序;直到合适的替换守护程序启动,集群才会恢复。

消息:mds 排名 ranks 已损坏 描述:一个或多个 MDS 排名遇到了其存储元数据的严重损坏,在修复之前无法再次启动。

消息:mds 集群已降级 描述:一个或多个 MDS 排名当前未启动和运行,客户端可能会暂停元数据 IO,直到这种情况得到解决。这包括排名已失败或损坏,此外还包括在 MDS 上运行但尚未达到 active 状态的排名(例如,当前处于 replay 状态的排名)。

消息:mds names 滞后 描述:命名的 MDS 守护程序未能在至少 mds_beacon_grace(默认 15s)时间内向 monitor 发送信标消息,而它们应该每 mds_beacon_interval(默认 4s)发送一次信标消息。守护程序可能已崩溃。如果有备用守护程序可用,Ceph monitor 将自动用备用守护程序替换滞后的守护程序。

消息:可用备用守护程序不足 描述:一个或多个文件系统配置为拥有一定数量的可用备用守护程序(包括处于备用重放中的守护程序),但集群没有足够的备用守护程序。非重放中的备用守护程序计入任何文件系统(即它们可能重叠)。此警告可以通过设置 ceph fs set <fs> standby_count_wanted <count> 来配置。将 count 设置为零以禁用。

守护程序报告的健康检查

MDS 守护程序可以识别各种不需要的条件,并在 ceph status 的输出中向操作员指示这些条件。这些条件具有人类可读的消息,以及一个以 MDS_ 开头的唯一代码。

ceph health detail 显示条件的详细信息。以下是经历 MDS 相关性能问题的集群的典型健康报告

$ ceph health detail
HEALTH_WARN 1 MDSs report slow metadata IOs; 1 MDSs report slow requests
MDS_SLOW_METADATA_IO 1 MDSs report slow metadata IOs
   mds.fs-01(mds.0): 3 slow metadata IOs are blocked > 30 secs, oldest blocked for 51123 secs
MDS_SLOW_REQUEST 1 MDSs report slow requests
   mds.fs-01(mds.0): 5 slow requests are blocked > 30 secs

例如,MDS_SLOW_REQUEST 是表示请求完成时间过长的条件的唯一代码。以下描述显示了其严重性以及正在处理这些慢速请求的 MDS 守护程序。

本页列出了 MDS 守护程序引发的健康检查。有关来自其他守护程序的检查,请参阅 健康检查

MDS_TRIM

消息

“修剪滞后…”

描述

CephFS 维护一个元数据日志,该日志分为 log segments。日志的长度(以段数计)由设置 mds_log_max_segments 控制,当段数超过该设置时,MDS 开始回写元数据,以便它可以删除(修剪)最旧的段。如果此回写发生得太慢,或者软件错误阻止了修剪,则可能会出现此健康消息。此消息出现的阈值由配置选项 mds_log_warn_factor 控制,默认值为 2.0。

MDS_HEALTH_CLIENT_LATE_RELEASE, MDS_HEALTH_CLIENT_LATE_RELEASE_MANY

消息

“客户端 name 未能响应能力释放”

描述

MDS 向 CephFS 客户端发出 capabilities,这类似于锁。有时,例如当另一个客户端需要访问时,MDS 会请求客户端释放其能力。如果客户端没有响应或有错误,它可能无法及时执行此操作,或者根本无法执行此操作。如果客户端花费的时间超过 session_timeout(默认 60s)来遵守,则会出现此消息。

MDS_CLIENT_RECALL, MDS_HEALTH_CLIENT_RECALL_MANY

消息

“客户端 name 未能响应缓存压力”

描述

客户端维护一个元数据缓存。客户端缓存中的项目(例如 inode)也固定在 MDS 缓存中,因此当 MDS 需要缩小其缓存(以保持在 mds_cache_memory_limit 范围内)时,它会向客户端发送消息以也缩小其缓存。如果客户端没有响应或有错误,这可能会阻止 MDS 正确保持在其缓存限制内,并且它最终可能会耗尽内存并崩溃。如果客户端未能在过去 mds_recall_warning_decay_rate 秒内释放超过 mds_recall_warning_threshold 个能力(以 mds_recall_max_decay_rate 的半衰期衰减),则会出现此消息。

MDS_CLIENT_OLDEST_TID, MDS_CLIENT_OLDEST_TID_MANY

消息

“客户端 name 未能推进其最旧的客户端/刷新 tid”

描述

CephFS 客户端-MDS 协议使用一个名为 oldest tid 的字段来通知 MDS 哪些客户端请求已完全完成,因此可以被 MDS 遗忘。如果一个有错误的客户端未能推进此字段,则 MDS 可能无法正确清理客户端请求使用的资源。如果一个客户端似乎有超过 max_completed_requests(默认 100000)个请求在 MDS 端完成,但尚未在客户端的 oldest tid 值中得到说明,则会出现此消息。MDS 用于修剪已完成的客户端请求(或刷新)的最后一个 tid 作为调试辅助工具包含在 session ls(或 client ls)命令中。

MDS_DAMAGE

消息

“检测到元数据损坏”

描述

从元数据池读取时遇到了损坏或丢失的元数据。此消息表示损坏已被充分隔离,MDS 可以继续运行,尽管客户端对损坏的子树的访问将返回 IO 错误。使用 damage ls 管理套接字命令获取有关损坏的更多详细信息。此消息在遇到任何损坏时立即出现。

MDS_HEALTH_READ_ONLY

消息

“MDS处于只读模式”

描述

MDS已进入只读模式,并将向尝试修改任何元数据的客户端操作返回 EROFS 错误代码。如果 MDS 在写入元数据池时遇到写入错误,或者被管理员使用 force_readonly 管理套接字命令强制执行,MDS 将进入只读模式。

MDS_SLOW_REQUEST

消息

N 个慢速请求被阻塞”

描述

一个或多个客户端请求未及时完成,表明 MDS 运行非常缓慢,或者 RADOS 集群未及时确认日志写入,或者存在错误。使用 ops 管理套接字命令列出未完成的元数据操作。如果任何客户端请求花费的时间超过 mds_op_complaint_time(默认 30s),则会出现此消息。

MDS_CACHE_OVERSIZED

消息

“缓存中的 inode 过多”

描述

MDS 未能成功修剪其缓存以遵守管理员设置的限制。如果 MDS 缓存变得太大,守护程序可能会耗尽可用内存并崩溃。默认情况下,如果实际缓存大小(以内存计)至少比 mds_cache_memory_limit(默认 4GB)大 50%,则会出现此消息。修改 mds_health_cache_threshold 以设置警告比例。

FS_WITH_FAILED_MDS

消息

“某些 MDS 排名没有备用替换”

描述

通常,失败的 MDS 排名将由备用 MDS 替换。这种情况是暂时的,不被认为是危急的。但是,如果没有可用的备用 MDS 来替换活动的 MDS 排名,则会生成此健康警告。

MDS_INSUFFICIENT_STANDBY

消息

“可用的备用(-replay) MDS 守护程序数量少于配置数量”

描述

可以通过设置 standby_count_wanted 配置变量来配置最小数量的备用(-replay) MDS 守护程序。当配置值与可用备用(-replay) MDS 守护程序的数量不匹配时,会生成此健康警告。

FS_DEGRADED

消息

“某些 MDS 排名已被标记为失败或损坏”

描述

当一个或多个 MDS 排名由于不可恢复的错误而最终处于失败或损坏状态时。当一个(或多个)排名离线时,文件系统可能部分或完全不可用。

MDS_UP_LESS_THAN_MAX

消息

“活动排名的数量少于配置的最大 MDS 数量”

描述

可以通过设置 max_mds 配置变量来配置 MDS 排名的最大数量。当 MDS 排名的数量低于此配置值时,会生成此健康警告。

MDS_ALL_DOWN

消息

“所有 MDS 排名都不可用(文件系统离线)”

描述

所有 MDS 排名都不可用,导致文件系统完全离线。

MDS_CLIENTS_LAGGY

消息

“客户端 ID 滞后;未被驱逐,因为某些 OSD 滞后”

描述

如果 OSD 滞后(由于某些条件,如网络中断等),则可能导致客户端滞后(会话可能空闲或无法刷新脏数据以进行能力撤销)。如果 defer_client_eviction_on_laggy_osds 设置为 true(默认 true),则不会发生客户端驱逐,因此将生成此健康警告。

MDS_CLIENTS_BROKEN_ROOTSQUASH

消息

“X 个客户端具有损坏的 root_squash 实现 (MDS_CLIENTS_BROKEN_ROOTSQUASH)”

描述

在 root_squash 中发现了一个错误,该错误可能会丢失受 root_squash caps 限制的客户端所做的更改。修复需要更改协议并需要客户端升级。

这是一个 HEALTH_ERR 警告,因为它存在不一致和数据丢失的风险。建议要么升级您的客户端,要么在此期间停止使用 root_squash,如果需要,请静音警告。

要驱逐并永久阻止损坏的客户端连接到集群,请设置 required_client_featureclient_mds_auth_caps

MDS_ESTIMATED_REPLAY_TIME

消息

“HEALTH_WARN 重放:x% 完成。预计剩余时间 x 秒”

描述

当 MDS 日志重放花费超过 30 秒时,此消息指示预计完成时间。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入