SSD Sanitize 和 Format

前言

安全擦除SSD中存储的数据,在一些场景下是非常必要的功能。譬如你手中有一块NVMe SSD想重新用做其他业务,或者设备折旧退役,为保证之前SSD的数据不被泄露,安全擦除SSD中的数据,避免通过某些工具恢复旧数据成为必需。

介绍

有两种方式可以实现用户数据的安全擦除:

  • 一种是Format(对应nvmecli命令是nvme format)
  • 一种是Sanitize (对应nvmecli命令是nvme sanitize)

1、Format

Format顾名思义是格式化的意思,可以对整个设备或单独命名空间进行格式化操作。Format主要用来修改SSD一些配置参数,修改参数的同时会对数据进行删除。

  • 通过-i参数,来修改LBA sector size,如Memblaze PBlaze6 6920系列支持 512/520/4096/4104 和 4160字节可变sector
  • 通过-s参数,选择执行User Data Erase(用户数据删除)还是 Cryptographic Erase(密钥删除)
  • 通过-i参数修改端到端保护信息(Protection Information)选项,支持ype1/Type2/Type3
  • 通过-p参数指定PI信息是放在元数据的前8位还是后8位
  • 通过-m参数指定元数据与用户数据的存放方式支持DIF还是DIX

2. Sanitize

Sanitize从字面上理解就是销毁、清除的意思,是单纯的安全擦除用户数据,不会对SSD的配置做任何修改。Sanitize支持Block Erase(块擦除)、Overwrite(覆写)、Crypto Erase(密钥删除)三种类型擦除操作。

  • Block Erase:从block级别,也就是从物理上彻底擦除SSD上的数据
  • Overwrite:用特定的数据格式覆盖用户数据。Overwrite擦除方式最早在HDD上应用,HDD的数据是存储在带有磁性涂层的金属盘片上,写入新数据可以通过覆写的方式完成。NVMe SSD时代,协议演进到NVMe1.3引入Sanitize功能,Overwrite擦除方式也得以沿用。然而,SSD的存储介质与HDD不同,读取和写入的基本单位不是HDD的比特(bit)或字节(byte),而是一个页(Page),新的数据写入需要先擦除(Erase),然后再写入(Program),擦除必须按照块(Block)为单位进行,这无形中会引入额外擦除,从而降低SSD寿命。
  • Crypto Erase:对于支持自加密功能的SSD,通过删除密钥,使加密数据不可识别

Sanitize 执行时间为什么比 Format 短?
Sanitize主要包含两个阶段,向SSD发sanitize命令,后台异步执行擦除操作,也就对应两个时间 completion of the Sanitize command(命令的完成)和completion of the sanitize operation(操作的完成),命令的完成不代表操作的完成。对于用户而言,Sanitize命令是在异步完成用户数据删除前返回完成,所以看到的执行时间相比format更短,format必须彻底删除数据后才返回完成。

当Sanitize异步数据擦除都彻底执行完后,会发一个异步事件去通知主机。可以通过nvme sanitize-log的-r参数来设置获取日志时要保留或者清除异步事件,即对NVMe1.4中 get-log-page Retain Asynchronous Event(RAE)字段进行置位。

如何查看 Sanitize 的执行情况?
SSD通过sanitize擦除数据后,可以通过nvme sanitize-log来获取执行日志,log会记录最近一次Sanitize执行情况。例如对Memblaze PBlaze6 6926系列执行sanitize block erase后查看关键状态日志,Sanitize Progress(SPROG)字段代表sanitize完成进度,是指异步从NAND彻底删除数据的进度,以65536为分母,65535即进度完成100%。

Sanitize status log 关键字段解析:

  • Sanitize Progress(SPROG)字段代表 sanitize 完成进度,是指异步从 NAND 彻底删除数据的进度,以 65536 为分母,65535 即进度完成 100%。
  • Sanitize Status(SSTAT)字段记录最近一次完成的 sanitize 状态,0x101 代表[2:0]中第 0 bit 置“1”,即说明最近一次 sanitize 执行成功。
  • Sanitize Command Dword 10 Information (SCDW10)字段代表完成 Sanitize – Command Dword 10 的操作类型,0x2 即 0x010b,完成的是 Block Erase sanitize 操作

协议对sanitize操作的描述,供参考

  • sanitize操作的范围是 NVM Subsystem中能够包含user data的所有位置,包括caches、Persistent Memory Regions以及unallocated或deallocated的介质区域。
  • sanitize操作还可以根据需要更改log page(如,防止从log page information中导出user data)。
  • sanitize操作不会影响Replay Protected Memory Block、boot partitions或其他不包含user data的media和caches。
  • 操作失败:如果 NVM Subsystem的组成发生变化(例如,添加了新domain,或发生了division event)并且该变化阻止了sanitize操作的成功完成,则sanitize操作将失败。
  • 只有在 NVM Subsystem未被划分时才能开始sanitize操作(请参阅NVMe 2.0a base第 3.2.4 节)。一旦开始,sanitize操作将无法中止并在CLR后继续,包括power cycle。

特定sanitize操作的控制器属性
Identify Controller data structure的Sanitize Capabilities (SANICAP) 字段(参见NVMe 2.0a base图 275)表示支持的sanitize操作类型和特定sanitize操作的控制器属性。

  1. No-Deallocate Modifying Media After Sanitize (NODMMAS): 指示在sanitize操作成功完成后控制器是否修改了介质,该操作在Sanitize命令中将No-Deallocate After Sanitize置为“1” ;
  2. No-Deallocate Inhibited (NDI) :指示控制器是否支持sanitize命令中的No-Deallocate After Sanitize位。
    NODMMAS 字段(参见NVMe 2.0a base图 275)指定,如果sanitize命令包括No-Deallocate After Sanitize设置为“1”并且 NODMMAS 设置为 10b,则sanitize操作具有关联的额外media修改操作。这个额外的media修改操作对请求的sanitize操作的结果起作用,目的是使所有 LBA 内容都可读。有关sanitize操作和与完整性电路交互的更多信息,请参阅NVMe 2.0a base附录 A.3。
    此额外的media修改应在 NVM subsystem下列操作之前完成:
    a) 通过Asynchronous Event报告sanitize完成(参见NVMe 2.0a base第 5.2 节);和
    b) 在Sanitize Status log中报告sanitize完成(参见第 5.16.1.25 节)。
    Overwrite Sanitize 操作是特定于media的,可能不适用于所有media类型。例如,如果介质是 NAND,则多次覆盖操作可能会对介质耐久性产生不利影响。

3. Sanitize和Format的区别

如果只是想快速擦除用户数据,推荐Sanitize:

  • Sanitize只是单纯的安全擦除用户数据,不会对SSD的配置做任何修改
  • Sanitize执行时间比Format短
  • 另外Sanitize在执行过程中会中断一些不被允许执行的命令,像admin、format、upgrade等绝大多数命令都不允许在sanitize过程中执行。如果执行Sanitize命令过程中遇到异常掉电,上电后会自动重新完成sanitize操作

如果需要修改SSD的sector大小、端到端保护的PI类型等,需要使用Format:

  • Format可以针对多命名空间或单个命名空间进行操作,Sanitize是对整个命名空间操作
  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值