第 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 处于 down (仲裁不足)

Ceph 监控器没有仲裁

clock skew

Clock skew

存储变得太大!

Ceph 监控器存储太大

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

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

错误消息日志文件查看

clock skew

主集群日志

Clock skew

clocks not synchronized

主集群日志

Clock skew

corruption: error in of record

监控日志

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 监控器标记为 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 监控器的时钟可能无法同步。
  • 如果 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,请按照 ceph-mon 守护进程中的步骤运行,但标记为"down "。

ceph-mon Daemon Cannot Start

  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。请参阅 替换失败的 monitor

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

    Caught signal (Bus error)
    重要

    不要从 monitor 目录中手动删除任何数据。反之,使用 ceph-monstore-tool 紧凑它。详情请参阅 完成 Ceph Monitor 存储

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

ceph-mon 守护进程正在运行,但 Still Marked 为 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 监控时钟是否已同步。详情请查看 Clock skew
  3. 如果选择了 状态 请验证 Ceph 监控时钟是否已同步。详情请查看 Clock skew
  4. 如果状态从 electing 变为 synchronizing,请创建一个支持问题单。详情请参阅联系红帽支持以获取服务
  5. 如果 Ceph 监控器是 leaderpeon,请验证 Ceph 监控时钟是否已同步。详情请查看 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 Storage 集群的稳定性。

如果 时钟偏移 错误配置了可能的原因,其中包括网络问题或 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 监控器

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

  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 监控器存储

4.1.6. 了解 Ceph Monitor 状态

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

  • 状态
  • 等级
  • 选举时期
  • monitor 映射(monmap)

如果 Ceph 监控器能够形成仲裁,请将 mon_statusceph 命令行工具搭配使用。

如果 Ceph 监控器无法形成仲裁,但 ceph-mon 守护进程正在运行,则使用管理 socket 来执行 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 将成为新的领导。
probing
如果 Ceph 监控器正在查找其他 Ceph 监控器,则它处于 probing 状态。例如,在启动 Ceph monitor 后,它们会进行探测,直到找到在 Ceph Monitor map(monmap)中指定的足够的 Ceph monitor 来形成仲裁。
选择
如果 Ceph Monitor 处于 electing 领导 过程,则它处于 electing 状态。通常,此状态会快速变化。
同步
如果 Ceph 监控器与其他 Ceph monitor 同步,则 Ceph 监控器处于 sync 状态,以加入仲裁。Ceph 监控器存储容量越小,同步过程越快。因此,如果您有一个大型存储,同步会需要更长的时间。

其它资源

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.