Hon*_*Lai 19 hard-drive smart bad-blocks smartctl smartmontools
smartctl 工具允许启动长时间的自检 ( smartctl -t long /dev/sda)。但是badblocks,我也可以在驱动器上运行。两者有什么关系?如果 badblocks 检测到坏块,驱动器是否会自动更新其 SMART 值(例如,通过更新其重新定位的扇区数)?坏块可以代替smartctl -t long,反之亦然?
vor*_*aq7 13
就像我在其他答案中指出的那样,每个现代硬盘驱动器都有可用的重新映射空间(因为特别是在今天的磁盘密度下,没有一个驱动器盘片是完美的 - 驱动器总会有一些缺陷必须重新映射,即使是品牌-新的从未使用过的驱动器下线到我手中)。
因此,理论上您应该badblocks在驱动器上出现通知(最终用户可见)坏扇区之类的内容之前报告 SMART 故障。
在现代硬盘上,任何最终用户可见的坏扇区(可能badblocks由操作系统报告或自动检测到)都是垂死磁盘的最后喘息和颤抖。
最终 SMART 并badblocks测试两个不同但相关的事物:
硬盘驱动器知道有关其操作参数的一些信息,并且具有一些元知识,即对于某些人来说什么是“正常”的,而对于其他人来说什么是“可接受的”。
如果驱动器检测到某些参数“异常”或“不可接受”,它将报告故障前状况——换言之,驱动器仍然可以工作,但可能很快就会出现故障。
例如:主轴电机通常消耗 0.10 安培电流,但现在消耗 0.50 安培电流 - 异常高的电流消耗可能表明轴被束缚或轴承上的永久润滑剂消失了。最终,电机将无法克服阻力,驱动器将卡住。
另一个例子:驱动器有 1000 个“重映射”块来处理坏道。它已经使用了其中的 750 个,并且构建驱动器的工程师确定重新映射的数量表明存在内部错误(坏盘、老化故障、磁头损坏)——驱动器将报告故障前状况,让您有时间获得在重新映射空间用完并且坏扇区变得可见之前关闭您的数据。
SMART 寻找的不仅仅是坏扇区 - 它是对驱动器健康状况的更全面评估。您可以在没有坏扇区和读/写错误的驱动器上发出 SMART 故障前警告(例如,我上面描述的主轴电机问题)。
badblocks 是具有特定(过时)目的的工具:查找坏扇区。badblocks来自 SMART 和坏扇区重新映射之前的时间。那时我们知道驱动器存在缺陷,但将它们映射出来以防止意外将数据存储在那里的唯一方法是对磁盘进行压力测试,导致故障,然后记住不要再将数据放在那里。
我说它已经过时的原因是因为现代驱动器上的电子设备已经在badblocks内部完成了它的功能,而且速度快了几千倍。badblocks基本上允许缺乏复杂电子设备的古老驱动器重新映射(或跳过)出现故障的扇区,但现代硬盘驱动器已经检测到故障扇区并为您重新映射它们。
从理论上讲,您可以使用badblocks数据来让操作系统重新映射(可见)故障,就好像您的现代磁盘是古老的温彻斯特磁盘一样,但这最终会适得其反——就像我之前所说的,在现代驱动器上检测到的任何坏扇区badblocks都是丢弃的原因整个驱动器有缺陷(或即将发生故障)。
可见的坏扇区表明驱动器已用完重新映射空间,这对于现代磁盘来说相对罕见,除非它们很旧(功能寿命即将结束)或有缺陷(工厂的坏盘片/磁头)。
因此,基本上,如果badblocks在将其部署到生产环境之前在磁盘上运行会让您感觉更好继续执行,但是如果您的磁盘是在本世纪制造的并且显示出可见的坏扇区,您应该将其扔进垃圾箱(或致电其保修)。对我而言,SMART 状态和深度防御比手动检查磁盘更能利用我的时间。
我不得不不同意voretaq7 — SMART 不是魔法。当您有一个驱动器并且其中一个扇区损坏时,您将无法再从中读取数据。因此,在现代磁盘驱动器上完全有可能存在无法读取的文件。当它在失败后第一次被访问时,SMART 会将这个不可读扇区标记为“当前待处理”和“离线不可纠正”。
但是当这个扇区被再次写入时,它将被重新映射到重新映射空间,未标记并且“Reallocated_Sector_Ct”计数器会增加。然后整个驱动器将再次可读。
smartctl -t longtest 很有用 — 它将测试整个驱动器空间是否有不可读的扇区,并记录运行时遇到的第一个坏扇区并将其标记为“当前待处理”和“脱机无法纠正”。我正在将我的服务器配置为每周在每个驱动器上运行一次这个长时间的测试。它不会过多地影响正常的驱动器功能,因为操作系统请求始终优先于 SMART 扫描。
就像在服务器上一样,我总是在 RAID1 镜像中运行磁盘,因此当长时间测试发现坏扇区时,我可以使用来自镜像中另一个驱动器的数据重写其内容,从而强制重新分配。
badblocks有时也很有用 - 例如它会测试整个驱动器并且不会在第一个错误时停止。它可以测试单个分区或驱动器的任何其他部分。您可以使用它来快速检查坏块是否已成功重新分配。
小智 7
这个问题的好答案是
https://superuser.com/a/693065
https://superuser.com/a/693064
与其他答案相反,我发现 badblocks 并没有过时,而是一个非常有用的工具。一旦我用新硬盘升级了我的电脑,它开始运行不稳定。由于坏块,我花了很长时间才意识到磁盘表面存在缺陷。从那以后,我为我开始使用的每个新硬盘驱动器运行完全写入模式(可破坏!)坏块,并且再也没有出现过这个问题。我强烈推荐一个
时间 sudo badblocks -swvo sdX.log /sev/sdX
对于每个新硬盘。它将测试磁盘的每一位写入和读取几次,因此可以避免以后出现很多麻烦。
在此测试期间,驱动器将映射坏块。因此,应该在测试前后记录“重新分配的扇区数”,并将其与 SMART 阈值进行比较,因为它会说明驱动器的健康状况。