![硬盘会说谎吗?](https://linux22.com/image/1212362/%E7%A1%AC%E7%9B%98%E4%BC%9A%E8%AF%B4%E8%B0%8E%E5%90%97%EF%BC%9F.png)
我记得以前会遇到驱动器错误,但现代驱动器似乎从不报告错误,而是尽最大努力返回一些信息。我最近遇到了一个硬盘故障,相当严重,但在故障期间它从未报告错误(或者至少 WinXP 从未显示这些错误)。我知道它故障了,因为程序开始表现不佳,最终在启动过程中死机。当我将驱动器连接到另一台机器以读取所有内容时,我能够复制所有内容(之后一些权限失效),并且没有出现错误,但存档测试证明实际内容已损坏。制造商的驱动器测试软件确定没有错误,但 SpinRite 在扫描驱动器时硬停止。我开始怀疑现代软件的不稳定性有多少可归因于现代硬盘。
那么问题来了,硬盘现在是不是在欺骗我们?具体来说,当遇到无法读取的扇区时,现代硬盘是否倾向于返回损坏的数据而不向操作系统报告?
答案1
是的,较新的硬盘会欺骗我们。通常可以使用 SMART 来监控这些谎言。
我认为这与典型盘片上的信息密度有关。设计人员假设盘片上会有缺陷,并围绕此设计固件 - 如果某个扇区发生故障,则会自动重写,不会丢失任何数据。只有当驱动器用尽备用扇区时,典型操作系统才会注意到,此时您的数据就有风险。
所以我想这个故事的寓意是使用类似智能工具监视谎言。
答案2
我知道新文件系统 ZFS 实际上会在发现硬盘坏扇区时报告。也许问题不在于硬盘本身,而在于缺乏足够现代的文件系统。硬盘有时会检测到坏扇区,并将其重新映射到好扇区,但这显然还不够。
答案3
据我所知,通常您会看到可以检测到错误(使用某种哈希校验?)并且如果某个扇区出现故障,则驱动器将淘汰该扇区。
如果读取头本身或者磁盘上的位以外的其他机制出现故障,那么您可能很难真正检测到。
答案4
我的磁盘刚刚坏了(不得不冻结它以从死机中挽救我能挽救的东西),然后买了一个外置硬盘来做备份。大约一个星期,我在一个旧驱动器(第一代 SATA,即带有 SATA 接口的 IDE)上安装了 Ubuntu。我知道磁盘很旧,用不了多久,但直到我在另一个驱动器上安装了 Fedora 后,我才收到驱动器即将发生故障的警告。
我的理论: 很可能 Windows XP 和 Ubuntu 等消费者友好型操作系统不会默认显示这些 SMART 错误。