我正在测试一个旧的硬盘,并且不太理解smartctl
有关磁盘自检的输出:
$ sudo smartctl -d sat -x /dev/sdd
...
SMART Extended Self-test Log Version: 1 (1 sectors)
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 9691 -
# 2 Extended offline Completed: read failure 90% 9691 7948857160
# 3 Short offline Completed: read failure 90% 9687 7948857160
# 4 Short offline Completed without error 00% 113 -
...
$ sudo smartctl -d sat -a /dev/sdd
...
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 9691 -
# 2 Extended offline Completed: read failure 90% 9691 3653889864
# 3 Short offline Completed: read failure 90% 9687 3653889864
# 4 Short offline Completed without error 00% 113 -
...
smartclt -a
和报告的行业之间有什么区别smartctl -x
?
答案1
返回的数字smartctl -a
只是被截断为 32 位的正确 LBA。不要smartctl -a
在大磁盘上使用。
smartctl -a
根据联机帮助页检索 SMART 自检日志,同时smartctl -x
检索 SMART扩展自检日志。扩展自检允许更长的日志并容纳 48 位 LBA。常规自检日志仅支持32位LBA字段。这意味着smartctl -a
永远不应该将其用于大于 2TiB 的驱动器。
答案2
我使用 smartctl (smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-13-amd64]) 对 4TB Western Digital Red (WDC WD40EFRX-68WT0N0) 遇到同样的问题。
我的驱动器上有一个坏块,由 SMART 监控报告。
smartctl -a /dev/sdc
报告3424096344
然而:
smartctl -x /dev/sdc
报告 7719063640(这是 OpenMediaVault SMART 监控报告的值)。
查看二进制文件中的这些值:
7719063640: 0001 1100 1100 0001 0111 1001 0000 0101 1000
3424096344: 1100 1100 0001 0111 1001 0000 0101 1000
您可以看到二进制文件除了顶部半字节之外都匹配。可能是 int32 与 int64 问题。
但是,不清楚这是驱动器还是 smartctl 工具。
正确的值当然是7719063640。我使用了这个值和优秀的指南https://www.smartmontools.org/wiki/BadBlockHowto
重写该块并清除驱动器报告的 SMART 错误。