本节介绍了 Oracle Solaris 11.4 发行版中的硬件问题。
在路径故障转移期间,在非对称逻辑单元访问 (Asymmetric Logical Unit Access, ALUA) 存储目标上,Oracle Solaris 多路径可能会遇到 I/O 故障。这仅在通过 SAS SCSI 传输机制连接的类似存储上出现。通过 SAS SCSI 连接的设备由 cfgadm -alv 在类型为 scsi-sas 的控制器下枚举:
c7 connected configured unknown unavailable scsi-sas n /devices/pci@301/pci@1/scsi@0/iport@1:scsi c7::w5000cca02f187da1,0 connected configured unknown Client Device: /dev/dsk/c0t5000CCA02F187DA0d0s0(sd7)
另外,mpathadm show lu 命令将声明非对称多路径:
# mpathadm show lu /dev/dsk/c0t5000CCA02F187DA0d0s0 Logical Unit: /dev/rdsk/c0t5000CCA02F187DA0d0s2 mpath-support: libmpscsi_vhci.so ... Asymmetric: yes
如果出现此问题,将看到一个类似如下的错误(为了增强可读性,人为进行了换行):
Jul 15 2018 13:22:45.123456789 ereport.io.scsi.cmd.disk.tran nvlist version: 0 class = ereport.io.scsi.cmd.disk.tran ... thread-stacks = stack[0] = genunix`fm_dev_report_postv+2c8() |scsi`scsi_fm_report_post+204() |sd`sd_report_post+a04() |sd`sd_intr_report_post+150() |sd`sd_return_command+15c() |sd`sdintr+a00()|scsi`scsi_hba_pkt_comp+e94() |scsi_vhci`vhci_intr+d6c() |scsi`scsi_hba_pkt_comp+e94() |scsi`scsi_pkt_comp_daemon+c8() ... pkt-reason = 0x1a pkt-state = 0x0 pkt-stats = 0x0 ...
解决方法:在发布修复程序之前,可以通过增加受影响 VID/PID 对的 sd 和 ssd 可调参数的值来解决此问题。修改 /etc/driver/drv/sd.conf 或 /etc/driver/drv/ssd.conf,如下面的示例中所示:
sd-config-list = "VID PID", "path-busy-retry-count:4294967295, path-busy-retry-timeout:180000";
请注意,在此示例中,针对 path-busy-retry-count 显示的值是允许的最大设置。较小的值应当起作用,但是,什么值将起作用取决于系统体系结构和其他情况。因此,无法声明适用于所有情况的最小值。
此解决方法具有如下限制和局限:
较大的 path-busy-retry-count 值可能会导致内核在等待故障转移发生时旋转。这将导致 CPU 使用率较高。因此,启用了此解决方法的系统可能会遇到高负荷和低性能。在故障转移完成之后,系统将立即恢复。
这些可调参数可能会在将来更改,在推出了针对错误 28337990 的修复之后,不应当使用这些可调参数。请参见 SRU 自述文件的“修复的错误”部分。
除非 Oracle 明确建议,否则这些可调参数不应当用于任何其他用途。
在 HCA 上执行动态重新配置 (Dynamic Reconfiguration, DR) 操作时,如果 InfiniBand (IB) 工具或实用程序(如 ibqueryerrors 或 ibdiagnet)正在运行,可能会出现紧急情况。DR 操作可能来自 cfgadm 或 ldm remove-io 等命令,此类命令会导致删除或取消配置 HCA 设备。有关更多信息,请参见 ibqueryerrors(8)、ibdiagnet(1)、cfgadm(8) 和 ldm(8) 手册页。
如果由于该原因而出现紧急情况,您将看到个类似如下的错误消息:
panic[cpu14]/thread=c0405b9fe3980: BAD TRAP: type=31 rp=2a101bcf320 addr=62 mmu_fsr=0 occurred in module "ibtl" due to a NULL pointer dereference
通常,如果 IB 工具处于活动状态而且使用正在其上尝试执行 DR 的 HCA,则 DR 操作会失败,并指出 HCA 正在使用中。
解决方法:在 InfiniBand HCA 设备上执行 DR 操作时,确保 InfiniBand 工具、实用程序或应用程序(如 ibqueryerrors 或 ibdiagnet)都不处于活动状态。
与目标的连接临时中断时,对于使用 iSCSI 引导设备的启动器而言,180 秒(3 分钟)的缺省 iSCSI 最大连接重试时间可能会不够。将显示以下错误消息:
NOTICE: iscsi connection(19) unable to connect to target iqn.1986-03.com.sun:02:hostname, target address 192.168.001.160
解决方法:至少将使用 iSCSI 引导设备的启动器上的 iSCSI 最大连接重试时间增加到 1080 秒(18 分钟)。