附录 B. Ceph 集群的运行状况消息


Red Hat Ceph Storage 集群可以引发的健康信息是有限的。它们定义为具有唯一标识符的健康检查。标识符是一个制表伪可读字符串,旨在使工具能够理解健康检查,并以反应其含义的方式呈现它们。

表 B.1. Monitor
健康代码描述

DAEMON_OLD_VERSION

如果旧版本的 Ceph 正在任何守护进程上运行,将发出 Warn。如果检测到多个版本,它将生成一个健康错误。

MON_DOWN

一个或多个 Ceph 监控守护进程当前为 down。

MON_CLOCK_SKEW

运行 ceph-mon 守护进程的节点上的时钟没有足够良好的同步。使用 ntpdchrony 同步时钟来解决这个问题

MON_MSGR2_NOT_ENABLED

ms_bind_msgr2 选项已启用,但一个或多个 Ceph monitor 没有配置为绑定到集群的 monmap 中的 v2 端口。通过运行 ceph mon enable-msgr2 命令来解决这个问题。

MON_DISK_LOW

一个或多个 Ceph 监控器在磁盘空间上较低。

MON_DISK_CRIT

一个或多个 Ceph 监控器在磁盘空间上非常低。

MON_DISK_BIG

一个或多个 Ceph 监控器的数据库大小非常大。

AUTH_INSECURE_GLOBAL_ID_RECLAIM

一个或多个客户端或守护进程连接到存储集群,在重新连接到 Ceph monitor 时,这些集群不会安全地回收其 global_id

AUTH_INSECURE_GLOBAL_ID_RECLAIM_ALLOWED

Ceph 目前配置为允许客户端使用不安全的进程重新连接到监控器,以回收其之前的 global_id,因为设置 auth_allow_insecure_global_id_reclaim 已设置为 true

表 B.2. Manager(管理者)
健康代码描述

MGR_DOWN

所有 Ceph 管理器守护进程目前都为 down。

MGR_MODULE_DEPENDENCY

启用的 Ceph Manager 模块无法进行依赖项检查。

MGR_MODULE_ERROR

Ceph 管理器模块遇到了意外错误。通常,这意味着从模块的服务功能中引发了未处理异常。

表 B.3. OSD
健康代码描述

OSD_DOWN

一个或多个 OSD 已标记为 down。

OSD_CRUSH_TYPE_DOWN

特定 CRUSH 子树中的所有 OSD 都标记为 down,例如主机上的所有 OSD。例如,OSD_HOST_DOWN 和 OSD_ROOT_DOWN

OSD_ORPHAN

OSD 在 CRUSH map 层次结构中引用,但不存在。运行 ceph osd crush rm osd._OSD_ID 命令来移除 OSD。

OSD_OUT_OF_ORDER_FULL

nearfull, backfillfull, full, 或, failsafefull 的利用阈值不是升序。通过运行 ceph osd set-nearfull-ratio RATIO, ceph osd set-backfillfull-ratio RATIO, 和 ceph osd set-full-ratio RATIO 来调整阈值

OSD_FULL

一个或多个 OSD 已超过完整阈值,导致存储集群无法提供写入服务。通过一个小的 ceph osd set-full-ratio RATIO 来增加完全阈值以恢复写入可用性。

OSD_BACKFILLFULL

一个或多个 OSD 已超过 backfillfull 阈值,这将阻止数据重新平衡到这个设备。

OSD_NEARFULL

一个或多个 OSD 已超过 nearfull 阈值。

OSDMAP_FLAGS

设置了一个或多个感兴趣的存储集群标志。这些标志包括 fullpauserdpausewr、noup、nodown、noin nobackfill、no recover、no rebalance、no scrubnodeep_scrubnotieragent。除了 full,标记可以通过 ceph osd set FLAGceph osd unset FLAG 命令进行清除。

OSD_FLAGS

一个或多个 OSD 或 CRUSH 设置了感兴趣的标志。这些标志包括 noupnodownnoinnoout

OLD_CRUSH_TUNABLES

CRUSH map 使用非常旧的设置,应当更新。

