固态硬盘如何在使用寿命结束时失败?

假设一块MLC固态硬盘已经持续了很长时间,第一块电池已经达到了最后的擦除周期并拒绝擦除。

那之后会发生什么? 控制器是否检测到坏块,并移动到下一个块,并试图擦除? 随着时间的推移,驱动器的总容量是否会缓慢下降?

编辑

当然,我们可以忘记磨损平衡。 是的,它延长了驱动器的寿命,但我不是在说这个。 最后一个单元将会达到最后的擦除周期。

NAND闪存芯片有一些内置的机制来检测写入和擦除操作失败,并在出现故障时提醒控制器。 在这种情况下,控制器可以再次尝试,或者将该块视为错误,并将其映射为平均algorithm。 NAND设备中的每个页面在主数据旁还有一个备用区 ,用于元数据,如ECC和其他forms的故障检测和容错。 控制器可以使用备用区域来决定自己的容错scheme。 汉明码是一种常见的scheme,虽然有几种,包括简单的奇偶校验位和里德 – 所罗门码 。 如果读取操作中的内容不匹配,则控制器可以随心所欲地进行操作。 理想情况下,它也会将这些模块映射到磨损均衡algorithm之外,在“太多”模块失效之前,您将一点一点地丢失容量,其中“太多”取决于控制器内的algorithm和硬件结构大小。 许多首要的控制器devise只是向操作系统声明一个错误。

请注意,这不是MLC特有的问题。 尽pipeMLC单元可能更容易出现读取错误,但由于错误的余量必然较小,所以SLC单元以大致相同的机制出现故障,并且可由控制器以相同的方式处理。

就像使用硬盘一样,这取决于操作系统的实现。 控制器只会报告写入(擦除实际上是一个写操作)失败,并由操作系统内核的devide驱动程序来决定要做什么。 从目前为止我所看到的,微软和Linux实现只是简单的将错误代码返回给调用应用程序 – 所以它会产生I / O错误。

简而言之:你只是在某个时候得到一个“破碎”的设备。

固态硬盘使用一种称为“损耗均衡”的function,驱动器保持关于扇区使用情况的统计信息,并且在某个时刻或者当它检测到问题时,它会将该扇区移动到保留状态,就像常规硬盘一样。