我看见SmartMonTools:我如何知道我的硬盘上是否有 smartctl 测试正在运行?然后跑了——
$ sudo smartctl -a /dev/sdb | grep "progress" -i -A 1
# 3 Extended captive Self-test routine in progress 90% 216 -
# 4 Offline Interrupted (host reset) 60% 215 -
# 5 Short captive Self-test routine in progress 60% 215 -
# 6 Offline Interrupted (host reset) 60% 215 -
# 7 Short captive Self-test routine in progress 60% 215 -
# 8 Short offline Completed without error 00% 215
我正在进行一项长时间的扩展测试。
现在要找出状态是什么是非常棘手的,因为我也中断了第一个状态,但它仍然显示了上面的内容 -
并将其运行为 -
$ sudo smartctl -a /dev/sdb | tail
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Aborted_by_host [90% left] (0-65535)
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
那么这是否意味着没有测试正在运行 atm 或者什么?
另一个问题是在运行测试之前如何确保根本没有测试正在运行。
应该有——
$ sudo smartctl -X /dev/sdb
需要某种方法来确认没有测试在后台运行。
答案1
您的所有自检日志数据结构条目要么是“未测试”,要么是“已中止”,因此没有自检运行(或者更确切地说,当您运行时没有自检运行smartctl
)。这就是您验证没有测试正在运行的方法。在您的输出中,跨度 1 的信息与日志条目 #3 匹配,两者都表明中止时还有 90% 的测试需要运行。日志条目 #1 和 #2 可能有更多信息...
正如您所指出的,smartctl -X
可用于中止非强制(后台)自检。
在实践中,我发现处理所有这些问题的最简单方法就是使用smartd
并定期运行后台测试;那么就无需担心停止测试或查明是否有任何后台测试正在运行。显然,如果您要在新驱动器上快速查找强制测试结果,那么这并不适用!
答案2
对于仍在运行的离线测试,您可能会在-a
输出中看到
Offline data collection status: (0x03) Offline data collection activity
is in progress.
和
Total time to complete Offline
data collection: ( 35) seconds.