OLD_CRUSH_STRAW_CALC_VERSION

CRUSH map 使用一种较旧的非优化方法来计算 straw bucket 的中间权重值。

CACHE_POOL_NO_HIT_SET

一个或多个缓存池没有配置为跟踪利用率,这会阻止分层代理识别冷对象以清空并从缓存中驱除。使用 ceph osd pool set_POOL_NAME_ hit_set_type TYPE, ceph osd pool set POOL_NAME hit_set_period PERIOD_IN_SECONDS, ceph osd pool set POOL_NAME hit_set_count NUMBER_OF_HIT_SETS, 和 ceph osd pool set POOL_NAME hit_set_fpp TARGET_FALSE_POSITIVE_RATE 命令配置缓存池中的击中集。

OSD_NO_SORTBITWISE

未设置 sortbit ther 标志。使用 ceph osd set sortbitther 命令设置 标志。

POOL_FULL

一个或多个池已达到其配额,不再允许写入。使用 ceph osd pool set-quota POOL_NAME max_ objects NUMBER_OF_OBJECTSceph osd pool set-quota POOL_NAME max_ bytes BYTES 增加池配额,或删除一些现有数据,以降低利用率。

BLUEFS_SPILLOVER

使用 BlueStore 后端的一个或多个 OSD 被分配 db 分区,但空间已填满,因此元数据已"中断"到正常较慢的设备。使用 ceph config set osd bluestore_warn_on_bluefs_spillover false 命令来禁用此功能。

BLUEFS_AVAILABLE_SPACE

此输出给出了三个值,即 BDEV_DB 可用值:BDE V_SLOW freeavailable_from_bluestore

BLUEFS_LOW_SPACE

如果 BlueStore 文件系统(BlueFS)在可用空间上运行较低,且可用 _from_bluestore 很少可用,则可考虑降低蓝FS 分配单元大小。

BLUESTORE_FRAGMENTATION

因为 BlueStore 在底层存储上正常工作的空间会变得碎片化。这是正常现象,但过度的碎片将导致减慢。

BLUESTORE_LEGACY_STATFS

BlueStore 以每个池粒度为基础跟踪其内部使用量统计数据,一个或多个 OSD 具有 BlueStore 卷。使用 ceph config set global bluestore_warn_on_legacy_statfs false 命令禁用警告。

BLUESTORE_NO_PER_POOL_OMAP

BlueStore 按照池跟踪 omap 空间利用率。使用 ceph config set global bluestore_warn_on_no_per_pool_omap false 命令禁用警告。

BLUESTORE_NO_PER_PG_OMAP

BlueStore 按照 PG 跟踪 omap 空间利用率。使用 ceph config set global bluestore_warn_on_no_per_pg_omap false 命令禁用警告。

BLUESTORE_DISK_SIZE_MISMATCH

使用 BlueStore 的一个或多个 OSD 在物理设备的大小和元数据跟踪其大小之间存在内部不一致。

