SMART自测与坏块有什么关系?

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

我不同意voretaq7 – 聪明不是魔术。 当你有一个驱动器,其中一个扇区坏了,你将无法再读取数据。 所以现代磁盘驱动器上有一个不可读的文件是完全可能的。 SMART会将这个不可读的行业标记为“当前等待”和“脱机不可纠正”,当它在故障之后首次被访问时。

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

smartctl -t longtesting是有用的 – 它将testing整个驱动器空间的不可读扇区和日志,并标记为“当前挂起”和“脱机不可纠正”第一个坏扇区运行时遇到。 我正在configuration我的服务器,在每个驱动器上每周运行一次这个长时间的testing。 它不会影响正常的驱动器function,因为操作系统请求总是优先于SMART扫描。

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

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

就像我在其他答案中指出的那样,每一个现代硬盘都有重新映射的空间(特别是在今天的硬盘密度下,没有硬盘是完美的 – 硬盘总是会有一些缺陷,甚至是品牌从来没有被使用过的assembly线进入我的手驱动器)。

因此,从理论上讲,在驱动器上的坏块通知(最终用户可见)坏扇区之前,应报告SMART故障。
在现代硬盘上,任何最终用户可见的坏扇区(可能由坏块报告或由操作系统自动检测到)都是死亡磁盘的最后喘息和震动。


最终,SMART和badblockstesting两个不同但相关的东西:

SMART是一个自我监控工具:

硬盘知道一些关于它的操作参数的信息,并且对于某些“正常”的东西有一些元认知,对于其他东西是“可以接受的”。
如果驱动器检测到某些参数“exception”或“不可接受”,则会报告故障前的情况 – 换句话说,变频器仍然正常工作,但可能会很快失效。

例如:主轴电机的电stream通常为0.10安培,但是现在已经达到了0.50安培,这是一个exception高的电stream消耗,可能表明电机轴处于结合状态,或者轴承上的永久性润滑剂消失。 最终电机将无法克服阻力,驱动器将抓住。

另一个例子:驱动器有1000个“重映射”块来处理坏扇区。 它已经使用了750个,而且build立驱动器的工程师确定重新映射的数量表明内部错误(坏盘,老化故障,磁头损坏) – 驱动器会报告故障前的情况,让您有时间得到您的数据在重映射空间用完之前closures,坏扇区变得可见。

SMART正在寻找的不仅仅是坏道 – 这是对车道​​健康的更全面的评估。 您可以在没有坏扇区且无读/写错误的驱动器(例如上述主轴电机问题)上进行SMART预故障警告。


badblocks是一个具有特定(过时)目的的工具:查找坏扇区。

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

我之所以说是过时的原因是因为现代驱动器上的电子设备已经做了什么badblocks ,在内部和几千倍更快。 badblocks基本上允许古老的驱动器,缺乏先进的电子设备重新映射(或跳过)失败的扇区,但现代硬盘驱动器已经检测到失败扇区,并为您重新映射。

理论上,你可以使用badblocks数据来让操作系统重新映射(可见)失败,就好像你的现代磁盘是一个古老的温彻斯特磁盘一样,但这最终会产生反作用 – 就像我之前所说的,在现代驱动器上检测到有坏块的坏扇区是导致丢弃整个驱动器作为有缺陷(或即将失败)。

可见的坏扇区表示驱动器没有重映射空间,这对于现代磁盘来说是相对罕见的,除非它们已经老化(即将结束function生命)或有缺陷(坏的盘片/磁头出厂)。


所以基本上,如果在生产环境中部署磁盘之前先运行坏块,让你觉得更好,那就去做吧,但是如果你的磁盘是在本世纪制造的,它显示出一个可见的坏扇区,你应该把它扔在垃圾桶里在保修期内)。 对于我的钱SMART状态和纵深防御比手动检查磁盘更好地利用我的时间。

这个问题的答案很好

https://superuser.com/a/693065

https://superuser.com/a/693064

与其他答案相反,我发现badblocks不是过时的,但是一个非常有用的工具。 一旦我升级我的电脑与新的硬盘驱动器,并开始运行不稳定。 我花了好一段时间才意识到磁盘表面有缺陷的坏块。 从那以后,我开始使用每个新硬盘驱动器的完整写入模式(可破坏!)坏块,并且再也没有这个问题。 我强烈推荐一个

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

为每一个新的硬盘驱动器。 它会对磁盘的每一个位进行几次testing来进行写入和读取,所以以后可以避免很多麻烦。

在这个testing过程中,坏块将被驱动器映射出来。 因此,在testing之前和之后应该注意“重新分配的扇区数量”,并将其与SMART阈值进行比较,因为它会告诉我们有关驱动器的健康状况。

badblocks是旧时代的遗物,并不是严格有用的,它可以find一个目前不可读的扇区,但是对坏扇区正确的做法是从备份中恢复数据。 如果数据对您不重要,可以做些什么是删除关联的文件并在该位置写入任何内容,这将使磁盘在需要时重新分配扇区并继续工作。

磁盘自检也会绕过testing整个介质的各种缺陷,与正常运行时使用的阈值相比,应该使用较低的阈值来查看磁盘是否存在许多薄弱点,并根据供应商逻辑可以决定磁盘已经过了它的使用寿命,并宣布testing失败。 此时,您应该将所有数据取出或从备份中恢复,并更换磁盘。

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

如果您需要在两者之间进行select,请使用smartctl -t,因为它可以更好地分析磁盘。

我也可以build议使用我的盘扫实用程序https://github.com/baruch/diskscan ,它的工作原理更像是坏块,但是试图评估是否有扇区坏,有点像听力部门,需要一个很多时间阅读。 这是一个发展中的媒体问题的指示,在未来的版本中也可能会自动尝试帮助磁盘修复这个问题。