5.2. 大多数常见 Ceph OSD 错误
下表列出了 ceph 运行状况详细信息
命令返回或包含在 Ceph 日志中的最常见错误消息:这些表中提供了相应的部分的链接,这些部分解释了错误并指向修复问题的特定程序。
5.2.1. 先决条件 复制链接链接已复制到粘贴板!
- 对 Ceph OSD 节点的根级别访问权限.
5.2.2. Ceph OSD 错误消息 复制链接链接已复制到粘贴板!
常见 Ceph OSD 错误消息和可能的修复表。
错误消息 | 请查看 |
---|---|
| |
| |
| |
| |
| |
| |
| |
|
5.2.3. Ceph 日志中的常见 Ceph OSD 错误消息 复制链接链接已复制到粘贴板!
Ceph 日志中常见 Ceph OSD 错误消息的列表,以及可能的修复链接。
错误消息 | 日志文件 | 请查看 |
---|---|---|
| 主集群日志 | |
| 主集群日志 | |
| 主集群日志 | |
| OSD 日志 |
5.2.4. 完整 OSD 复制链接链接已复制到粘贴板!
ceph 运行状况详情
命令返回类似如下的错误消息:
HEALTH_ERR 1 full osds osd.3 is full at 95%
HEALTH_ERR 1 full osds
osd.3 is full at 95%
此 Means 是什么
Ceph 可以防止客户端在完整的 OSD 节点上执行 I/O 操作,以避免数据丢失。当集群达到 mon
消息。默认情况下,此参数设置为 _osd_full_ratio 参数设定的容量时,它会返回 HEALTH_
ERR full osds0.95
,即集群容量的 95%。
要排除这个问题,请执行以下操作
确定使用原始存储的百分比(%RAW USED
):
ceph df
# ceph df
如果 %RAW USED
超过 70-75%,您可以:
- 删除不必要的数据.这是避免生产停机时间的短期解决方案。
- 通过添加新 OSD 节点来扩展集群。这是红帽推荐的长期解决方案。
其它资源
- 《 红帽 Ceph 存储故障排除指南 》中的 近乎完整的 OSDS.
- 详情请参阅从完整存储集群中删除数据。
5.2.5. 回填 full OSD 复制链接链接已复制到粘贴板!
ceph 运行状况详情
命令返回类似如下的错误消息:
health: HEALTH_WARN 3 backfillfull osd(s) Low space hindering backfill (add storage if this doesn't resolve itself): 32 pgs backfill_toofull
health: HEALTH_WARN
3 backfillfull osd(s)
Low space hindering backfill (add storage if this doesn't resolve itself): 32 pgs backfill_toofull
这意味着
当一个或多个 OSD 超过 backfillfull 阈值时,Ceph 会阻止数据重新平衡此设备。这是一个早期警告,重新平衡可能无法完成,集群正在完全接近。默认的 backfullfull 阈值为 90%。
要排除这个问题,请执行以下操作
按池检查使用量:
ceph df
ceph df
如果 %RAW USED
超过 70-75%,您可以执行以下操作之一:
- 删除不必要的数据.这是避免生产停机时间的短期解决方案。
- 通过添加新 OSD 节点来扩展集群。这是红帽推荐的长期解决方案。
增加包含
back
的 OSD 的回填 full 比率,以允许恢复过程继续。尽快在集群中添加新存储,或移除数据以防止填充更多 OSD。full
_toofull语法
ceph osd set-backfillfull-ratio VALUE
ceph osd set-backfillfull-ratio VALUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VALUE 的范围为 0.0 到 1.0。
示例
[ceph: root@host01/]# ceph osd set-backfillfull-ratio 0.92
[ceph: root@host01/]# ceph osd set-backfillfull-ratio 0.92
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.6. nearfull OSD 复制链接链接已复制到粘贴板!
ceph 运行状况详情
命令返回类似如下的错误消息:
HEALTH_WARN 1 nearfull osds osd.2 is near full at 85%
HEALTH_WARN 1 nearfull osds
osd.2 is near full at 85%
此 Means 是什么
当集群达到 mon
消息。默认情况下,此参数设置为 osd nearfull 比率 defaults 参数所设置的容量时,Ceph 会返回 nearfull osd
s0.85
,即集群容量的 85%。
Ceph 以尽可能最佳的方式分发基于 CRUSH 层次结构的数据,但它不能保证均匀分布。数据分布不均匀 和 nearfull osds
信息的主要原因是:
- OSD 在集群中的 OSD 节点之间没有平衡。也就是说,一些 OSD 节点托管的 OSD 比其他 OSD 高得多,或者 CRUSH map 中部分 OSD 的权重不足以满足其容量要求。
- PG 计数与 OSD 数量、用例、每个 OSD 目标 PG 和 OSD 利用率不同。
- 集群使用不当的 CRUSH 可调项。
- OSD 的后端存储几乎已满。
排除此问题,请执行以下操作:
- 验证 PG 计数是否足够,并在需要时增加。
- 验证您是否使用最优于集群版本的 CRUSH 可调项,如果不是,请进行调整。
- 根据利用率更改 OSD 的权重。
启用 Ceph 管理器均衡器模块,优化 OSD 之间的 PG 放置,从而实现均衡分布
示例
ceph mgr module enable balancer
[root@mon ~]# ceph mgr module enable balancer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定 OSD 使用的磁盘上保留多少空间。
查看 OSD 一般使用的空间量:
ceph osd df
[root@mon ~]# ceph osd df
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看 OSD 在特定节点上使用的空间:从包含
接近ful
OSD 的节点运行以下命令:df
$ df
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果需要,添加新 OSD 节点。
其它资源
- 完整 OSD
- 请参阅《 红帽 Ceph 存储操作指南》中的使用 Ceph管理器平衡器模块 章节。
- 请参阅红帽 Ceph 存储 4 的存储策略指南中的设置 OSD Weight by Utilization 部分。
- 详细信息,请参见《红帽 Ceph 存储 4 存储策略 指南》中的 CRUSH 可调项 小节,以及如何测试对红帽客户门户上红帽 Ceph 存储中 OSD 的 PG 分布的影响 CRUSH map 可调项。
- 详情请参阅增加 PG。
5.2.7. 故障 OSD 复制链接链接已复制到粘贴板!
ceph health
命令返回类似如下的错误:
HEALTH_WARN 1/3 in osds are down
HEALTH_WARN 1/3 in osds are down
此 Means 是什么
由于服务故障或与其他 OSD 通信存在问题,其中一个 ceph-osd
进程不可用。因此,存活的 ceph-osd
守护进程会向 monitor 报告此故障。
如果 ceph-osd
守护进程未在运行,则底层 OSD 驱动器或文件系统已损坏,或者存在一些其他错误(如缺少密钥环)会阻止守护进程启动。
在大多数情况下,网络问题会导致 ceph-osd
守护进程正在运行但依然标记为 down
时的情况。
要排除这个问题,请执行以下操作
确定哪个 OSD 处于
down 状态
:ceph health detail
[root@mon ~]# ceph health detail HEALTH_WARN 1/3 in osds are down osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尝试重启
ceph-osd
守护进程:systemctl restart ceph-osd@OSD_NUMBER
[root@mon ~]# systemctl restart ceph-osd@OSD_NUMBER
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
OSD_NUMBER
替换为down
的 OSD ID,例如:systemctl restart ceph-osd@0
[root@mon ~]# systemctl restart ceph-osd@0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您无法启动
ceph-osd
,请按照ceph-osd
守护进程中的步骤启动。 -
如果您能够启动
ceph-osd
守护进程但已标记为down
,请按照ceph-osd
守护进程中的步骤运行,但仍标记为"down"。
-
如果您无法启动
ceph-osd
守护进程无法启动
- 如果您的节点包含多个 OSD(通常超过 12 倍),请验证默认最多线程数(PID 数)是否足够。有关 详细信息,请参阅增加 PID 数。
-
验证 OSD 数据和日志分区是否已正确挂载。您可以使用
ceph-volume lvm list 命令列出
与 Ceph 存储群集关联的所有设备和卷,然后手动检查它们是否已正确挂载。详情请查看mount(8)
手册页。 -
如果您收到错误
的密钥环:缺少密钥环,无法使用 cephx 进行身份验证
错误消息,OSD 缺少密钥环。 如果您收到错误
ROR:无法对 /var/lib/ceph/osd/ceph-1 错误消息打开 OSD 超级块
,ceph-osd
守护进程无法读取底层文件系统。有关如何排除故障并修复此错误的说明,请参阅以下步骤。注意如果在 OSD 主机引导期间返回此错误消息,请打开支持票据,因为这可能表示 在红帽 Bugzilla 1439210 中跟踪了一个已知问题。
检查对应的日志文件,以确定故障的原因。默认情况下,Ceph 将日志文件存储在裸机部署的
/var/log/ceph/
目录中。注意对于基于容器的部署,Ceph 会生成日志到
journald
。您可以通过在 Ceph 配置文件中 [global] 下将log_to_file
参数设置为true
,以启用记录到/var/log/ceph
中的文件。如需了解更多详细信息 ,请参阅了解 ceph 日志。EIO
错误消息类似如下,表示底层磁盘失败:为修复此问题,请替换底层 OSD 磁盘。详情请参阅 替换 OSD 驱动器。
如果日志包含任何其他
FAILED assert
错误,如以下错误,请打开支持票据。有关 详细信息,请参阅联系红帽支持团队。FAILED assert(0 == "hit suicide timeout")
FAILED assert(0 == "hit suicide timeout")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查
dmesg
输出是否有底层文件系统或磁盘的错误:dmesg
$ dmesg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果
dmesg
输出包含任何SCSI 错误错误消息
,请参阅红帽客户门户网站中的 SCSI Error Codes Solution Finder 解决方案,以确定解决问题的最佳方法。 - 或者,如果您无法修复底层文件系统,请替换 OSD 驱动器。详情请参阅 替换 OSD 驱动器。
-
如果
如果 OSD 因分段错误而出现故障,如以下 OSD,请收集必要的信息并打开支持票据。有关 详细信息,请参阅联系红帽支持团队。
Caught signal (Segmentation fault)
Caught signal (Segmentation fault)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ceph-osd
正在运行,但仍标记为 down
检查对应的日志文件,以确定故障的原因。默认情况下,Ceph 将日志文件存储在裸机部署的
/var/log/ceph/
目录中。注意对于基于容器的部署,Ceph 会生成日志到
journald
。您可以通过在 Ceph 配置文件中 [global] 下将log_to_file
参数设置为true
,以启用记录到/var/log/ceph
中的文件。如需了解更多详细信息 ,请参阅了解 ceph 日志。如果日志中包含类似于下文的错误消息,请参阅 Flapping OSD。
wrongly marked me down heartbeat_check: no reply from osd.2 since back
wrongly marked me down heartbeat_check: no reply from osd.2 since back
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您看到任何其他错误,请打开支持票据。有关 详细信息,请参阅联系红帽支持团队。
其它资源
- Flapping OSD
- 过时 PG
- 请参阅《 红帽 Ceph 存储管理指南》中的按实例启动、停止和重新启动 Ceph守护进程 一节。
- 请参阅《 红帽 Ceph 存储管理指南》中的管理 Ceph密钥环 章节。
5.2.8. Flapping OSD 复制链接链接已复制到粘贴板!
ceph -w | grep osds
命令显示 OSD 重复为 down
,然后在短时间内 再次运行
:
此外,Ceph 日志包含类似于以下的错误消息:
2021-07-25 03:44:06.510583 osd.50 127.0.0.1:6801/149046 18992 : cluster [WRN] map e600547 wrongly marked me down
2021-07-25 03:44:06.510583 osd.50 127.0.0.1:6801/149046 18992 : cluster [WRN] map e600547 wrongly marked me down
2021-07-25 19:00:08.906864 7fa2a0033700 -1 osd.254 609110 heartbeat_check: no reply from osd.2 since back 2021-07-25 19:00:07.444113 front 2021-07-25 18:59:48.311935 (cutoff 2021-07-25 18:59:48.906862)
2021-07-25 19:00:08.906864 7fa2a0033700 -1 osd.254 609110 heartbeat_check: no reply from osd.2 since back 2021-07-25 19:00:07.444113 front 2021-07-25 18:59:48.311935 (cutoff 2021-07-25 18:59:48.906862)
此 Means 是什么
引发 OSD 的主要原因是:
- 某些存储集群操作(如清理或恢复)通常会花费大量时间,例如,如果您对具有大型索引或大型 PG 的对象执行这些操作。通常,在完成这些操作后,flapping OSD 问题会得到解决。
-
与底层物理硬件相关的问题.在本例中,ceph
运行状况详细信息
命令也会返回速度较慢的请求
错误消息。 - 网络相关问题.
Ceph OSD 无法管理存储集群的专用网络出现故障的情况,或者显著延迟位于面向公共客户端的网络上。
Ceph OSD 使用专用网络 将 heartbeat 数据包互相发送,以注明它们是 up 和 in
。如果私有存储集群网络无法正常工作,OSD 无法发送和接收心跳数据包。因此,它们互相报告为
停机到
Ceph 监控器,同时将自身标记为 up
。
Ceph 配置文件中的以下参数会影响此行为:
参数 | 描述 | 默认值 |
---|---|---|
|
OSD 等待 heartbeat 数据包返回多长时间,然后将 OSD 报告为 | 20 秒 |
|
在 Ceph 监控将该 OSD 标记为 | 2 |
此表显示,在默认配置中,Ceph 监控器将 OSD 标记为 down
,只要只有一个 OSD 制作了三个不同的报告,其中的第一个 OSD 处于 down 状态
。在某些情况下,如果单个主机遇到网络问题,整个群集可能会遇到 OSD 出现问题。这是因为主机上的 OSD 将报告集群中的其他 OSD 为 down
。
Flanping OSD 方案不包括 OSD 进程启动时,然后立即终止的情况。
要排除这个问题,请执行以下操作
再次检查
ceph 运行状况详细信息
命令的输出。如果其中包含较慢的请求
错误消息,请参阅 如何排除此问题。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定哪些 OSD 标记为
down
以及它们所在的节点上:ceph osd tree | grep down
# ceph osd tree | grep down
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在包含 flapping OSD 的节点上,对任何网络问题进行故障排除并修复。详情请参阅对 网络问题进行故障排除。
或者,您可以通过设置
noup 和 no
down
标记来临时强制监控器停止将 OSD 标记为down
和up
:ceph osd set noup ceph osd set nodown
# ceph osd set noup # ceph osd set nodown
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要使用
noup
和nodown
标志不会修复问题的根本原因,而是仅防止 OSD 崩溃。要打开 支持问题单,请参阅联系红帽支持团队部分以了解 详细信息。
Ceph OSD 节点上、网络交换机级别上的 MTU 错误配置或两者可能会引起 Fpping OSD。要解决这个问题,请在所有存储集群节点上将 MTU 设置为统一大小,包括在核心上和通过计划停机访问网络交换机。不要调优 osd heartbeat min 大小
,因为更改此设置可能会隐藏网络中的问题,也不会解决实际的网络不一致。
其它资源
- 详情请参阅《 红帽 Ceph 存储 安装指南》中的验证红帽 Ceph 存储 网络配置 一节。
- 有关详细信息,请参见《 红帽 Ceph 存储架构指南》中的 Ceph 心跳 章节。
- 请参阅《 红帽 Ceph 存储故障排除指南 》中的流 请求或请求 部分。
- 如需调优 清理流程,请参阅红帽知识库解决方案如何降低对红帽 Ceph 存储群集的清理影响。
5.2.9. 请求或请求速度慢 复制链接链接已复制到粘贴板!
ceph-osd
守护进程较慢响应请求,ceph 运行状况详细信息
命令返回类似如下的错误消息:
此外,Ceph 日志包含类似于以下的错误消息:
2015-08-24 13:18:10.024659 osd.1 127.0.0.1:6812/3032 9 : cluster [WRN] 6 slow requests, 6 included below; oldest blocked for > 61.758455 secs
2015-08-24 13:18:10.024659 osd.1 127.0.0.1:6812/3032 9 : cluster [WRN] 6 slow requests, 6 included below; oldest blocked for > 61.758455 secs
2016-07-25 03:44:06.510583 osd.50 [WRN] slow request 30.005692 seconds old, received at {date-time}: osd_op(client.4240.0:8 benchmark_data_ceph-1_39426_object7 [write 0~4194304] 0.69848840) v4 currently waiting for subops from [610]
2016-07-25 03:44:06.510583 osd.50 [WRN] slow request 30.005692 seconds old, received at {date-time}: osd_op(client.4240.0:8 benchmark_data_ceph-1_39426_object7 [write 0~4194304] 0.69848840) v4 currently waiting for subops from [610]
此 Means 是什么
请求速度较慢的 OSD 是每个无法在 osd_op_complaint_time
参数定义的时间内队列中每秒 I/O 操作(IOPS)服务的 OSD。默认情况下,此参数设置为 30 秒。
造成 OSD 缓慢请求的主要原因是:
- 与底层硬件相关的问题,如磁盘驱动器、主机、机架或网络交换机
- 网络相关问题.这些问题通常与闪烁的 OSD 连接。详情请参阅 Flapping OSD。
- 系统负载
下表显示了慢速请求的类型。使用 dump_historic_ops
管理 socket 命令来确定慢速请求的类型。有关管理套接字的详细信息,请参见《红帽 Ceph 存储 4 管理指南 》中的" 使用 Ceph 管理套接字 "一节。
请求类型慢 | 描述 |
---|---|
| OSD 正在等待在 PG 上获取操作的锁定。 |
| OSD 正在等待副本 OSD 将操作应用到日志。 |
| OSD 未达到任何主要操作里程碑。 |
| OSD 尚未复制指定次数的对象。 |
要排除这个问题,请执行以下操作
- 确定请求缓慢或块请求的 OSD 是否共享共同的硬件部分,如磁盘驱动器、主机、机架或网络交换机。
如果 OSD 共享磁盘:
使用
smartmontools
实用程序检查磁盘或日志的健康状况,以确定磁盘上的任何错误。注意smartmontools
程序包含在smartmontools
软件包中。使用
iostat
实用程序获取 OSD 磁盘上的 I/O 等待报告(%iowai
),以确定磁盘是否负载过重。注意The
iostat
实用程序包含在sysstat
软件包中。
如果 OSD 与另一个服务共享节点:
- 检查 RAM 和 CPU 使用率
-
使用
netstat
实用程序查看网络接口控制器(NIC)上的网络统计信息,并对任何网络问题进行故障排除。如需更多信息,请参阅对 网络问题进行故障排除。
- 如果 OSD 共享机架,请检查机架的网络交换机。例如,如果您使用巨型帧,请验证路径中的 NIC 是否已设置了巨型帧。
- 如果您无法确定请求速度较慢的 OSD 共享的硬件部分,或者无法对硬件和网络问题进行故障排除和修复,请打开支持票据。有关 详细信息,请参阅联系红帽支持团队。
其它资源
- 详情请参阅 红帽 Ceph 存储管理指南中的使用 Ceph管理套接字 一节。