4.4 NVMe Admin Command Set章节详细介绍了设备应支持的NVMe管理命令集,包括必需的和可选的命令。以下是一些关键要求和描述:
-
NVMe-AD-2:识别命令除了支持所有必需的CNS值和相关的必需字段外,还应支持以下可选字段:
-
-
格式进度指示器(FPI),更新粒度为1%。
-
I/O性能和耐久性提示:NSFEAT位4设置为1b。
-
-
NVMe-AD-3和NVMe-AD-4:在一个NVMe设备中,可以创建多个命名空间,每个命名空间都有自己的LBA(逻辑块地址)范围、容量和其他特性,也就是nvme协议规定的multi-namespace。
OCP详细规定了设备应支持的命名空间数量与设备可用容量之间的关系。具体来说:
-
如果设备的可用容量小于或等于1TB,那么设备至少应支持16个命名空间。
-
如果设备的可用容量大于1TB但小于或等于2TB,那么设备应支持至少32个命名空间。
-
如果设备的可用容量大于2TB但小于或等于3TB,那么设备应支持至少48个命名空间。
-
这种模式继续下去,每增加1TB的可用容量,所需的最小命名空间数量就会增加16个。
-
当设备的可用容量大于7TB时,设备应支持至少128个命名空间。
-
NVMe-AD-5和NVMe-AD-6:设备应支持格式NVM命令,并支持安全擦除设置值000b、001b和010b。
-
NVMe-AD-7:设备应支持Sanitize命令,并支持Block Erase(010b)、Overwrite(011b)和Crypto Erase(100b)sanitize操作。从NVMe Spec 1.3开始,对数据安全方面增加了一个“Sanitize”功能
Sanitize清除的数据很彻底,对FTL映射表、User Data(包括已经写入NAND和仍在cache里的)、Meta Data、安全密匙、CMB中SQ/CQ相关信息、可能含有用户数据的log等等会全部清除。不过,sanitize操作不会改变RPMB、boot分区、不包含用户数据的cache等内容。
RPMB是Replay Protected Memory Block的缩写,它的存在目的是用来给系统存放一些特殊的、需要进行访问授权的数据。
NVMe Spec中定义了三种Sanitize类型:Block Erase, Crypto Erase和Overwirte.
-
Block Erase:采用block级别清除所有的用户数据;
-
Crypo Erase: 擦除安全密匙;
-
Overwrite: 用特定的pattern数据覆盖用户数据。不过这个对NAND-based SSD不提倡,因为会降低NAND的使用寿命。
一旦启动了Sanitize操作,是不能中断的,除非fail了。即使power cycle或者controller level reset之后,santize会继续执行。