smartctl 工具允许启动长时间自检 ( smartctl -t long /dev/sda
)。但是,badblocks
我也可以在驱动器上运行 。这两者有什么关系?如果 badblocks 检测到坏块,驱动器是否会自动更新其 SMART 值(例如,通过更新其重定位扇区数)?badblocks 可以替换 吗smartctl -t long
,反之亦然?
答案1
我不同意voretaq7— SMART 并不是魔法。当您的驱动器中有一个扇区出现故障时,您将无法再从中读取数据。因此,现代磁盘驱动器上完全有可能存在无法读取的文件。当发生故障后首次访问此无法读取的扇区时,SMART 会将其标记为“当前待处理”和“脱机无法纠正”。
但当该扇区再次被写入时,它将被重新映射到重映射空间,取消标记,并且“Reallocated_Sector_Ct”计数器将增加。然后整个驱动器将再次可读。
smartctl -t long
测试很有用——它将测试整个驱动器空间中是否存在不可读扇区,并将运行时遇到的第一个坏扇区记录并标记为“当前待处理”和“脱机无法纠正”。我正在配置我的服务器,每周在每个驱动器上运行一次这个长时间的测试。它不会对正常的驱动器功能造成太大影响,因为操作系统请求始终优先于 SMART 扫描。
就像在服务器上一样,我总是在 RAID1 镜像中运行磁盘,因此当长时间测试发现坏扇区时,我可以使用镜像中另一个驱动器的数据重写其内容,从而强制重新分配。
badblocks
有时也很有用——例如,它会测试整个驱动器,并且不会在第一次错误时停止。它可以测试单个分区或驱动器的任何其他部分。您可以使用它快速检查坏块是否已成功重新分配。
答案2
正如我指出的那样在我的另一个答案中,每个现代硬盘都有可用的重新映射空间(因为特别是在当今的磁盘密度下,没有驱动器盘片是完美的 - 总会存在一些缺陷,驱动器必须重新映射,即使是全新的、从未使用过的、从装配线上下来到我手中的驱动器)。
因此,理论上,您应该badblocks
在驱动器上出现坏扇区(最终用户可见)等通知之前报告 SMART 故障。
在现代硬盘上,任何最终用户可见的坏扇区(可能由badblocks
操作系统报告或自动检测到)都是即将报废的磁盘的最后喘息和颤抖。
归根结底,SMART 和badblocks
测试是两件不同但又相关的事情:
SMART 是一个自我监控工具:
硬盘驱动器了解一些有关其操作参数的信息,并且具有一些元知识,知道对于某些参数而言什么是“正常”的,对于其他参数而言什么
是“可接受的”。如果驱动器检测到某些参数“异常”或“不可接受”,它将报告故障前状况 - 换句话说,驱动器仍可运行,但可能很快就会发生故障。
例如:主轴电机的正常电流为 0.10 安培,但现在电流为 0.50 安培——电流异常高,可能表示轴卡住了,或者轴承上的永久润滑剂用完了。最终,电机将无法克服阻力,驱动器将卡住。
另一个例子:该驱动器有 1000 个“重新映射”块来处理坏扇区。它使用了其中的 750 个,制造该驱动器的工程师确定重新映射次数表明内部存在错误(坏盘、老化故障、磁头损坏) - 驱动器将报告故障前状况,让您有时间在重新映射空间用尽和坏扇区可见之前取出数据。
SMART 寻找的不仅仅是坏扇区 - 它是对驱动器健康状况的更全面评估。您可以在没有坏扇区和读/写错误(例如,我上面描述的主轴电机问题)的驱动器上收到 SMART 故障前警告。
badblocks
是一种具有特定(过时)用途的工具:查找坏扇区。
badblocks
起源于 SMART 和坏扇区重映射出现之前的时代。当时我们知道驱动器存在缺陷,但唯一能将其映射出来以防止意外将数据存储在那里的方法是对磁盘进行压力测试,导致故障,然后记住永远不要再将数据放在那里。
我之所以说它已经过时,是因为现代驱动器上的电子设备已经badblocks
在内部完成了该功能,并且速度要快几千倍。badblocks
基本上允许缺乏复杂电子设备的古老驱动器重新映射(或跳过)发生故障的扇区,但现代硬盘驱动器已经检测到发生故障的扇区并为您重新映射它们。
理论上,你可以使用badblocks
数据来让操作系统重新映射(可见)故障,就好像你的现代磁盘是古老的温彻斯特磁盘一样,但这最终会适得其反——就像我之前说的任何在现代驱动器上检测到的坏扇区badblocks
是将整个驱动器视为有缺陷(或即将发生故障)而丢弃的原因。
可见的坏扇区表明驱动器的重新映射空间已满,这对于现代磁盘来说相对罕见,除非它们很旧(接近使用寿命的终点)或有缺陷(工厂生产的坏盘片/磁头)。
因此,基本上,如果badblocks
在将磁盘部署到生产环境之前对其进行运行让您感觉更好,那么请继续进行,但如果您的磁盘是本世纪制造的,并且它显示出明显的坏扇区,您应该将其扔进垃圾桶(或致电保修)。在我看来,SMART 状态和纵深防御比手动检查磁盘更能节省我的时间。
答案3
这个问题的好答案是
https://superuser.com/a/693065
https://superuser.com/a/693064
与其他答案相反,我发现 badblocks 并非过时,而是一种非常有用的工具。有一次,我用新硬盘升级了我的 PC,它开始运行不稳定。我花了很长时间才意识到磁盘表面有缺陷,这要归功于 badblocks。从那时起,我对每个开始使用的新硬盘都运行完整的写入模式(可破坏!)badblocks,再也没有遇到过这个问题。我强烈推荐
时间 sudo badblocks -swvo sdX.log /sev/sdX
对于每个新硬盘。它将对磁盘的每个位进行多次写入和读取测试,这样可以避免以后的很多麻烦。
在此测试期间,驱动器将映射出坏块。因此,应在测试前后记录“重新分配的扇区数”,并将其与 SMART 阈值进行比较,因为它将反映驱动器的健康状况。
答案4
我不敢相信没人谈论过 NAS 额定驱动器。这些驱动器的驱动器重新映射固件已关闭(出于很好的理由)。
[所以你可以看到他们有不同的角色]
我之所以在这里查找,是因为我有一个旧的 NAS 驱动器,并在常规 Linux 桌面中使用。它有一个坏扇区,我使用 e2fsck -c 在文件系统中重新映射了它(即坏块,但没有进行所有手动计算)
(暗中) 使用 badblocks 意味着坏扇区不被文件系统使用...但是它在磁盘上仍然是坏的,所以 smartctl 对此感到焦虑...希望有一种方法可以让 smartctl 知道“我知道那个坏扇区,放过它”。
因此,由于坏块,该扇区永远不会用于真实数据,但 smartctl 仍然担心物理设备...他们需要一种连接方式。