「SSD」- 坏块

问题描述

该笔记将记录:与 SSD 坏块有关的内容,以及相关问题的解决方案;

什么是坏块?

在计算机中,坏块是指永久损坏的磁盘存储或磁盘扇区单元。坏块是机械损坏的结果;

在受损后,存储在该扇区上的信息将丢失。当发现坏块后,会被标记,操作系统将跳过坏块;

!在 Wikipedia 中,「Bad block」与「Bad sector」指向相同页面;

坏块带来的影响

(1)数据丢失;
(2)影响硬盘的性能;

坏块产生原因

1、出厂坏块,或初始坏块,即出厂时因不符合厂商标准或厂商抽测过无法达到厂商公布标准的块,在出厂时已经被厂商标识为坏块;有些出厂坏块可以被擦除,有些不可以被擦除。在出厂时,固态硬盘 NAND 里的坏块会被屏蔽替换,坏块率不超过 2%;

2、在使用过程中,因为磨损造成的新增坏块或使用坏块;

3、因异常掉电等原因被主控误判的假性坏块。瑞耐斯在测试多家不同主控 SSD 后发现因异常掉电而产生新增坏块的问题非常普遍。在这种情况下,我们可以对 SSD 进行一次正确的全盘安全擦除即可修复这些错误;

坏块的发现与管理

与机械硬盘不同,通常机械硬盘的坏道如果少的话,都是可以通过擦除、重映射、再生 / 修复等方法解决的。而在固态硬盘中,如果发现坏块,那基本就报废了;

# 坏块的检测

操作系统与磁盘控制器都可以进行坏块检测;

在大多数文件系统中,都包含“对被标记为坏的扇区的”规定,因此操作系统之后可以避开坏块。有些应用程序 CHKDSK、badblock 可以用于主动发现坏块;

当磁盘控制器的固件发现坏块时,磁盘驱动器会将逻辑扇区重新映射到物理扇区。通常,重新映射发生在扇区写入时。在使用时,固态硬盘主控仍在对 NAND Flash 执行着坏块管理、坏块替换,以保证固态硬盘的寿命和性能;

# 谁来管理坏块

对于专门的闪存文件系统来说,通过专门的闪存文件系统来或驱动来管理坏块。(软件管理)

对于没有专门闪存文件系统的主控来说,坏块可以通过 SSD controller 的固件来管理。(固件管理)

# 坏块管理策略

固态硬盘坏块替换策略,一般有两种策略:

(1)替换策略,用固定的预留空间中的好块替换。当坏块太多,可替换的空间用完,固态硬盘就意味着报废了,这是较老的主控或个别主控的策略

(2)跳过策略,对于初始坏块,坏块跳过会通过 BBT 将对应的坏块跳过,直接将数据存入下一个好块。对于新增的坏块,将此坏块更新到 BBT 中,将坏块中的有效数据转存到下一个好块中;

最后总结

固态硬盘耐用与否,使用时性能下降严重与否,很大程度取决于闪存的好坏,以及固态硬盘厂家的闪存测试能力

参考文献

Wikipedia/Bad sector
固态硬盘如果发现坏块就完蛋了
正确处理固态硬盘 SSD 硬盘坏块
固态硬盘的坏块管理,你知道和不知道的
SSDFANS/SSD 坏块管理