第 4 章 Ceph 监控器故障排除


本章介绍了如何修复与 Ceph 监控器相关的最常见的错误。

先决条件

  • 验证网络连接。

4.1. 最常见的 Ceph Monitor 错误

下表列出了 ceph health detail 命令返回的最常见错误消息,或者包含在 Ceph 日志中。这些表中提供了相应部分的链接,这些部分解释了错误并指向修复问题的特定程序。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。

4.1.1. Ceph 监控错误消息

常见 Ceph Monitor 错误消息表,以及潜在的修复。

错误消息查看

HEALTH_WARN

mon.X 已关闭(仲裁外)

Ceph 监控器没有仲裁

clock skew

Clock skew

存储会变得太大!

Ceph 监控器存储太大

4.1.2. Ceph 日志中常见的 Ceph Monitor 错误消息

Ceph 日志中找到的常见 Ceph Monitor 错误消息表,以及到潜在修复的链接。

错误消息日志文件查看

clock skew

主集群日志

Clock skew

clocks not synchronized

主集群日志

Clock skew

损坏:记录中出现的错误

监控日志

Ceph 监控器没有仲裁

恢复 Ceph Monitor 存储

损坏:1 缺少文件

监控日志

Ceph 监控器没有仲裁

恢复 Ceph Monitor 存储

Caught signal (Bus error)

监控日志

Ceph 监控器没有仲裁

4.1.3. Ceph 监控器没有仲裁

一个或多个 Ceph 监控器标记为 down,但其他 Ceph 监控器仍然可以组成仲裁。此外,ceph health detail 命令返回类似如下的错误消息:

HEALTH_WARN 1 mons down, quorum 1,2 mon.b,mon.c
mon.a (rank 0) addr 127.0.0.1:6789/0 is down (out of quorum)

这意味着

Ceph 由于各种原因,Ceph 会将 Ceph 标记为 down

如果 ceph-mon 守护进程未在运行,它可能具有损坏的存储或者其他一些错误阻止守护进程启动。另外,/var/ 分区也可能已满。因此,ceph-mon 无法对默认位于 /var/lib/ceph/mon-SHORT_HOST_NAME/store.db 和终止的存储执行任何操作。

如果 ceph-mon 守护进程正在运行,但 Ceph 监控器没有仲裁并标记为 down,则问题的原因取决于 Ceph Monitor 状态:

  • 如果 Ceph 监控器处于 probing 状态的时间超过预期,则代表它无法找到其他 Ceph 监控器。此问题可能是由网络问题造成的,或者 Ceph monitor 可能有过时的 Ceph monitor map(monmap),并尝试访问错误的 IP 地址上的其他 Ceph 监控器。或者,如果 monmap 是最新的,Ceph Monitor 的时钟可能无法同步。
  • 如果 Ceph monitor 处于 electing 状态的时间超过预期,Ceph 监控器的时钟可能没有同步。
  • 如果 Ceph Monitor 将其状态从 synchronizing 变为 electing 并返回,则代表集群状态有进展。这意味着,生成新映射的速度比同步过程可以处理的速度快。
  • 如果 Ceph 监控器将自身标记为 leaderpeon,那么它认为自己处于仲裁状态,而剩余的集群则确定它没有处于这个状态。此问题可能是由时钟同步失败造成的。

