为什么 SSD 比 HDD 更容易发生故障?

Vik*_*kki 13 ssd hard-drive hardware-failure hard-drive-failure

现代 PC 倾向于使用两种类型的内部存储设备之一:1 2

  • 硬盘驱动器(HDD) 将数据存储在涂有磁记录介质的旋转磁盘上,这项技术可以追溯到 20 世纪 60 年代。硬盘驱动器非常便宜,容量非常大,但速度相对较慢,而且机械上非常脆弱(它们有很多移动速度非常非常快的部件,必须彼此保持非常接近而不发生碰撞)。
  • 固态硬盘(SSD) 将数据存储在半导体存储器中,可以是闪存 EEPROM,也可以是(有时)电池供电的 DRAM 或 SRAM。SSD 比 HDD 更快,而且由于没有易碎的移动部件,机械性能更加坚固,但每字节也更昂贵,容量不那么大,而且长期存储的可靠性较差(因为它们的存储单元往往会损坏)。随着时间的推移慢慢泄漏电子)。

这两种类型的存储设备都会随着时间的推移而磨损并最终失效。然而,众所周知,SSD 总是或几乎总是突然发生灾难性故障,几乎没有或根本没有提前警告;相比之下,HDD 故障通常是渐进的,在很长一段时间内性能缓慢下降,并且偶尔出现 fsck/chkdsk 读/写错误越来越频繁,这提供了充足的时间来备份驱动器的内容并将其替换为一个新鲜的标本。

虽然 HDD 和 SSD 都具有明显的灾难性故障模式(例如驱动器控制器或接口故障),但人们预计,对于这两种类型的驱动器,大多数驱动器磨损故障至少会逐渐发生,以与 HDDS 相关的传统方式,随着时间的推移,驱动器逐渐变慢,遇到越来越频繁的读/写错误,并积累坏扇区(对于 HDD)或内存单元(对于 SSD),直到退化最终损坏对硬盘至关重要的东西。驱动器的操作。

两种类型的驱动器都以相同的方式处理介质的磨损部分,即通过默默地将数据从死扇区或单元重新映射到工厂为此目的预留的备用扇区/单元的内部存储;3即使备用存储已耗尽,并且坏扇区或内存单元开始对使用驱动器的操作系统可见,驱动器上使用的文件系统仍然通过从存储介质的这些坏部分重新映射到未使用,仍保存良好。

事实上,人们可能天真地认为 HDD比 SSD容易发生突然的灾难性故障,原因如下:

  • HDD 具有 SSD 所不存在的灾难性故障模式(例如主轴电机故障或卡住或磁头磁盘碰撞)。
  • 对于 HDD,最低级别的粒度是扇区(一块大小为 512 字节的驱动器块,或者在某些较新的驱动器上为 4 KiB),而 SSD 则使用单独的存储单元(每个存储单元仅存储 1 到 4),从而允许更多-更细粒度地处理存储介质的好部分和坏部分,并允许更有效地利用驱动器上剩余的好空间。

然而,尽管如此,HDD 通常会逐渐失效,而 SSD 通常会一次性全部失效。为什么?这是否与大多数 SSD 在频繁使用的内存单元开始出现故障之前就开始重新分配写入操作有关,从而延迟了前几个彻底的单元故障(但是,即便如此,人们预计仍然会出现相当大的提前警告)即将发生的驱动器故障,因为单个单元故障是统计性的而不是确定性的,因此无法消除预警单元故障尾部)?


1:显然,计算机不限仅使用其中之一;只要它有足够的连接器来连接两个或多个内部驱动器,就完全可以在同一台计算机上同时安装 HDD 和 SSD。这可以用来利用两种类型存储设备的优势,较小、较快的 SSD 保存操作系统和磁盘访问受限的应用程序,而较大但较慢的 HDD 保存大量数据和非磁盘访问- 有限的应用。

2:一些较新的驱动器同时使用两种数据存储方法,将大而慢的磁驱动器与较小的内置固态缓存相结合;这些工作原理与脚注 1 中描述的设置相同,但通常在操作系统中显示为单个驱动器,而不是两个驱动器,并且通常不向用户提供指定是否应将文件写入磁存储的选项或固态存储器。这种驱动器通常被称为聚变驱动器,不要与同名的星舰推进方法相混淆。

3:这就是为什么现代 HDD 和 SSD 在新时通常报告为没有坏扇区或单元,尽管驱动器制造中存在固有的缺陷,以及为什么坏扇区/单元仅在驱动器生命周期的后期才开始对操作系统可见,一旦驱动器的内部备件库存耗尽。

Sco*_*ott 12

SSD“突然死亡”的典型原因可以归因于其运行的功能要求。@LawrenceC 在他们的回答中简短地谈到了这一点,但我将在这里进行扩展。

\n

所有 SSD 都需要某些元数据才能运行:

\n
    \n
  • 用于建立基线功能的控制器固件
  • \n
  • 微代码更新以更改功能或加密密钥
  • \n
  • 闪存转换层使用的磨损均衡数据
  • \n
  • SMART属性等
  • \n
\n

以上所有内容都存储在NAND闪存的所谓系统区中。ACELab 的数据恢复专家 Roman Morozov 在Elcomsoft 的一篇优秀博客文章中提供了有用的详细信息(重点是我的):

\n
\n

系统区域包含SSD固件(启动控制器的微代码)和系统结构。系统区的大小范围为4~12GB。在该区域中,SSD控制器存储名为\xe2\x80\x9cmodules\xe2\x80\x9d的系统结构。模块包含基本数据,例如转换表、处理媒体加密密钥的微代码部分、SMART 属性等。

\n
\n

翻译表\xe2\x80\x94 讽刺的是,支持磨损均衡的机制\xe2\x80\x94无法进行磨损均衡:

