针对 SSD 固态硬盘的安全擦除 Secure Erase
SSD 的安全擦除(Secure Erase)用于永久删除存储介质上的数据,以及在驱动器性能开始明显下降至低于标称值时恢复其速度。
Secure Erase 可以解决的问题核心
当 SSD 开始运行缓慢(读写数据变差)时,这里有许多可能的原因,有些与硬件相关,有些与软件有关。SSD 与传统硬盘(HDD)不同,因此,单纯删除数据或格式化驱动器,并不意味着真正重置存储单元——在录入之前需要进行清除,这会降低新数据的写入速度。理论上,不应该出现此类问题,因为 TRIM 命令会清除被标记为删除的存储单元中的数据。此命令仅适用于 2.5 英寸和 M.2 SATA 硬盘。而对于连接到 PCIe 总线的硬盘(如 M.2 或主板上的 PCIe 接口硬盘),有类似的命令——Deallocate。但有时这些功能会被禁用——可能是由于操作系统错误、用户通过第三方软件设置硬盘出错,或使用了未知软件组件的非标准操作系统版本。因此,硬盘开始明显变慢,且无需基准测试也能明显感觉到。
SSD 的存储管理机制
SSD 使用多个映射层隐藏闪存存储的实际物理结构,并帮助管理数据的完整性和寿命。这些层统称为闪存转换层(Flash Translation Layer, FTL)。
此外,SSD 通常过度配置:内部含有比额定容量更多的闪存存储。这些额外的存储空间被 FTL 用作空白块,以及用作逻辑到物理映射的带外区域。
映射层和闪存控制器的管理方式,基本上确保单纯的擦除或传统的安全擦除不能完全覆盖或删除所有存储的数据。
SSD 数据残留的一个例子
当你编辑文档并保存更改时,新内容不会覆盖原始数据(非原地更新),而是写入到空白块,然后更新逻辑到物理映射,指向新位置。这会导致原数据所在位置被标记为空闲,但实际数据仍然存在。随着时间推移,空闲区域的旧数据会被 SSD 的垃圾回收系统回收,但在此之前,这些数据仍可能被恢复。
由于 FTL 的存在和 SSD 的写入方式,针对硬盘的普通安全擦除方法无法访问到所有存储位置,可能会遗留部分未被覆盖的存储数据。
SSD 制造商的解决方案
为了解决安全擦除问题,大部分制造商都实现了内置的快速安全擦除命令——例如:
- 针对 SATA SSD 的 ATA 命令:Secure Erase Unit
- 针对 PCIe SSD 的 NVMe 命令:Format NVM
这些指令能够有效且快速地清除 SSD 上的数据。
关于数据安全和清除的复杂性
SSD 具有复杂的工作系统,因此,完全销毁数据的方案也不应简单直接。但实际上,SSD 内置的控制器是“核心脑”——它不仅控制数据的写入,还会对数据进行加密,并存储密钥在控制器内。如果你更换(或“重置”)密钥,所有存储的数据都将变成无法解读的随机比特串,无法破解。这一方法非常快速且有效。
结合“更换密钥”和“重置存储单元”两种方法,可以实现对硬盘的彻底清洁,并最大限度地恢复性能。这一方案既解决了性能下降的问题,也帮助评估驱动器的磨损程度。
特殊说明
一些支持硬件加密的 SSD 固件只允许在出厂时设定一种加密算法,具体依赖于制造商控制器的设定。如果你“重置” SSD 后,比较实际性能与宣称性能,便能得知相关信息。这一操作不影响 SSD 的磨损,是分析磁盘状态的有效方法。但由于 SSD 的特殊工作机制,不可能通过此方法长时间提升读写速度,其效果还受到具体硬盘型号和控制器固件的影响。此外,并非所有 SSD 都支持加密,若不支持,只能由控制器直接重置存储单元。