SMART自检与坏块有何关系?


15

smartctl工具允许启动长时间的自检(smartctl -t long /dev/sda)。但是badblocks,我也可以在驱动器上运行。两者有什么关系?如果badblocks检测到坏块,驱动器是否会自动更新其SMART值(例如,通过更新其重新定位的扇区数)?坏块可以替换smartctl -t long吗,反之亦然?

Answers:


5

我必须不同意voretaq7 -SMART不是魔术。当您有驱动器并且其中一个扇区损坏时,您将无法再从中读取数据。因此,在现代磁盘驱动器上完全有可能存在无法读取的文件。故障发生后首次访问时,SMART会将不可读的扇区标记为“当前待处理”和“脱机不可纠正”。

但是,当该扇区再次被写入时,它将被重新映射为未标记的空间,并且未标记,并且“ Reallocated_Sector_Ct”计数器将增加。然后,整个驱动器将再次可读。

smartctl -t long测试非常有用-它会测试整个驱动器空间中的不可读扇区,并记录日志并将其标记为“当前待处理”和“脱机不可校正”,这是运行时遇到的第一个坏扇区。我将服务器配置为每周在每个驱动器上运行一次长时间测试。它不会过多影响正常的驱动器功能,因为OS请求始终比SMART扫描具有优先级。

就像在服务器上一样,我总是在RAID1镜像中运行磁盘,因此当长时间测试发现坏扇区时,我可以使用镜像中另一个驱动器的数据重写其内容,从而强制重新分配。

badblocks有时也很有用-例如,它将测试整个驱动器并且不会在第一个错误时停止。它可以测试单个分区或驱动器的任何其他部分。您可以使用它来快速检查坏块是否已成功重新分配。


11

就像我在其他答案中指出的那样,每个现代硬盘驱动器都有可用的重新映射空间(因为尤其是在当今的磁盘密度下,没有任何驱动器磁盘会是完美的-始终存在一些驱动器必须重新映射的缺陷,即使在品牌上也是如此) -从未使用过组装线进入我的手驱动器)。

因此,从理论上讲,应该badblocks在驱动器上出现诸如通知(最终用户可见)坏扇区之类的错误之前报告SMART故障。
在现代硬盘上,任何最终用户可见的坏扇区(可能badblocks由操作系统报告或由操作系统自动检测到)都是即将死掉的磁盘的最后喘息和颤抖。


最终,SMART会badblocks测试两个不同但相关的东西:

SMART是一种自我监视工具:

硬盘驱动器了解一些有关其运行参数的信息,并且对某些设备的“正常”和其他设备的“可接受”具有一些元知识。
如果驱动器感觉到某些参数“异常”或“不可接受”,它将报告故障前状况-换句话说,驱动器仍在运行,但可能很快就会发生故障。

例如:主轴电动机通常消耗0.10安培,但现在消耗0.50安培-异常高的消耗,可能表明轴已束缚或轴承上的永久润滑剂消失了。最终,电动机将无法克服阻力,驱动器将被卡住。

另一个示例:驱动器具有1000个“重映射”块来处理坏扇区。它已经使用了750个,并且驱动器制造商确定重新映射的次数表示内部错误(拼盘不良,老化故障,磁头损坏)-驱动器将报告故障前状况,让您有时间获取重映射空间用完之前,您的数据已关闭并且坏扇区变得可见。

SMART不仅在寻找坏道,还对驱动器的运行状况进行了更全面的评估。在没有坏扇区且没有读/写错误的驱动器上,您可能会出现SMART故障前警告(例如,上文所述的主轴电机问题)。


badblocks 是具有特定(过时)用途的工具:查找不良扇区。

badblocks来自SMART和坏扇区重新映射之前的时间。那时我们知道驱动器存在缺陷,但是将它们映射出来以防止意外存储数据的唯一方法是对磁盘进行压力测试,导致故障,然后记住不要再将数据放到那里。

我之所以说过时,是因为现代驱动器上的电子设备已经在badblocks内部完成了工作,并且速度提高了数千倍。badblocks基本上,缺少先进电子设备的古老驱动器可以重新映射(或跳过)发生故障的扇区,但是现代硬盘驱动器已经可以检测到故障扇区并为您重新映射。

从理论上讲,您可以使用badblocks数据使OS重新映射(可见)故障,就好像您的现代磁盘是一个古老的Winchester磁盘一样,但这最终会适得其反-就像我之前说过的,在现代驱动器上检测到的任何坏扇区badblocks都是丢弃该磁盘的原因。整个驱动器有故障(或将要发生故障)。

可见的坏扇区表明驱动器空间不足,这对于现代磁盘来说是很少见的,除非它们是旧的(使功能寿命终止)或有缺陷的(坏的磁盘/工厂磁头)。


