我们有 3 个主机位于 Oracle RAC 集群下,最近我们发现所有 3 个主机上都缺少大量多路径,有时这些主机会自动重新启动。
当前情况是在主机 1 上,所有路径均显示活动且就绪,其余 2 个节点显示失败。
这里可能存在什么问题?我应该手动重新扫描 LUN 吗?重新扫描 LUN 会中断任何服务吗?这是 RHEL5 盒,其中一些是 ASM 磁盘。
任何帮助都将不胜感激。仓储人员说他们那边一切都好。
主机1
mpath602 (360060e801606e900000106e900000dd3) dm-114 HITACHI,OPEN-V
[size=50G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
\_ 4:0:1:94 sdhh 133:112 [active][ready]
\_ 3:0:1:94 sdhi 133:128 [active][ready]
主机2:
mpath602 (360060e801606e900000106e900000dd3) dm-114 HITACHI,OPEN-V
[size=50G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
\_ 3:0:1:94 sdhh 133:112 [failed][faulty]
\_ 4:0:1:94 sdhi 133:128 [active][ready]
主机3
mpath602 (360060e801606e900000106e900000dd3) dm-114 HITACHI,OPEN-V
[size=50G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
\_ 3:0:1:94 sdhh 133:112 [failed][faulty]
\_ 4:0:1:94 sdhi 133:128 [active][ready]
F——来自主机 1 自行重启的 vmcore
sd 4:0:0:17: Unhandled error code
sd 4:0:0:17: SCSI error: return code = 0x00010000
Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK,SUGGEST_OK sd 4:0:0:17: Unhandled error code sd 4:0:0:17: SCSI error: return code = 0x00010000
Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK,SUGGEST_OK sd 4:0:0:17: Unhandled error code sd 4:0:0:17: SCSI error: return code = 0x00010000
Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK,SUGGEST_OK qla2xxx 0000:06:00.0: Mailbox command timeout occured, cmd=0x54 mb[0]=0x54. Issuing ISP abort.
qla2xxx 0000:06:00.0: Performing ISP error recovery - ha= ffff81127ffb44f8.
qla2xxx 0000:06:00.0: LIP reset occured (f7f7).
qla2xxx 0000:06:00.0: LOOP UP detected (4 Gbps).
qla2xxx 0000:06:00.0: scsi(4:1:138): Abort command issued -- 0 13ce28adc 2002.
sd 4:0:1:8: timing out command, waited 60s
device-mapper: multipath: Failing path 133:192.
SysRq : Trigger a crashdump
答案1
TL;DR 如果您不介意存储在您的机器上冻结几秒钟,只需运行:
for i in /sys/class/scsi_host/host*; do echo "- - -" > $i/scan; done; for i in /sys/bus/scsi/devices/*:*:*:*/rescan;do echo 1 > $i;done; for i in /sys/class/fc_host/host*/issue_lip;do echo 1 >$i;done;for i in /sys/block/sd*/device/rescan;do echo 1 > $i;done
如果您想知道发生了什么,请检查内核日志消息:
- RHEL 6 或更早版本,运行
sudo less /var/log/messages
:dmesg
- RHEL 7 或更新版本,运行:
sudo journalctl -k
在内核消息中搜索失败的块设备,就像sdhh
您的情况一样。查看失败的时间和原因。
检查是否可以从sdhh
失败的路径读取:
sudo dd if=/dev/sdhh bs=4k count=1|hexdump -C
如果出现 I/O 错误,那么我会检查物理路径、FC 交换机和存储控制器。如果没有 I/O 错误,则可以安全地扫描 SCSI 总线,但它会使 I/O 冻结几秒钟。
将多路径包更新为最新版本。升级到最新版本。RHEL5 不受支持,不应使用。