BLUESTORE_NO_COMPRESSION `

一个或多个 OSD 无法加载 BlueStore 压缩插件。这可能是由安装中断造成的,其中 ceph-osd 二进制文件与压缩插件不匹配,或者是最近没有包括 ceph-osd 守护进程重启的升级。

BLUESTORE_SPURIOUS_READ_ERRORS

使用 BlueStore 的一个或多个 OSD 检测主设备上的虚假读取错误。BlueStore 通过重试磁盘读取从这些错误中恢复。

表 B.4. 设备健康状况
健康代码描述

DEVICE_HEALTH

一个或多个设备应该很快失败,其中警告阈值由 mgr/devicehealth/warn_threshold 配置选项控制。将设备标记为 out,以迁移数据并替换硬件。

DEVICE_HEALTH_IN_USE

个或多个设备应该很快失败,并根据 mgr/devicehealth/mark_out_threshold 标记为存储集群的"出站",但它仍会参与另一个 PG。

DEVICE_HEALTH_TOOMANY

应该会很快出现太多设备失败,并且 mgr/devicehealth/self_heal 的行为被启用,因此所有孤岛设备标记会超过集群 mon_osd_min_in_ratio 比率,从而防止过多 OSD 自动标记为 out

表 B.5. 池和放置组
健康代码描述

PG_AVAILABILITY

数据可用性会降低,这意味着存储集群无法为集群中的某些数据提供潜在的读写请求。

PG_DEGRADED

一些数据的数据冗余会降低,这意味着存储集群没有复制池或纠删代码片段所需的副本数。

PG_RECOVERY_FULL

由于存储集群中缺少可用空间,数据冗余可能会减少或面临风险,特别是一个或多个 PG 设置了 recovery_toofull 标志,这意味着集群无法迁移或恢复数据,因为一个或多个 OSD 超过 full 阈值。

PG_BACKFILL_FULL

由于存储集群中缺少可用空间,数据冗余可能会减少或面临风险,特别是一个或多个 PG 设置了 backfill_toofull 标志,这意味着集群无法迁移或恢复数据,因为一个或多个 OSD 超过 full 阈值。

PG_DAMAGED

数据清理在存储集群中发现了一些数据一致性问题,特别是一个或多个 PG 设置了不一致或 snaptrim_error 标志,表明之前的清理操作发现问题,或者设置了 repair 标志,这意味着当前正在进行此类不一致的修复。

OSD_SCRUB_ERRORS

最近的 OSD 清理已揭示了不一致的情况。

OSD_TOO_MANY_REPAIRS

当出现读取错误并存在另一个副本时,可使用它立即修复错误,以便客户端可以获取对象数据。

LARGE_OMAP_OBJECTS

一个或多个池包括大量 omap 对象,由 osd_deep_scrub_large_omap_object_key_thresholdosd_deep_scrub_large_omap_object_value_sum_threshold 决定,或由这两者同时决定。使用 ceph config set osd_deep_scrub_large_omap_object_key_threshold KEYSceph config set osd osd_deep_scrub_large_omap_object_value_sum_threshold BYTES 命令调整阈值。

CACHE_POOL_NEAR_FULL

缓存层池已接近满。使用 ceph osd pool set CACHE_POOL_NAME target_max_ bytes BYTESceph osd pool set CACHE_POOL_NAME target_max_ bytes BYTES 命令调整缓存池目标大小。

TOO_FEW_PGS

存储集群中使用的 PG 数量低于每个 OSD 的 mon_pg_warn_min_per_osd PG 的可配置阈值。

POOL_PG_NUM_NOT_POWER_OF_TWO

一个或多个池带有值不是二的指数的 pg_num 值。使用 ceph config set global mon_warn_on_pool_pg_num_not_power_of_two false 命令禁用警告。

POOL_TOO_FEW_PGS

一个或多个池可能具有更多 PG,具体取决于池中当前存储的数据量。您可以使用 ceph osd pool set POOL_NAME pg_autoscale_mode off 命令禁用 PG 的自动扩展,使用 ceph osd pool set POOL_NAME pg_autoscale_mode on 命令自动调整 PG 数量,或使用 ceph osd pool set POOL_NAME pg_num _NEW_PG_NUMBER 命令手动设置 PG 数量。

TOO_MANY_PGS

存储集群中使用的 PG 数量高于每个 OSD 的可配置阈值 mon_max_pg_per_osd PG。通过添加更多硬件增加集群中的 OSD 数量。

POOL_TOO_MANY_PGS

一个或多个池可能具有更多 PG,具体取决于池中当前存储的数据量。您可以使用 ceph osd pool set POOL_NAME pg_autoscale_mode off 命令禁用 PG 的自动扩展,使用 ceph osd pool set POOL_NAME pg_autoscale_mode on 命令自动调整 PG 数量,或使用 ceph osd pool set POOL_NAME pg_num _NEW_PG_NUMBER 命令手动设置 PG 数量。

POOL_TARGET_SIZE_BYTES_OVERCOMMITTED

个或多个池设置了 target_size_bytes 属性来估算池的预期大小,但值超过了可用存储总数。通过 ceph osd pool set POOL_NAME target_size_ bytes 0 命令,将池的值设置为零。

POOL_HAS_TARGET_SIZE_BYTES_AND_RATIO

一个或多个池同时设置了 target_size_bytestarget_size_ratio,以估算池的预期大小。通过 ceph osd pool set POOL_NAME target_size_ bytes 0 命令,将池的值设置为零。

TOO_FEW_OSDS

存储集群中的 OSD 数量低于 o'sd_pool_default_size 的可配置阈值。

SMALLER_PGP_NUM

一个或多个池带有值小于 pg_numpgp_num 值。这通常表示 PG 计数已增加,且不会增加放置行为。通过设置 pgp_num 匹配 pg_num with ceph osd pool set POOL_NAME pgp_num PG_NUM_VALUE 来解决这个问题。

MANY_OBJECTS_PER_PG

个或多个池每个 PG 的平均对象数量明显高于存储集群总体平均值。特定阈值由 mon_pg_warn_max_object_skew 配置值控制。

POOL_APP_NOT_ENABLED

存在一个池,其中包含一个或多个对象,但尚未标记供特定应用使用。使用 rbd pool init POOL_NAME 命令标记供应用使用的池,从而解决这一警告。

POOL_FULL

个或多个池已达到其配额。触发此错误条件的阈值由 mon_pool_quota_crit_threshold 配置选项控制。

POOL_NEAR_FULL

一个或多个池正在接近配置的全度阈值。使用 ceph osd pool set-quota POOL_NAME max_ objects NUMBER_OF_OBJECTSceph osd pool set-quota POOL_NAME max_ bytes BYTES 命令调整池配额。

OBJECT_MISPLACED

存储群集中的一个或多个对象不存储在存储器集群希望它存储的节点上。这表明,由于最近一些存储集群更改,数据迁移尚未完成。

OBJECT_UNFOUND

存储集群中无法找到一个或多个对象,特别是 OSD 知道对象应存在新的或更新的副本,但当前在线的 OSD 上尚未找到该对象版本的副本。

SLOW_OPS

一个或多个 OSD 或 monitor 的请求需要很长时间进行处理。这可能代表了极端负载、存储设备缓慢或软件漏洞。

PG_NOT_SCRUBBED

最近没有清理一个或多个 PG。PG 通常在由 osd_scrub_max_interval 全局指定的每一配置间隔内清理。使用 ceph pg scrub PG_ID 命令启动刮除。

PG_NOT_DEEP_SCRUBBED

最近没有对一个或多个 PG 进行深度清理。使用 ceph pg deep-scrub PG_ID 命令启动清理。PG 通常会清理每个 osd_deep_scrub_interval 秒,当 mon_warn_pg_not_deep_scrubbed_ratio 间隔百分比已过期时,这个警告会触发。

PG_SLOW_SNAP_TRIMMING

一个或多个 PG 的快照修剪队列已超过配置的警告阈值。这表明最近删除了大量的快照,或者 OSD 无法足够快速地修剪快照,以跟上新快照删除的速度。

表 B.6. 其它
健康代码描述

RECENT_CRASH

一个或多个 Ceph 守护进程最近已崩溃,并且该崩溃尚未被管理员确认。

TELEMETRY_CHANGED

遥测已经启用,但遥测报告的内容从那时起发生了变化,因此将不会发送遥测报告。

AUTH_BAD_CAPS

一个或多个 auth 用户具有无法被 monitor 解析的功能。使用 ceph auth ENTITY_NAME DAEMON_TYPE CAPS 命令更新用户的能力。

OSD_NO_DOWN_OUT_INTERVAL

mon_osd_down_out_interval 选项设为零,这意味着系统不会在 OSD 出现故障后自动执行任何修复或修复操作。用 ceph config global mon_warn_on_osd_down_out_interval_zero false 命令静默间隔。

DASHBOARD_DEBUG

启用了 Dashboard 调试模式。这意味着,如果在处理 REST API 请求时出现错误,则 HTTP 错误响应包含 Python 回溯。使用 ceph dashboard debug disable 命令禁用调试模式。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.