问题现象
磁盘报错 hung 住,查看日志,具体情况如下:
observer报错:[2025-02-26 17:36:01.518345] ERROR [USING_LOG_PREFIX] detect_palf_hang_failure_ (ob_failure_detector.cpp:374) [9967][T1002_Occam][T1002][Y0-0000000000000000-0-0] [lt=20076][errcode=-4392] disk is hung(msg=“clog disk may be hung, add failure event”, clog_disk_hang_event={type:PROCESS HANG, module:LOG, info:clog disk hang event, level:FATAL}, clog_disk_last_working_time=1740562555275850, hung time=5859542)
问题原因
报错 -4392 OB_DISK_HUNG 磁盘故障、快速拒绝。
解决方法
通过日志确定磁盘 hung。
报出 -4392 前日志中一般会出现
xxx may be hung类似的日志信息,在最开始报 -4392 的地方可使用命令grep "may be hung"搜索出相应的日志内容。 可能的三种OB_DISK_HUNG磁盘故障事件如下。
通过系统性能工具排查 OB_DISK_HUNG 磁盘故障。
可能的三种
OB_DISK_HUNG磁盘故障事件中,data 和 slog 会触发 IO 的快速拒绝,代表 IO 探测线程判断磁盘故障或 slog 判断写盘慢,有可能当时是磁盘真的有问题(如图 1),使用系统性能监控工具 tsar 或 vsar 查看磁盘的状态。图1:

也有可能是磁盘压力过大(util 90% 以上,如图 2)或者性能抖动,使用系统性能监控工具 tsar 展示的对应盘 util 使用率和 load 负载情况。
图2:

可以通过 fio 测试一下磁盘性能。
fio -filename=/data/nfs/fio_test -direct=1 -rw=randwrite -bs=2048K -size=100G -runtime=300 -group_reporting -name=mytest -ioengine=libaio -numjobs=1 -iodepth=64 -iodepth_batch=8 -iodepth_low=8 -iodepth_batch_complete=8
适用版本
OceanBase 数据库 V4.x 版本。