Sanitize从字面上理解就是销毁、清除的意思。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相关的nvme标准命令有两条,一条是向SSD发起Sanitize操作nvme sanitize,一条是nvme sanitize-log来获取日志解析执行情况。我们会在后面的文章通过实例进行演示。nvme-sanitize可以通过-a参数的指定,选择要执行哪种类型操作。
Sanitize 和Secure Erase的主要区别
Sanitize和Secure Erase都可以安全地将SSD设备上存储的数据删除。对SSD进行Sanitize或Secure Erase操作后,硬盘上的所有数据将被永久删除,且无法恢复。但这两种方法有一些显著区别,二者首先通过不同nvmecli命令触发,sanitize的主要作用就是用来清除用户数据,而Secure Erase 主要通过format(格式化)修改SSD一些配置参数,修改参数的同时会对数据进行删除。
Secure Erase通过nvme format命令操作,而format主要有如下作用: 用来修改LBA sector size,通过LBAF(-i参数)的指定来修改Sector大小,如新一代PBlaze6系列延续上一代PBlaze5 920系列可变Sector size功能,支持 512/520/4096/4104 和 4160字节; 用来修改保护信息(Protection Information)类型,Type1/Type2/Type,PI信息是放在元数据的前8位还是后8位; format可以针对多命名空间或单个命名空间进行操作,sanitize是对整个命名空间操作; format也支持User Data Erase(用户数据删除)和Cryptographic Erase(密钥删除),这两种类型的format方式也就是sanitize的Block Erase 和Crypto Erase的擦除操作。
Sanitize 执行时间为什么比 Format 短?
Sanitize主要包含两个两个阶段,向SSD发sanitize命令,后台异步执行擦除操作,也就对应两个时间 completion of the Sanitize command(命令的完成)和completion of the sanitize operation(操作的完成),命令的完成不代表操作的完成。对于用户而言,sanitize命令是在异步完成用户数据删除前返回完成,所以看到的执行时间相比format更短,format必须彻底删除数据后才返回完成。
当Sanitize异步数据擦除都彻底执行完后,会发一个异步事件去通知主机。
使用 Sanitize 有什么注意事项吗?
Sanitize会彻底删除用户数据,所以执行Sanitize前一定要备份重要数据!
另外Sanitize在执行过程中会中断一些不被允许执行的命令,像admin、format、upgrade等绝大多数命令都不允许在sanitize过程中执行。如果执行Sanitize命令过程中遇到异常掉电,上电后会自动重新完成sanitize操作。
|