ob有报错磁盘故障,但是后面又恢复正常了,大佬能否帮忙看下有什么排查建议不

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】oceanbase-all-in-one-4.2.1.1-100120231117154841.el7.aarch64.tar.gz
【问题描述】今早应用突然在连接oceanbase时失败,查询相关OB日志的时候发现8:15:17到8:15:47期间一直刷新如下的报错errcode4392,查询故障码显示是磁盘故障,像是磁盘读写异常,但是后续又自动恢复正常。
目前不知道如何排查问题具体原因,对于这个问题各位大佬们有什么排查建议提供吗

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根因分析场景: clog日志磁盘空间满的问题 (虽然用户报告的是磁盘故障而不是明确的clog磁盘满,但errcode4392可能与磁盘问题相关,特别是如果它涉及到写入或读取失败)
根因分析命令: obdiag rca run --scene=clog_disk_full
日志采集场景: io问题
日志采集命令: obdiag gather scene run --scene=observer.io

为了更好地帮助您排查这个问题,请您使用上述obdiag命令进行日志采集和根因分析,并将结果提供给我们。这些命令可以帮助我们了解磁盘错误的具体情况以及潜在的原因。

另外,为了确定具体的问题,在此需要您提供一些信息:

  1. 这个磁盘故障报错发生的时间点是什么时候?是否有特定的操作触发了这个错误?
  2. 您能否提供更详细的错误日志片段或者完整的errcode4392错误描述?
  3. 系统中是否配置了监控工具来持续监测磁盘健康状态?如果有,请分享相关的监控数据。
  4. 在磁盘自动恢复之后,是否有进行任何维护操作,如重启服务器或修复文件系统等?
  5. 是否有其他组件(例如存储设备、网络连接)在同一时间段内也出现了异常?

通过这些问题的回答,我们可以进一步缩小问题范围并找到根本原因。

附上敏捷诊断工具 obdiag 使用帮助链接

3 个赞

可以按照小助手提示或者下面的obdiag的命令 收集一下磁盘的信息 把这个报错的时间区间的observer.log日志发一下

通过 --from/–to 参数指定 I/O 问题所在的时间区间

obdiag gather scene run --scene=observer.io --from “2022-06-30 16:25:00” --to “2022-06-30 18:30:00”

1 个赞

6666

disk is hung 大概率是 硬盘性能瓶颈,还好不是坏盘。

分析这个问题,需要你给出磁盘的详细信息(类型、容量、iops 和吞吐最大值)、ob 业务负载信息(节点cpu\内存\磁盘监控指标、租户的qps、tps 、cpu、mem 利用率等等)。

1 个赞

observer.log.zip (34.7 MB)
您好,这个是上周一的日志,再次发生该问题,能否帮忙看下此问题该如何处理,谢谢大佬!

根据您提供的 observer.log 日志文件以及问题描述,以下是针对磁盘故障报错(errcode4392)的排查建议和处理方法:


1. 确认磁盘错误的具体原因

根据文档片段信息,observer.log 是 OBServer 的主要日志文件,记录了运行期间的关键事件。请解压并检查日志文件中与 errcode4392 相关的上下文信息。重点关注以下内容:

  • 错误发生的时间点。
  • 是否伴随其他异常日志(如 I/O 超时、文件系统不可用等)。
  • 磁盘路径或设备名称是否明确。

操作步骤:

# 解压日志文件
unzip observer.log.zip

# 查找 errcode4392 相关日志
grep "errcode4392" -r ./observer.log*

如果日志中包含具体的磁盘路径(例如 /data/clog//data/ssd/),可以进一步检查该路径的磁盘状态。


2. 检查磁盘健康状态

磁盘故障可能由硬件问题或文件系统异常引起。以下是检查磁盘健康状态的方法:

(1) 检查磁盘 I/O 性能

使用以下命令监控磁盘 I/O 性能:

iostat -x 1 10

关注以下指标:

  • %util:磁盘利用率是否接近 100%。
  • await:I/O 请求的平均等待时间是否过高。
  • svctm:服务时间是否异常。

(2) 检查磁盘 SMART 状态

如果是物理磁盘,使用 smartctl 工具检查磁盘健康状态:

smartctl -a /dev/sdX  # 替换 sdX 为实际磁盘设备名

关注是否有以下警告:

  • Reallocated_Sector_Ct(重分配扇区计数)是否增加。
  • Current_Pending_Sector(待处理扇区)是否非零。

(3) 检查文件系统状态

确保文件系统没有损坏:

fsck /dev/sdX  # 替换 sdX 为实际磁盘分区

3. 分析 OBServer 配置

根据文档片段信息,OBServer 的日志轮转和回收策略可能影响磁盘使用情况。请检查以下配置项:

  • enable_syslog_recycle:是否启用了日志回收功能。
  • max_syslog_file_count:每种日志的最大文件数量。
  • audit_log_max_size:审计日志的最大保存量。

查询配置命令:

SHOW PARAMETERS LIKE 'enable_syslog_recycle';
SHOW PARAMETERS LIKE 'max_syslog_file_count';
SHOW PARAMETERS LIKE 'audit_log_max_size';

如果日志文件过多导致磁盘空间不足,请调整上述参数以优化日志管理。


4. 使用 obdiag 工具进行深入分析

根据文档片段信息,obdiag 是 OceanBase 提供的敏捷诊断工具,可以帮助快速定位问题。以下是推荐使用的场景和命令:

(1) 根因分析:clog 磁盘满问题

如果怀疑 clog 磁盘空间不足导致错误:

obdiag rca run --scene=clog_disk_full

(2) 采集 IO 相关日志

如果需要进一步分析磁盘 IO 异常:

obdiag gather scene run --scene=observer.io

将生成的诊断报告上传至 OceanBase 社区论坛或技术支持团队,以便获得更详细的分析。


5. 预防措施

为了避免类似问题再次发生,建议采取以下措施:

  • 定期监控磁盘状态:使用监控工具(如 Prometheus + Grafana)设置磁盘使用率告警。
  • 优化日志管理:合理配置日志轮转和回收策略,避免日志文件占用过多磁盘空间。
  • 升级硬件:如果磁盘性能不足,考虑更换更高性能的 SSD 或增加磁盘容量。

6. 总结

根据文档库中的信息,建议您按照以下步骤逐步排查问题:

  1. 检查 observer.log 中 errcode4392 的具体上下文信息。
  2. 分析磁盘健康状态(I/O 性能、SMART 状态、文件系统状态)。
  3. 调整 OBServer 的日志管理配置。
  4. 使用 obdiag 工具进行深入分析。

如果仍有疑问或无法定位问题,请将诊断报告上传至 OceanBase 社区论坛,我们将为您提供进一步支持。

希望以上建议对您有所帮助!

检索到的文档如下:

  1. Alert 日志
  2. 遇到问题如何向技术支持同学提问
  3. 日志
  4. OBServer 节点安装目录结构
  5. syslog_level
  6. 设置日志恢复源
  7. audit_log_max_size
  8. ob_admin 简介

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

也可以通过下面的obdiag拉取日志信息

通过 --from/–to 参数指定 I/O 问题所在的时间区间

obdiag gather scene run --scene=observer.io --from “2022-06-30 16:25:00” --to “2022-06-30 18:30:00”


磁盘性能可能有问题,或者磁盘故障,推荐使用SSD,或者检查磁盘IO。使用系统性能监控工具 tsar 或 vsar 查看磁盘的状态