几天来,每次我systemctl suspend
(S3/挂起到 RAM)我的电脑时,其中一个硬盘就会消失。尽管仍然存在/dev/sdb
,但/dev/sda
再也没有了。消失的总是同一个硬盘。 SMART长时间测试表明硬盘完全没问题。除了每次醒来后都会消失。唤醒期间消息显示类似以下内容(注意 sdb/sd 2 上的消息):/dev/sdc
/dev/sdf
[191432.762381] ata5: found unknown device (class 0)
[191432.762411] ata6: found unknown device (class 0)
[191433.228546] ata3: SATA link down (SStatus 0 SControl 300)
[191437.422376] ata6: softreset failed (device not ready)
[191437.422391] ata5: softreset failed (device not ready)
[191438.290401] ata4: found unknown device (class 0)
[191438.450381] ata4: softreset failed (device not ready)
[191438.450414] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[191438.454123] ata1.00: configured for UDMA/133
[191438.608510] ata3: SATA link down (SStatus 0 SControl 300)
[191438.608521] ata3.00: disable device
[191438.608540] sd 2:0:0:0: rejecting I/O to offline device
[191438.608547] ata3.00: detaching (SCSI 2:0:0:0)
[191438.608554] sd 2:0:0:0: [sdb] Start/Stop Unit failed: Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[191438.608558] sd 2:0:0:0: PM: dpm_run_callback(): scsi_bus_resume+0x0/0x80 returns -5
[191438.608567] sd 2:0:0:0: PM: failed to resume async: error -5
[191438.630402] sd 2:0:0:0: [sdb] Synchronizing SCSI cache
[191438.630423] sd 2:0:0:0: [sdb] Synchronize Cache(10) failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[191438.630424] sd 2:0:0:0: [sdb] Stopping disk
[191438.630428] sd 2:0:0:0: [sdb] Start/Stop Unit failed: Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[191442.774382] ata6: found unknown device (class 0)
[191442.774417] ata5: found unknown device (class 0)
[191443.174399] ata6: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[191443.266633] ata6.00: configured for UDMA/133
[191443.294401] ata5: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[191443.387415] ata5.00: configured for UDMA/133
[191443.802389] ata4: found unknown device (class 0)
[191445.942401] ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[191446.128870] ata4.00: configured for UDMA/133
我包含了来自其他磁盘的行以显示它们已恢复 - 但不是“sd 2”/“sdb”。
这可能是从最近的 Linux 内核升级开始的,但我无法轻松降级来检查这一点。这是一台无法经常重新启动的生产机器(我可以在没有该磁盘的情况下工作,或者在必要时通过 USB 连接它)。
我该如何解决这个问题,也许可以通过手动重新设置磁盘,或者告诉内核在唤醒/恢复时执行其操作,或者可能还有其他错误消息需要检查?
编辑:交换电源和 SATA 电缆,这没有帮助。
编辑2:
# foreach d ( /sys/class/scsi_host/host*/scan )
foreach? echo "- - -" > $d
foreach? echo was $d
foreach? sleep 2
foreach? lsblk
foreach? echo =========
foreach? end
...没有帮助,/dev/sdb
遗憾的是仍然消失了。
答案1
解决方案是联系有问题的硬盘制造商(东芝)。他们发送了修改后的固件,该固件对启动/引导请求的反应更快。新固件会更早地(加电后大约 1 秒)发送“我准备好了”信号,这似乎是 BIOS 或 Linux 内核所期望的。我还没有完全弄清楚 BIOS/主板或操作系统是否是罪魁祸首,并且超时太小。
我也许应该补充一点,这是关于标准家用电脑中的企业硬盘。也许磁盘并不是为快速启动而设计的(这在服务器世界中不存在)。