磁盘故障切换疑问

【 使用环境 】测试环境
【 OB or 其他组件 】 开源OB
【 使用版本 】4.1.0
【问题描述】日志盘hang住5秒,导致OB切主,查看DBA_OB_SERVER_EVENT_HISTORY也确实存在对应事件。看相关的参数是 log_storage_warning_tolerance_time 控制容忍时间,超过5秒后标记为坏盘并触发切主。看这个参数名字含有warning,为什么直接标记为坏盘。而不像数据盘一样有两个参数控制: data_storage_warning_tolerance_time、 data_storage_error_tolerance_time;数据盘waring之后恢复正常的话还可以加白。日志盘waring后直接标记为坏盘,不考虑加白么。目前实际看日志盘恢复后已经加白了,好像也没有直接标记为坏盘,这个逻辑可以解释下么,谢谢。
【复现路径】
【问题现象及影响】

【附件】

1 个赞

@论坛小助手

没人回答吗

根据文档库中的信息,我将尝试解答您的疑问。

1. log_storage_warning_tolerance_time 的作用

  • 参数作用log_storage_warning_tolerance_time 参数用于设置从日志盘 IO 失败到磁盘被标记为坏盘时触发切主的时间。如果超过这个时间,探测发现这台机器的日志盘状态仍然未恢复正常,将会触发切主事件。
  • 参数默认值及范围:默认值是 5s,取值范围是 [1s, 300s]。
  • 是否需要重启 OBServer 生效:不需要。

2. 日志盘和数据盘的差异

  • 日志盘

    • 参数:log_storage_warning_tolerance_time
    • 行为:当超过容忍时间后,会直接触发切主,并且标记为坏盘。
    • 目前您提到的情况是,日志盘在恢复后已经自动加白了,这可能是因为 OB 内部的自动检测机制发现日志盘恢复正常后,自动将其从黑名单中移除。
  • 数据盘

    • 参数:data_storage_warning_tolerance_timedata_storage_error_tolerance_time
    • 行为:
      • data_storage_warning_tolerance_time 控制数据盘状态设为 WARNING 状态的容忍时间。默认值是 5s,取值范围是 [1s, 300s]。
      • data_storage_error_tolerance_time 控制数据盘状态设为 ERROR 状态的容忍时间。默认值是 300s,取值范围是 [10s, 7200s]。
    • 当数据盘状态变为 WARNING 后,如果恢复正常,可以自动加白;只有当超过 data_storage_error_tolerance_time 后才会被标记为 ERROR 并触发停机等事件。

3. 为什么日志盘没有类似的两个参数

  • 原因:日志盘的可靠性要求更高,因为日志盘存储的是重要的事务日志。如果日志盘出现问题,可能会导致数据一致性问题,因此 OB 选择在日志盘出现问题时立即采取更严格的措施(即触发切主并标记为坏盘)。
  • 实际情况:虽然 log_storage_warning_tolerance_time 名字中含有 warning,但实际行为是较为严厉的,即超过容忍时间后直接触发切主。不过,根据您的描述,OB 在内部似乎也有一套机制来检测日志盘是否恢复正常,并自动将其从黑名单中移除。

4. 实际观察到的行为

  • 您提到实际上日志盘恢复后已经加白了,这说明 OB 有一个内部机制来检测日志盘的状态,并在检测到恢复正常后自动将其从黑名单中移除。
  • 这种行为可能是为了提高系统的可用性和稳定性,避免因一次短暂的故障而导致永久性的不可用。

5. 结论

  • 日志盘的 log_storage_warning_tolerance_time 参数虽然名字含有 warning,但实际上是为了确保日志盘的高可靠性,超过容忍时间后会立即触发切主。
  • 但是,OB 内部有一套机制来检测日志盘是否恢复正常,并在恢复正常后自动将其从黑名单中移除,以提高系统的可用性。

希望这些信息能帮助您理解日志盘和数据盘处理逻辑的不同。如果您还有其他疑问,请随时告诉我。

检索到的文档如下:

  1. log_storage_warning_tolerance_time
  2. data_storage_warning_tolerance_time
  3. 磁盘报错[errcode=-4392] disk is hung
  4. data_storage_error_tolerance_time
  5. 黑名单机制
  6. 集群管理 FAQ
  7. 异常切主
  8. 6000 ~ 6999
  9. log_archive_checkpoint_interval
  10. clog_sync_time_warn_threshold