我有一台 Solaris 11 机器,今天早上随机崩溃了。物理重新启动机器后,我注意到所有驱动器Sense Key: Soft_Error
在 dmesg 和/var/adm/messages
.
由于机器上的所有驱动器都标记有相同的软错误,这是否意味着 HBA 出现故障?有人有什么想法/建议吗?
root@solaris-machine:/var/log# iostat -E
sd0 Soft Errors: 1 Hard Errors: 0 Transport Errors: 0
Vendor: ATA Product: Revision: SN02 Serial No:
Size: 500.11GB <500107862016 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 1
Illegal Request: 12 Predictive Failure Analysis: 0
sd2 Soft Errors: 1 Hard Errors: 0 Transport Errors: 0
Vendor: ATA Product: Revision: 0004 Serial No:
Size: 3000.59GB <3000592982016 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 1
Illegal Request: 0 Predictive Failure Analysis: 0
sd4 Soft Errors: 1 Hard Errors: 0 Transport Errors: 0
Vendor: ATA Product: Revision: 0004 Serial No:
Size: 3000.59GB <3000592982016 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 1
Illegal Request: 0 Predictive Failure Analysis: 0
sd5 Soft Errors: 1 Hard Errors: 0 Transport Errors: 0
Vendor: ATA Product: Revision: 0004 Serial No:
Size: 3000.59GB <3000592982016 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 1
Illegal Request: 0 Predictive Failure Analysis: 0
Jan 23 10:45:02 solaris-machine scsi: [ID 107833 kern.warning] WARNING: /scsi_vhci/disk@g5000c5004dfae642 (sd4):
Jan 23 10:45:02 solaris-machine Error for Command: <undecoded cmd 0xa1> Error Level: Recovered
Jan 23 10:45:02 solaris-machine scsi: [ID 107833 kern.notice] Requested Block: 0 Error Block: 0
Jan 23 10:45:02 solaris-machine scsi: [ID 107833 kern.notice] Vendor: ATA Serial Number:
Jan 23 10:45:02 solaris-machine scsi: [ID 107833 kern.notice] Sense Key: Soft_Error
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.warning] WARNING: /scsi_vhci/disk@g5000c5004dfc8db2 (sd2):
Jan 23 10:45:04 solaris-machine Error for Command: <undecoded cmd 0xa1> Error Level: Recovered
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.notice] Requested Block: 0 Error Block: 0
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.notice] Vendor: ATA Serial Number:
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.notice] Sense Key: Soft_Error
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.notice] ASC: 0x0 (<vendor unique code 0x0>), ASCQ: 0x1d, FRU: 0x0
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.warning] WARNING: /scsi_vhci/disk@g5000c5004dfd4ce3 (sd5):
Jan 23 10:45:04 solaris-machine Error for Command: <undecoded cmd 0xa1> Error Level: Recovered
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.notice] Requested Block: 0 Error Block: 0
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.notice] Vendor: ATA Serial Number:
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.notice] Sense Key: Soft_Error
Jan 23 10:45:04 solaris-machine scsi: [ID 107833 kern.notice] ASC: 0x0 (<vendor unique code 0x0>), ASCQ: 0x1d, FRU: 0x0
Jan 23 10:45:07 solaris-machine scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci15d9,664@1f,2/disk@0,0 (sd0):
Jan 23 10:45:07 solaris-machine Error for Command: <undecoded cmd 0xa1> Error Level: Recovered
Jan 23 10:45:07 solaris-machine scsi: [ID 107833 kern.notice] Requested Block: 0 Error Block: 0
Jan 23 10:45:07 solaris-machine scsi: [ID 107833 kern.notice] Vendor: ATA Serial Number:
Jan 23 10:45:07 solaris-machine scsi: [ID 107833 kern.notice] Sense Key: Soft_Error
Jan 23 10:45:07 solaris-machine scsi: [ID 107833 kern.notice] ASC: 0x0 (no additional sense info), ASCQ: 0x0, FRU: 0x0
答案1
当 Solaris 11 服务器崩溃时我会查看哪里:
dmesg | less
- 仔细阅读此内容,这里有线索,或者如果 dmesg 缓冲区已循环,请查看
/var/adm/messages
崩溃时的日志。
- 仔细阅读此内容,这里有线索,或者如果 dmesg 缓冲区已循环,请查看
fmadm faulty
- 这将显示故障管理器认为有故障的任何设备,包括磁盘和 HBA、以及 NIC 等。
fmdump -eV
- 这将向您显示由故障管理系统识别的系统中的任何错误,无论它们是否导致某个硬件被标记为有故障。
- 如果有问题的磁盘是 zpool 的一部分,则
zpool scrub
在该池上运行,然后查看zpool status
是否收到可能表明 HBA 或磁盘存在问题的校验和错误。 - 通过运行确保转储配置设置为捕获故障转储
dumpadm
。其输出应该显示 savecore 已启用,并且崩溃将保留在/var/crash
.如果您的系统在今天早上的崩溃中留下了崩溃转储/var/crash
,那么您可以查看崩溃的 pstack,并可能获得一些有关根本原因的指示。
这些步骤应该可以让您更接近找出系统崩溃的原因。
答案2
[不再是 Solaris 专家,但熟悉 Linux 硬件] 如果是一个驱动器,我会怀疑其中一个出现故障。但所有这些都非常可疑。也许控制器有问题?
我最近看到的大多数崩溃都是由于 CPU 过热(风扇故障、污垢、空气循环堵塞)、显卡驱动程序(特别是 nVidia)导致的第二次挂起造成的。过去的一些麻烦点是停电,甚至是微停电。
答案3
少量的软错误可以安全地忽略。 Solaris 只是迂腐地记录和报告其他操作系统甚至没有注意到的一切。
监视错误计数(重新启动时重置)并检查模式。
另请注意,一个设备上的软错误往往会导致同一总线上其他驱动器上的计数也增加。不过,您也会有一个明显的赢家,其中一个驱动器的错误比其他驱动器多很多倍。
我从未发现驱动器错误计数(软错误或硬错误)可以指示 HBA 故障,但这可能只是我的情况。 HBA 故障通常显示为其他消息,例如 mpt 错误。