假设 MLC SSD 已持续了很长时间,并且第一个单元已达到其最后一次擦除周期并拒绝擦除。
之后会发生什么?控制器是否会将其检测为坏块并移至下一个坏块并尝试将其擦除?驱动器的总容量是否会随着时间的推移而缓慢减少?
编辑
当然,我们可以忘记磨损均衡。是的,它可以延长驱动器的使用寿命,但我不是在谈论这个。最终,一个单元将进入其最后一个擦除周期。
答案1
NAND 闪存芯片具有一些内置机制来检测写入和擦除操作中的故障,如果发生故障,则会向控制器发出警报。在这种情况下,控制器可以重试,或者将该块视为坏块并将其从其磨损均衡算法中映射出来。NAND 设备中的每个页面也有一个备用区主数据区旁边是备用区,用于存储元数据(如 ECC)和其他形式的故障检测和容错。控制器可以使用备用区决定自己的容错方案。 汉明码是一种常见的方案,尽管还有几种,包括简单的奇偶校验位和里德-所罗门码如果读取操作不匹配,控制器可以自由地执行操作。理想情况下,它还会将这些块从磨损均衡算法中映射出来,并且您会一点一点地失去容量,直到“太多”块发生故障,其中“太多”取决于控制器内的算法和硬件结构大小。许多初创的控制器设计只是向操作系统声明错误。
请注意,这不是 MLC 特有的问题;尽管 MLC 单元可能更容易出现读取错误(因为出错的幅度必然较小),但 SLC 单元出现故障的机制大致相同,并且可以由控制器以相同的方式处理。
答案2
就像硬盘一样,这取决于操作系统中的实现。控制器只会报告写入(擦除实际上是写入操作)失败,操作系统内核中的设备驱动程序将决定要做什么。从我目前看到的情况来看,Microsoft 和 Linux 实现只是将错误代码返回给调用应用程序 - 因此会产生 I/O 错误。
简而言之:在某个时候,你只会得到一个“损坏”的设备。
答案3
SSD 使用一种称为“磨损均衡”的技术,即驱动器会保存有关扇区使用情况的统计数据,并且在某个时间点或检测到问题时,它会将该扇区移至保留扇区,就像普通硬盘一样。