要排除此问题,请执行以下操作

  1. 验证 ceph-mon 守护进程是否正在运行。如果没有,启动它:

    语法

    systemctl status ceph-FSID@DAEMON_NAME
    systemctl start ceph-FSID@DAEMON_NAME

    示例

    [root@mon ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service
    [root@mon ~]# systemctl start ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service

  2. 如果无法启动 ceph-mon 守护进程,请按照 The ceph-mon daemon cannot start 步骤进行操作。
  3. 如果您能够启动 ceph-mon 守护进程但标记为 down,请按照 The ceph-mon 守护进程正在运行,但标记为"down "。

ceph-mon 守护进程无法启动

  1. 检查位于 /var/log/ceph/CLUSTER_FSID/ceph-mon.HOST_NAME.log 的对应 Ceph Monitor 日志。

    注意

    默认情况下,日志文件夹中不存在 monitor 日志。您需要启用记录到文件,以便日志出现在 文件夹中。请参阅 Ceph 守护进程日志,以启用日志记录到文件。

  2. 如果日志包含与以下类似的错误消息,Ceph 监控器可能具有损坏的存储:

    Corruption: error in middle of record
    Corruption: 1 missing files; example: /var/lib/ceph/mon/mon.0/store.db/1234567.ldb

    若要修复此问题,可替换 Ceph Monitor。请参阅 替换失败的监控器

  3. 如果日志包含与以下类似的错误消息,/var/ 分区可能已满。从 /var/ 中删除任何不必要的数据。

    Caught signal (Bus error)
    重要

    不要手动删除 Monitor 目录中的任何数据。反之,使用 ceph-monstore-tool 来压缩它。详情请参阅 Compacting the Ceph Monitor 存储

  4. 如果您看到任何其他错误消息,请创建一个支持问题单。详情请参阅联系红帽支持以获取服务

ceph-mon 守护进程正在运行,但 Still 标记为 down

  1. 从没有仲裁的 Ceph Monitor 主机中,使用 mon_status 命令检查其状态:

    [root@mon ~]# ceph daemon ID mon_status

    使用 Ceph Monitor 的 ID 替换 ID,例如:

    [ceph: root@host01 /]# ceph daemon mon.host01 mon_status
  2. 如果状态是 probing,请验证 mon_status 输出中其他 Ceph monitor 的位置。

    1. 如果地址不正确,Ceph Monitor 具有不正确的 Ceph monitor map (monmap)。要解决这个问题,请参阅 注入 Ceph monitor 映射
    2. 如果地址正确,请验证 Ceph Monitor 时钟是否已同步。详情请查看 Clock skew
  3. 如果状态选择 请验证 Ceph Monitor 时钟是否已同步。详情请查看 Clock skew
  4. 如果状态从 electing 变为 synchronizing,请创建一个支持问题单。详情请参阅联系红帽支持以获取服务
  5. 如果 Ceph Monitor 是 领导机peon,请验证 Ceph Monitor 时钟是否已同步。详情请查看 Clock skew。如果同步时钟无法解决问题,请创建一个支持问题单。详情请参阅联系红帽支持以获取服务

其它资源

4.1.4. Clock skew

Ceph 监控器没有仲裁,ceph health detail 命令输出包含类似如下的错误消息:

mon.a (rank 0) addr 127.0.0.1:6789/0 is down (out of quorum)
mon.a addr 127.0.0.1:6789/0 clock skew 0.08235s > max 0.05s (latency 0.0045s)

另外,Ceph 日志包含类似如下的错误消息:

2022-05-04 07:28:32.035795 7f806062e700 0 log [WRN] : mon.a 127.0.0.1:6789/0 clock skew 0.14s > max 0.05s
2022-05-04 04:31:25.773235 7f4997663700 0 log [WRN] : message from mon.1 was stamped 0.186257s in the future, clocks not synchronized

这意味着

clock skew 错误消息表示 Ceph Monitor 的时钟没有同步。时钟同步非常重要,因为 Ceph 监控器依赖于时间精度,并在其时钟未同步时行为不可预测。

mon_clock_drift_allowed 参数决定时钟容许在哪些位置。默认情况下,此参数设置为 0.05 秒。

重要

不要在没有之前的测试的情况下更改 mon_clock_drift_allowed 的默认值。更改此值可能会影响 Ceph 监控和 Ceph 存储集群的稳定性。

clock skew 错误可能的原因包括 chrony 网络时间协议(NTP)同步的网络问题或问题(如果已配置)。另外,时间同步无法在虚拟机上部署的 Ceph monitor 上正常工作。

要排除此问题,请执行以下操作

  1. 验证您的网络是否正常工作。
  2. 如果您使用远程 NTP 服务器,请考虑在网络上部署自己的 chrony NTP 服务器。详情请查看红帽客户门户网站中的相关 OS 版本的 Product Documentation for {os-product 中的配置基本系统设置指南中的 使用 Chrony 套件配置 NTP 章节。
注意

Ceph 仅每五分钟评估时间同步,使得修复问题和清除 时钟偏移 消息之间会有一个延迟。

4.1.5. Ceph 监控器存储太大

ceph health 命令返回类似如下的错误消息:

mon.ceph1 store is getting too big! 48031 MB >= 15360 MB -- 62% avail

这意味着

Ceph 监控存储实际上是一个 RocksDB 数据库,它将条目存储为键值对。数据库包含一个集群映射,默认位于 /var/lib/ceph/CLUSTER_FSID/mon.HOST_NAME/store.db

查询大型 monitor 存储可能需要一些时间。因此,Ceph Monitor 可能会延迟响应客户端查询。

此外,如果 /var/ 分区已满,Ceph Monitor 无法对存储和终止执行任何写入操作。有关此问题故障排除的详细信息,请参阅 Ceph Monitor 不在仲裁之外

要排除此问题,请执行以下操作

  1. 检查数据库的大小:

    语法

    du -sch /var/lib/ceph/CLUSTER_FSID/mon.HOST_NAME/store.db/

    指定集群的名称以及运行 ceph-mon 的主机的短主机名。

    示例

    [root@mon ~]# du -sh  /var/lib/ceph/b341e254-b165-11ed-a564-ac1f6bb26e8c/mon.host01/
    109M	/var/lib/ceph/b341e254-b165-11ed-a564-ac1f6bb26e8c/mon.host01/
    47G     /var/lib/ceph/mon/ceph-ceph1/store.db/
    47G     total

  2. 紧凑 Ceph Monitor 存储。详情请参阅 编译 Ceph Monitor 存储

4.1.6. 了解 Ceph Monitor 状态

mon_status 命令返回 Ceph Monitor 的信息,例如:

  • 状态
  • 等级
  • 选举时期
  • Monitor map (monmap)

如果 Ceph 监控器能够形成仲裁,请将 mon_statusceph 命令行实用程序一起使用。

如果 Ceph monitor 无法形成仲裁,但 ceph-mon 守护进程正在运行,请使用管理套接字来执行 mon_status

mon_status 输出示例

{
    "name": "mon.3",
    "rank": 2,
    "state": "peon",
    "election_epoch": 96,
    "quorum": [
        1,
        2
    ],
    "outside_quorum": [],
    "extra_probe_peers": [],
    "sync_provider": [],
    "monmap": {
        "epoch": 1,
        "fsid": "d5552d32-9d1d-436c-8db1-ab5fc2c63cd0",
        "modified": "0.000000",
        "created": "0.000000",
        "mons": [
            {
                "rank": 0,
                "name": "mon.1",
                "addr": "172.25.1.10:6789\/0"
            },
            {
                "rank": 1,
                "name": "mon.2",
                "addr": "172.25.1.12:6789\/0"
            },
            {
                "rank": 2,
                "name": "mon.3",
                "addr": "172.25.1.13:6789\/0"
            }
        ]
    }
}

Ceph monitor 状态

leader
在选择阶段,Ceph 监控器正在选举领导机。领导机是排名最高的 Ceph 监控器,其排名最低。在上例中,领导机是 mon.1
peon
Ppeons 是仲裁中的 Ceph monitor,而不是领导。如果领导失败,则排名最高的 peon 将成为新的领导。
探测
如果 Ceph monitor 正在查找其他 Ceph 监控器,则 Ceph Monitor 处于 probing 状态。例如,在启动 Ceph monitor 后,它们会进行探测,直到找到在 Ceph Monitor map(monmap)中指定的足够的 Ceph monitor 来形成仲裁。
选择
如果 Ceph 监控器处于选举状态,则 Ceph Monitor 处于 electing 状态。通常,此状态会快速变化。
同步
如果 Ceph 监控器与其他 Ceph 监控器同步,则 Ceph 监控器处于同步状态,以加入仲裁。Ceph 监控器存储容量越小,同步过程越快。因此,如果您有一个大型存储,同步会需要更长的时间。

其它资源

  • 详情请参阅 Red Hat Ceph Storage 7 管理指南中的使用 Ceph 管理套接字一节。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.