就像我在我的其他答案中指出的那样,每个现代硬盘都有可用的重映射空间(因为特别是在今天的磁盘密度下,没有一个硬盘盘片会是完美的 - 即使是全新的从未使用过的刚从生产线上拿到手的硬盘也总会有一些缺陷需要硬盘进行重映射)。
因此,理论上,在类似于badblocks注意到(用户可见的)硬盘坏道之前,应该会报告SMART故障。
在现代硬盘上,任何用户可见的坏道(如badblocks可能报告的或操作系统自动检测到的)都是一个垂死的硬盘的最后挣扎和颤抖。
最终,SMART和badblocks测试两个不同但相关的事物:
SMART是一种自我监测工具:
硬盘了解其操作参数的一些信息,并对某些参数的“正常”和其他参数的“可接受”有一些元知识。
如果驱动器检测到某些参数“异常”或“不可接受”,它将报告预故障状态-换句话说,驱动器仍然可用,但可能很快会发生故障。
例如:主轴电机通常需要0.10安培,但现在却需要0.50安培-这是一种异常高的电流,可能表明轴承卡住或轴承上的永久润滑剂已经消失。最终,电机将无法克服阻力,驱动器将停止运转。
另一个例子:驱动器有1000个“重映射”块来处理坏扇区。它已经使用了750个,而构建驱动器的工程师确定重映射数量表示内部出现问题(坏盘片、老化故障、损坏的磁头)-驱动器将报告预故障状态,让您有时间在重映射空间耗尽和坏扇区变得可见之前备份数据。
SMART不仅仅寻找坏扇区-它是对硬盘健康状况的更全面评估。即使没有坏扇区和读写错误,你可能会在一个硬盘上得到SMART预故障警告(例如,上述我描述的主轴马达问题)。
badblocks是一个具有特定(过时)目的的工具:寻找坏扇区。
badblocks来自于SMART和坏扇区重映射之前的时代。那个时候,我们知道硬盘存在缺陷,但唯一的方法是对硬盘进行压力测试,引发故障,然后记住不要再在那里存储数据,以防止意外发生。
我说它过时的原因是因为现代硬盘上的电子元件已经在内部以及几千倍的速度上完成了badblocks所做的事情。基本上,badblocks允许缺乏复杂电子元件的古老硬盘重新映射(或跳过)失败的扇区,但现代硬盘已经能够检测到失败的扇区并为您进行重映射。
从理论上讲,您可以使用badblocks的数据将操作系统将(可见的)故障重映射为您的现代硬盘就像是一个古老的Winchester硬盘,但这实际上是适得其反的 - 就像我之前说的,任何在现代硬盘上使用badblocks检测到的坏扇区都是将整个硬盘视为有缺陷(或即将故障)的原因。
可见的坏扇区表明驱动器已经用尽了重映射空间,这在现代硬盘中相对较少见,除非它们很旧(接近功能寿命结束)或者存在缺陷(出厂时就有坏盘片/磁头)。
所以基本上,如果在将硬盘部署到生产环境之前运行badblocks让你感觉更好,那就去做吧,但是如果你的硬盘是在本世纪制造的,并且显示出明显的坏扇区,你应该把它丢进垃圾桶(或者联系售后保修)。
对我来说,SMART状态和defense in depth比手动检查硬盘更值得花时间。