\n
\n

如果您读过我们之前的文章,您就会知道 SSD 驱动器会主动重新映射逻辑块的地址,将相同的逻辑地址指向各种物理 NAND 单元,以平衡磨损并提高写入速度。不幸的是,在大多数(所有?)SSD 驱动器中,系统区域的物理位置必须保持不变。无法重新映射;磨损均衡至少不适用于系统区域中的某些模块。这反过来意味着不断的单个写入操作流(每次修改转换表的内容)将一遍又一遍地写入相同的物理 NAND 单元......

\n
\n

由于 NAND 系统区无法进行磨损均衡,因此它承受的压力比数据区高得多。频繁的小写入会加剧这种情况:

\n
\n

此类使用场景将导致系统区域过早磨损,而任何 SMART 参数中都没有任何有意义的指示。因此,剩余寿命为 98-99% 且完全健康的 SSD 可能会突然从系统中消失。此时,SSD控制器无法对存储在系统区域中的重要信息进行成功的ECC更正。SSD 从计算机\xe2\x80\x99s BIOS 中消失或显示为空/未初始化/未格式化媒体。

\n
\n

如果控制器无法启动固件,这可能会表现为驱动器完全失效:

\n
\n

如果 SSD 驱动器没有出现在计算机\xe2\x80\x99s BIOS 中,则可能意味着其控制器处于引导循环中。在内部,发生以下循环过程。控制器尝试将微码从NAND芯片加载到controller\xe2\x80\x99s RAM中;发生错误;控制器重试;发生错误;ETC。

\n
\n

但通常情况下,数据会因为 FTL 失败而消失:

\n
\n

然而,最常见的故障点是将物理块映射到逻辑地址的转换模块中出现错误。如果出现此错误,SSD 将在计算机\xe2\x80\x99s BIOS 中被识别为设备。但是,用户将无法访问信息;SSD 将显示为未初始化(原始)介质,或者将宣传显着较小的存储容量(例如 2MB,而不是 960GB 的实际容量)。

\n
\n

因此,SSD 的突然故障始终是有限写入耐力\xe2\x80\x94 的结果,而是驱动器元数据的结果,而不是用户数据的结果

\n

  • 为什么驱动器的系统区域不能通过拥有一些保留区域以及一个用于标识当前正在使用的其他区域的区域来支持磨损均衡?即使最后一个区域无法“磨损均衡”,下一层每写入 10,000 次也只需要写入一次。 (4认同)

use*_*489 6

您的大部分观点都是正确的,但以下几点可能可以解释您的问题:

SSD 通常HDD 更快。最大容量的硬盘实际上可以在速度上与中低档 SSD 相媲美。硬盘驱动器带宽往往与数据密度成正比。SSD 的写入速度实际上可能比读取速度慢两倍。

SSD 和 HDD 具有截然不同的磨损问题和故障模式。一般来说,HDD 磨损是从启动和停止以及连续数小时旋转开始的,而且它们的磨损只能通过统计来预测——某些驱动器的保修期很容易延长 5-10 倍。旋转本身不会杀死 HDD,但受旋转影响的一些随机磨损事件可能会发生,也可能不会发生。大多数当前的 SSD 每个块的写入周期数都是有限的,当达到该计数时,它们很快就会失败。企业级 SSD 的额定值为保修期内每天的最大总写入次数。

SSD 和 HDD 都包含内部故障预测系统。在 Linux 中,带有 smartctl 实用程序的 smartmontools 可以从这两种驱动器类型中的大多数读取 SMART 数据。有些 SSD 需要 nvme-cli 软件包来提取类似的数据。windows下应该有类似的工具,有些磁盘厂商也有自己的工具。使用这些工具,您通常可以在驱动器发生故障之前很久就检测到即将发生的故障。有些 SSD 实际上会告诉您它们的确切运行状况(以迄今为止使用的写入周期的百分比表示)。在这些情况下,新的 SSD 会告诉您多久就会出现故障。对于 HDD,它无法告诉您何时会发生故障,它只能告诉您随机故障事件是否已经发生并且驱动器已经发生故障。

根据我的经验,硬盘驱动器有时会在发生灾难性故障之前发出一两周的警告,而这种警告的形式是越来越多地出现不可纠正的 I/O 错误。通常情况下,磨损点上的薄片会漂浮在内部并刮伤驱动器的其余部分,并且在数据开始丢失之前它会突然失效,几乎没有任何警告。磁盘中的主轴故障很少见,并且可能是制造缺陷。

大多数 SSD 使用一种称为磨损均衡的技术,通过将数据复制到另一个块,然后向其中写入新数据,重用一段时间未写入的块,以便所有块获得相同的写入次数。这延长了驱动器的使用寿命,但结果是在它发生故障之前不会出现任何错误,并且它会均匀且一次性发生故障。它不会出现“磨损点”。但驱动器从一开始就知道它离失败有多近,如果你问它,它会告诉你。

正如已经指出的,如果您掉落硬盘,可能会立即损坏它。综上所述,如果说 SSD 在 HDD 发出警告时立即出现故障,那就有点倒退了。当然,任何一个都可能因控制器故障而突然发生故障。

SSD 不支持单独的位。它们以块的形式工作,通常为 2048 字节,当您写入块时,它必须找到未使用的块,或者必须重新定位未使用的块,然后替换它。SSD 实际上没有磁盘那么细粒度,因此您也可以将其倒退。但实际上块大小是一个实现细节,多年来磁盘的块大小也变得越来越大。

  • 回复:你的第二段。真正让 SSD 更快的不是它们的传输速度,而是它们的“访问时间”(以及随机访问的 IOPS),这比旋转 HDD 快几个数量级。 (3认同)