第 4 章 Ceph 监控器故障排除
本章介绍了如何修复与 Ceph 监控器相关的最常见的错误。
先决条件
- 验证网络连接。
4.1. 最常见的 Ceph Monitor 错误
				下表列出了 ceph health detail 命令返回的最常见错误消息,或者包含在 Ceph 日志中。这些表中提供了相应部分的链接,这些部分解释了错误并指向修复问题的特定程序。
			
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
4.1.1. Ceph 监控错误消息
常见 Ceph Monitor 错误消息表,以及潜在的修复。
| 错误消息 | 查看 | 
|---|---|
| 
									 | |
| 
									 | |
| 
									 | |
| 
									 | |
4.1.2. Ceph 日志中常见的 Ceph Monitor 错误消息
Ceph 日志中找到的常见 Ceph Monitor 错误消息表,以及到潜在修复的链接。
| 错误消息 | 日志文件 | 查看 | 
|---|---|---|
| 
									 | 主集群日志 | |
| 
									 | 主集群日志 | |
| 
									 | 监控日志 | |
| 
									 | 监控日志 | |
| 
									 | 监控日志 | 
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)
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 监控器将自身标记为 leader 或 peon,那么它认为自己处于仲裁状态,而剩余的集群则确定它没有处于这个状态。此问题可能是由时钟同步失败造成的。
要排除此问题,请执行以下操作
- 验证 - ceph-mon守护进程是否正在运行。如果没有,启动它:- 语法 - systemctl status ceph-FSID@DAEMON_NAME systemctl start ceph-FSID@DAEMON_NAME - systemctl status ceph-FSID@DAEMON_NAME systemctl start ceph-FSID@DAEMON_NAME- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 示例 - systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service systemctl start ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@mon.host01.service - [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- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							如果无法启动 ceph-mon守护进程,请按照 Theceph-mondaemon cannot start 步骤进行操作。
- 
							如果您能够启动 ceph-mon守护进程但标记为down,请按照 Theceph-mon守护进程正在运行,但标记为"down "。
ceph-mon 守护进程无法启动
- 检查位于 - /var/log/ceph/CLUSTER_FSID/ceph-mon.HOST_NAME.log的对应 Ceph Monitor 日志。注意- 默认情况下,日志文件夹中不存在 monitor 日志。您需要启用记录到文件,以便日志出现在 文件夹中。请参阅 Ceph 守护进程日志,以启用日志记录到文件。 
- 如果日志包含与以下类似的错误消息,Ceph 监控器可能具有损坏的存储: - Corruption: error in middle of record Corruption: 1 missing files; example: /var/lib/ceph/mon/mon.0/store.db/1234567.ldb - Corruption: error in middle of record Corruption: 1 missing files; example: /var/lib/ceph/mon/mon.0/store.db/1234567.ldb- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 若要修复此问题,可替换 Ceph Monitor。请参阅 替换失败的监控器。 
- 如果日志包含与以下类似的错误消息, - /var/分区可能已满。从- /var/中删除任何不必要的数据。- Caught signal (Bus error) - Caught signal (Bus error)- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- 不要手动删除 Monitor 目录中的任何数据。反之,使用 - ceph-monstore-tool来压缩它。详情请参阅 Compacting the Ceph Monitor 存储。
- 如果您看到任何其他错误消息,请创建一个支持问题单。详情请参阅联系红帽支持以获取服务。
ceph-mon 守护进程正在运行,但 Still 标记为 down
- 从没有仲裁的 Ceph Monitor 主机中,使用 - mon_status命令检查其状态:- ceph daemon ID mon_status - [root@mon ~]# ceph daemon ID mon_status- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 使用 Ceph Monitor 的 - ID替换 ID,例如:- [ceph: root@host01 /]# ceph daemon mon.host01 mon_status - [ceph: root@host01 /]# ceph daemon mon.host01 mon_status- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果状态是 probing,请验证 - mon_status输出中其他 Ceph monitor 的位置。- 
									如果地址不正确,Ceph Monitor 具有不正确的 Ceph monitor map (monmap)。要解决这个问题,请参阅 注入 Ceph monitor 映射。
- 如果地址正确,请验证 Ceph Monitor 时钟是否已同步。详情请查看 Clock skew。
 
- 
									如果地址不正确,Ceph Monitor 具有不正确的 Ceph monitor map (
- 如果状态选择 , 请验证 Ceph Monitor 时钟是否已同步。详情请查看 Clock skew。
- 如果状态从 electing 变为 synchronizing,请创建一个支持问题单。详情请参阅联系红帽支持以获取服务。
- 如果 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)
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
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 上正常工作。
				
要排除此问题,请执行以下操作
- 验证您的网络是否正常工作。
- 如果您使用远程 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
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 不在仲裁之外。
				
要排除此问题,请执行以下操作
- 检查数据库的大小: - 语法 - du -sch /var/lib/ceph/CLUSTER_FSID/mon.HOST_NAME/store.db/ - du -sch /var/lib/ceph/CLUSTER_FSID/mon.HOST_NAME/store.db/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 指定集群的名称以及运行 - ceph-mon的主机的短主机名。- 示例 - du -sh /var/lib/ceph/b341e254-b165-11ed-a564-ac1f6bb26e8c/mon.host01/ - [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- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 紧凑 Ceph Monitor 存储。详情请参阅 编译 Ceph Monitor 存储。
其它资源
4.1.6. 了解 Ceph Monitor 状态
					mon_status 命令返回 Ceph Monitor 的信息,例如:
				
- 状态
- 等级
- 选举时期
- 
							Monitor map (monmap)
					如果 Ceph 监控器能够形成仲裁,请将 mon_status 与 ceph 命令行实用程序一起使用。
				
					如果 Ceph monitor 无法形成仲裁,但 ceph-mon 守护进程正在运行,请使用管理套接字来执行 mon_status。
				
mon_status 输出示例
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 Ceph Storage Troubleshooting Guide 中的 第 4.1.1 节 “Ceph 监控错误消息”。
- 请参阅 Red Hat Ceph Storage Troubleshooting Guide 中的 第 4.1.2 节 “Ceph 日志中常见的 Ceph Monitor 错误消息”。