使用smartmontools运行SMART-Test时,它们永远不会完成。在各种不同的系统和磁盘上,包括在x86和ARM上的Debian,在x64上带有外部和内部驱动器的OS X上,我总是会收到“中断(主机重置。)”消息。即使在所有磁盘都为空的捕获模式下运行(用dd归零)。
我究竟做错了什么?
使用smartmontools运行SMART-Test时,它们永远不会完成。在各种不同的系统和磁盘上,包括在x86和ARM上的Debian,在x64上带有外部和内部驱动器的OS X上,我总是会收到“中断(主机重置。)”消息。即使在所有磁盘都为空的捕获模式下运行(用dd归零)。
我究竟做错了什么?
Answers:
当驱动器在测试期间不处理任何输入/输出活动时,它可能进入待机状态,这会增加Interrupted (host reset)
条件。尝试以适当的时间间隔从磁盘读取:
while true; do dd if=/dev/disk1 of=/dev/null count=1; sleep 60; done
(替换/dev/disk1
为适当的设备;每60秒从该设备读取一个扇区,直到您点击为止ctrl-c
)
这对我的环境有所帮助:OS X 10.6.8,WD Elements USB连接的驱动器,SAT-SMART驱动程序0.8。
从理论上讲,强制测试应使驱动器保持在线状态。然而,发送的硬件命令smartctl
在测试完成之前可能会超时,从而导致内核重置链接并最终导致与上述相同的情况(错误#303)。
有关更多详细信息,请参阅smartmontools-support邮件列表上的此线程。我感谢克里斯蒂安·弗兰克(Christian Franke)的见解。
journalctl -fk
。
/dev/disk1
认为是设备或分区,即像/dev/sda
或/dev/sda1
?
我尝试了Tobu的解决方案,就我而言,无论在开始测试并中断测试后的某个时候,我一直都在睡眠模式下找到外部USB驱动器,看来dd最终从内核缓存中读取了,并且缓存足够大,可以容纳磁盘进入睡眠模式。我注意到,调用smartctl询问状态始终可以“唤醒”磁盘。所以:这个想法的这个版本对我有用:
sudo bash -c 'while true; do smartctl -a /dev/sdb > /dev/null; sleep 60; done'
5小时后,外部USB磁盘仍在旋转。我第一次可以在外部磁盘上看到smartctl长时间测试完成。
我相信该解决方案还具有磁盘头不会每分钟不必要地移动的优点。长期运行几乎完全在预期的时间完成(keep-awake脚本没有增加运行时间)