数据库发生I/O失败,chunk出现异常

故障现象:
  数据库online.log日志中出现 chunk I/O 错误,使用 onstat –d 查看到 chunk flag 的状态是 down 的状态,数据库操作中不能操作包含在这些 chunk 中的数据,如果使用到这些数据可能会返回错误,严重情况下会导致数据库宕机。例如:

onstat -d

Dbspaces

44d3cc00 5 0x1 5 2 2048 N BA informix datadbs

Chunks

45c17028 6 5 0 64000 14461 PD-B-- /sinodb/chunks/datadbs_chk1

故障分析:
  由于发生 I/O 错误,数据库不能正常的操作包含在受影响 chunk 中的数据,所有的操作请求都将失败。这可能是由于chunk和裸设备的映射关系出错、磁盘设备出现问题、chunk 所使用的设备不存在、使用的链接设备不存在、设备的权限错误等可能性。

故障处理:
  根据前面所列出的可能性逐一进行检查。一个快速确定存储设备是否可用的办法是:使用 dd 命令实际读取该设备,这里需要强调的是只能做读取操作,不能写入,严禁在 of 设备项指定为 chunk 路径,因此我们也只能验证其存储设备是否可读,例如:

dd if=/sinodb/chunks/datadbs_chk1 of=/dev/null bs=2048k count=10

  在确定所有硬件或设置都已经恢复正常以后,可以首先尝试使用 onspaces –s 进行恢复,如果还不能恢复成功,请联系相关人员技术支持。