数据库导入时的 LSI RAID 控制器错误 - 如何进行故障排除?

eww*_*ite 7 oracle linux rhel5 hardware-raid

我们正在 Oracle 系统(RHEL 5.9、2.6.18-348.6.1.el5)上运行数据库转储的导入。导入未完成,最终出错:

ORA-15080: synchronous I/O operation to a disk failed
WARNING: failed to write mirror side 1 of virtual extent 248 logical extent 0 of file 280 in group 1 on disk 1 allocation unit 986
Errors in file /u01/app/oracle/diag/rdbms/dbprod/DBPROD/trace/DBPROD_lgwr_24520.trc:
ORA-00345: redo log write error block 509314 count 2023
ORA-00312: online log 1 thread 1: '+DATA/dbprod/redo01.log'
ORA-15081: failed to submit an I/O operation to a disk
ORA-15081: failed to submit an I/O operation to a disk
Run Code Online (Sandbox Code Playgroud)

环形缓冲区中存在相应的错误,并且/var/log/messages

Jun 12 18:54:42 db1-test kernel: megasas: build_ld_io  error, sge_count = 51
Jun 12 18:54:42 db1-test kernel: megasas: Err returned from build_and_issue_cmd
Jun 12 18:54:42 db1-test kernel: megasas: build_ld_io  error, sge_count = 51
Jun 12 18:54:42 db1-test kernel: megasas: Err returned from build_and_issue_cmd
Jun 12 18:54:42 db1-test kernel: megasas: build_ld_io  error, sge_count = 51
Jun 12 18:54:42 db1-test kernel: megasas: Err returned from build_and_issue_cmd
Jun 12 18:54:42 db1-test kernel: sd 0:2:1:0: timing out command, waited 360s
Jun 12 18:54:42 db1-test kernel: sd 0:2:1:0: Unhandled error code
Jun 12 18:54:42 db1-test kernel: sd 0:2:1:0: SCSI error: return code = 0x06000000
Jun 12 18:54:42 db1-test kernel: Result: hostbyte=DID_OK driverbyte=DRIVER_TIMEOUT,SUGGEST_OK
Run Code Online (Sandbox Code Playgroud)

包含导入的驱动器阵列是 RAID 1+0 中的 10 磁盘 SAS 阵列,使用 300GB 10k 磁盘。RAID 控制器是LSI MegaRAID SAS 9260-8i。MegaCLI 不会报告任何磁盘或适配器错误。

  • 这是硬件问题吗?
  • 有没有办法排除故障?RAID 控制器状态正常。磁盘和逻辑驱动器报告健康。
  • 这是 Linux 操作系统还是调整问题?我会尝试使用不同的 I/O 调度程序来确定。CFQ是默认设置。

编辑:

已尝试其他调度程序,结果相同。这里一个第三方(Vormetric的)文件系统的加密模块在此设置运行。删除它可以完成导入。所以现在我想知道这是否是模块中的缺陷,或者是否触发了 LSI 驱动程序中的不良情况。


在导入期间,我们达到了 14,000 次写入 IOPS。 在此处输入图片说明

在最近的尝试中,系统因控制台上的以下内容而完全停止。 在此处输入图片说明

top冻结前的最后输出。 在此处输入图片说明

Mik*_*eyB 3

最终谢尔盖是对的——这是一个司机的问题。但让我们先检查一下:

\n\n

首先,您需要使用截止时间 I/O 调度程序而不是 CFQ。deadline顾名思义,确保所有 IOP 及时完成。

\n\n

从 megaraid 卡中获取事件:

\n\n
megacli -adpeventlog -getevents -f /tmp/megaraid-$(date +%F_%T) -aALL\n
Run Code Online (Sandbox Code Playgroud)\n\n

检查磁盘上的 SMART 数据(您需要构建一个新的 smartmontools 才能使其工作):

\n\n
# megacli -pdlist -a0 |grep \'Device Id\'\nDevice Id: 10\nDevice Id: 9\n\n# smartctl -a /dev/sda -d megaraid,9\n\xc2\xab\xe2\x80\xa6\xc2\xbb\n# smartctl -a /dev/sda -d megaraid,10\n\xc2\xab\xe2\x80\xa6\xc2\xbb\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果一切正常,请继续尝试LSI 的最新驱动程序

\n\n
\n\n
\n

此设置中运行第三方 (Vormetric) 文件系统加密模块。删除它即可完成导入。所以现在我想知道这是否是模块中的缺陷,或者是否触发了 LSI 驱动程序中的不良状况。

\n
\n\n

是的,Voretric 模块可能做了一些不兼容的事情。我首先会与他们讨论他们的模块如何在高负载下搞砸你的系统。

\n