因此,基本上,如果badblocks在将磁盘部署到生产环境中之前在磁盘上运行,则感觉会更好,请继续进行操作。但是,如果磁盘是本世纪制造的,并且显示出明显的坏扇区,则应将其丢弃到垃圾箱中(或致电其保修)。为了我的金钱,与手动检查磁盘相比,SMART状态和深度防御是更好地利用我的时间。


1
好了,这很好地解释了SMART和Badblocks之间的区别。但这是否意味着监视SMART状态已足够,或者如果我希望SMART警告能够正确发出,是否必须不时运行一次长时间的SMART测试?即是说我应该smartctl -t long /dev/sda偶尔运行一次,还是可以假设smartd它将“自动”警告我即将发生的问题而无需我进行其他设置?
黎丽丽

这只是您可以做出的决定,但是SMART并非旨在要求人工干预(“ Just Works”,您通常不应该对其进行弄乱)。信任您的硬件(至少在此有限范围内),因为如果您不信任自己的硬件,那么您最好收拾行装回家。
voretaq7

2
“现代驱动器已经完成了badblock的工作,内部速度快了数千倍”, badblocks从驱动器中读取每个字节,用随机模式覆盖它们,然后将原始数据放回去。SMART自检不执行此操作。如果我理解正确,这应该清除所有“待处理”的扇区。
endolith '16

4
@endolith测试不是直接等效的,但它们的服务目的是等效的(发现并允许重新映射坏扇区)。我的主要观点是最后一段:如果您想以磁盘锻炼者的身份运行坏块(以查看是否由于发现大量坏块而引起SMART错误),那么请继续,但是如果您今天使用然后加载坏块列表以避免使用那些扇区的意图(就像我们在石器时代那样)是错误的:可见的坏扇区意味着您应该将驱动器放在最近的垃圾箱中。
voretaq7 '16

1
@Hashim是的,我相信使用badblocks很有用,因为它将清除挂起的扇区。
endolith '18

5

这个问题的好答案是

/superuser//a/693065

/superuser//a/693064

与其他答案相反,我发现坏块并不是过时的,而是一个非常有用的工具。一旦我用新的硬盘驱动器升级了PC,它开始运行不稳定。多亏了坏块,我花了很长时间才意识到磁盘表面有缺陷。从那时起,我为我开始使用的每个新硬盘运行了完全写模式(可破坏!)坏块,并且再也没有遇到过这个问题。我强烈建议

时间sudo badblocks -swvo sdX.log / sev / sdX

每个新的硬盘驱动器。它将对磁盘的每个位进行几次测试以进行读写,因此可以避免以后出现很多麻烦。

在此测试期间,坏块将被驱动器映射出。因此,应该在测试前后记录“重新分配的扇区计数”,并将其与SMART阈值进行比较,因为它可以告诉您有关驱动器运行状况的信息。


2
在仍处于保修期内的新驱动器进行压力测试是一个好主意。
endolith '16

2

badblocks是古老的遗物,并不是严格有用的,它可以找到当前不可读的扇区,但是处理坏扇区的正确方法是从备份中恢复数据。如果数据对您而言并不重要,那么可以执行以下操作:删除关联的文件并在该位置上写入任何内容,这将使磁盘在认为需要时重新分配该扇区并继续工作。

磁盘自检还将遍历整个介质并测试各种缺陷,与正常操作相比,应该使用较低的阈值来查看磁盘是否有很多弱点,并且根据供应商逻辑可以确定磁盘已超过使用寿命,并声明测试失败。此时,您应该取出所有数据或从备份中恢复并更换磁盘。

如果磁盘操作(通过坏块或正常操作)遇到不可恢复的读取错误,则磁盘将自动更新其重新分配挂起计数器,当执行重新分配时,它将更新重新分配挂起计数器和重新分配的计数器。一个简单的dd也会发生这种情况。

如果需要在两者之间进行选择,请使用smartctl -t,只要它可以对磁盘进行更好的分析即可。

我也可以建议使用我的diskscan实用程序https://github.com/baruch/diskscan,它的工作原理更像是坏块,但尝试评估是否存在坏道,就像听不清的扇区一样。阅读时间更长。这表明媒体问题正在发展,并且在将来的版本中,它可能会自动尝试帮助磁盘解决此问题。


“此外,由于磁盘本身将重新分配数据,并且现在不再需要在文件系统级别映射坏块,因此坏块在当今时代已经过时了。” 不会badblocks以SMART自检无法提供的方式来强调驱动器吗?
endolith '16

否。badblocks将对磁盘进行顺序扫描。它没有比dd更好,并且也将与自检相同。
Baruch Even

badblocks读取磁盘上的每个字节,将其替换为测试模式,然后将原始数据写回原位。SMART自测是类似的读写测试吗?
endolith '16

1
那么坏块重写数据将清除所有“待处理扇区”,并使驱动器将它们再次标记为好或重新分配它们,对吗?
endolith,2016年

1
是。在这种情况下,可能就是您想要的。
Baruch Even
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.