OCP NVME SSD规范解读-3.NVMe管理命令-part2

news2024/12/23 14:27:02
  1. NVMe-AD-8:在某些情况下(如Sanitize命令、Format NVM命令或TCG Revert方法后数据被清除),设备应允许读取已清除的LBAs而不产生错误,并在最后一次清除完成后,对未写入LBAs的读取返回所有零值给主机

  2. NVMe-AD-10:设备应支持Identify命令的UUID列表功能(CNS值17h)。

UUID是一个128位的数字,用于唯一标识信息或者对象。在NVMe SSD规范中,使用UUID是为了确保供应商特定的日志标识符和特性标识符能够访问到本规范中定义的功能,而不会意外地访问到其他供应商特定的、可能使用相同标识符的功能。

在规范中,定义了一个特定的UUID值(C194D55BE0944794A21D29998F56BE6Fh),这个UUID被包含在UUID List(NVMe-AD-10)中,并且其Identifier Association字段被设置为清除状态(00b)。

图片

Get Features和Set Features命令需要支持UUID Index功能。当使用这个特定的UUID或者一个零UUID Index,以及规范中使用的供应商特定的Feature Identifier时,这些命令将访问到规范中定义的供应商特定的特性。

Get Log Page命令也需要支持UUID Index功能。当使用这个特定的UUID或者一个零UUID Index,以及规范中使用的供应商特定的Log Page Identifier时,这个命令将访问到规范中定义的供应商特定的日志页。供应商特定的持久事件日志页也需要支持UUID Index功能。

  1. NVMe-AD-11:如果特定NVMe管理命令不使用Namespace Identifier(NSID),并且主机指定非零NSID,则控制器应以状态Invalid Field in Command中止命令。

  2. NVMe-AD-12:设备应支持Device Self-test命令。

  3. NVMe-AD-14/15/16:设备应支持Lockdown命令。Lockdown命令是NVMe管理命令集中的一个命令,主要用于安全和管理目的。当设备接收到Lockdown命令时,它会锁定指定的Admin命令或Features,限制对这些功能的访问或修改。

  4. NVMe-AD-17:"No-Deallocate Modifies Media After Sanitize"字段的设置是为了确保Sanitize操作后的数据安全性。当这个字段设置为01b时,即使Sanitize操作完成后,设备也不会再对已Sanitize的区域进行写入或修改操作。(nvme协议定义如下)

图片

这样的设计目的是防止在数据被Sanitize清除后,由于设备的内部操作或者意外情况,导致已经清除的数据区域被新的数据覆盖,从而可能影响数据的安全性和清除效果。通过禁止Sanitize操作后对媒体的额外修改,设备可以更好地保证Sanitize命令的执行效果,满足数据安全和隐私保护的需求。例如,在执行Crypto Erase(加密擦除)操作后,设置这个字段为01b可以确保解密密钥不会被再次写入或修改,从而确保被擦除的数据无法被恢复。

  1. NVMe-AD-18:这表示设备应在Identify Controller数据结构中的Sanitize Capabilities区域将No-Deallocate Inhibited位清零至0b。这个位主要影响设备在执行sanitize操作后的数据处理方式。

图片

与NVMe-AD-17正好相反,NVMe-AD-18要求设备不应禁止在sanitize操作后进行deallocations,也就是说,设备应该允许在sanitize操作完成后释放已擦除或覆盖的数据块。通过将No-Deallocate Inhibited位设置为0b,设备表明它支持并允许在sanitize操作后进行deallocations。

这一要求的意义在于确保设备在执行sanitize操作后能够有效地管理和回收存储资源,同时保持数据安全性和设备性能。通过遵循这一要求,设备可以更好地满足数据保护和存储管理的需求,特别是在需要频繁进行sanitize操作的高安全环境或特定应用场景中。

  1. NVMe-AD-19:
    如果设备在接收到Sanitize命令并成功完成操作后,无法返回全零(即使命令设置了No-Deallocate After Sanitize位为1b),设备应忽略不进行deallocations的请求,并执行deallocations操作。同时,设备应在Sanitize Status Log Page中将Sanitize Status字段设置为100b。

这表示在某些特定情况下,如果设备无法在sanitize操作成功完成后返回零(即无法确保已擦除的数据区域被填充为零),即使Sanitize命令设置了No-Deallocate After Sanitize位为1b(表示请求在sanitize操作后不进行deallocations),设备也应该执行deallocations。

在这种情况下,尽管主机请求不要进行deallocations,但由于设备无法保证返回零,为了数据的安全性和一致性,设备仍然会进行deallocations。同时,设备会在Sanitize Status Log Page中的Sanitize Status字段设置值为100b,以表明sanitize操作的特殊状态或异常情况。

图片

这一要求的意义在于确保设备在执行sanitize操作后能够提供一致和可靠的数据清除效果,即使在某些硬件限制或异常情况下也能保证数据的安全性。通过遵循这一要求,设备可以更好地满足数据保护和安全合规的需求,特别是在需要严格的数据擦除和销毁的环境中。

  1. NVMe-AD-22:
    设备出厂时,应在Sanitize Status Log Page中的Sanitize Status字段清除为000b,表示NVM子系统从未进行过sanitize操作,并且Global Data Erased位在Sanitize Status字段中设置为1b,表示全局数据已被擦除。

图片

  1. NVMe-AD-24:
    设备应在Identify Controller数据结构中的Asynchronous Event Request Limit字段报告至少为4的值。这表示设备支持至少同时处理4个异步事件请求。

这项要求主要涉及到设备对非易失性内存(NVM)进行格式化的功能。Format NVM命令是一种高级的管理命令,用于在固态硬盘(SSD)上重新初始化或清除特定命名空间的数据。

NVMe-AD-24要求设备支持按命名空间基础执行Format NVM命令,这意味着设备应该能够针对每个独立的命名空间进行格式化操作,而不是同时影响所有命名空间。在Identify Controller数据结构中的Format NVM Attributes字段的位0和位1被设置为00b,这表示设备支持按命名空间进行格式化。

图片

Format NVM命令通常包括几种不同的erase模式,如User Data Erase(仅清除用户数据)、Cryptographic Erase(使用加密技术清除数据)等。特别是在设备退役、转售或更换时,这些erase模式可以帮助提高数据安全性和保护用户隐私。

当主机发送一个Format NVM命令到设备时,设备会根据指定的erase模式和命名空间来执行格式化操作。这个过程可能包括清除namespace中的所有LBA(逻辑块地址)映射、删除用户数据、重置元数据信息以及更新Namespace Utilization(NUSE)等。

Namespace Utilization (NUSE)是NVMe设备中一个重要的概念,用于表示命名空间中当前已分配的逻辑块数量。这些逻辑块已经被分配给数据存储,正在进行读写操作或者已经包含有效数据。

图片

NCAP(Namespace Capacity)是指命名空间的总容量,即可以分配的最大逻辑块数量。而NUSE则是实际已经分配和使用的逻辑块数量,它始终小于或等于NCAP。

NUSE的值是动态变化的。当在命名空间中写入新的数据时,NUSE的值会增加;当删除或覆盖已有数据时,如果设备支持数据压缩或者垃圾回收功能,那么NUSE的值可能不会立即减少,因为被删除或覆盖的数据所在的物理块可能仍然被标记为已使用,直到被设备的后台处理程序进行清理和重用。

通过查询NVMe Identify Namespace数据结构中的相应字段,可以获取到命名空间的NUSE信息。

比如,在一个200GB的设备上,执行Format NVM命令进行用户数据擦除后,NUSE会被设置为零,表示所有逻辑块都没有被分配和使用。然后,每当向设备写入1GB的数据,NUSE的值就会增加相应的逻辑块数量,同时设备的使用数据也会相应地显示已使用的存储容量。

图片

  1. NVMe-AD-25:
    如果发生了报告启用的异步事件,并且没有未完成的Asynchronous Event Request命令,控制器应保留这些异步事件类型的事件信息,并在未来对Asynchronous Event Request命令的响应中使用这些信息。排队的重复异步事件应只报告一次。

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • PCIe surprise down异常与DPC功能分析

  • 过度加大SSD内部并发何尝不是一种伤害

  • NVMe over CXL技术如何加速Host与SSD数据传输?

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

  • SSD在AI发展中的关键作用:从高速缓存到数据湖

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • SSD数据在写入NAND之前为何要随机化?

  • 深度剖析:DMA对PCIe数据传输性能的影响

  • NAND Vpass对读干扰和IO性能有什么影响?

  • HDD与QLC SSD深度对比:功耗与存储密度的终极较量

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 如何通过优化Read-Retry机制降低SSD读延迟?

  • 关于硬盘质量大数据分析的思考

  • 存储系统性能优化中IOMMU的作用是什么?

  • 全景解析SSD IO QoS性能优化

  • NVMe IO数据传输如何选择PRP or SGL?

  • 浅析nvme原子写的应用场景

  • 多维度深入剖析QLC SSD硬件延迟的来源

  • 浅析PCIe链路LTSSM状态机

  • 浅析Relaxed Ordering对PCIe系统稳定性的影响

  • 实战篇|浅析MPS对PCIe系统稳定性的影响

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

闭包,垃圾回收机制

1.垃圾回收机制 当函数执行完毕后,函数内部的变量就会被销毁。 代码: function fn() {var a 10;a;return a;}console.log(fn()); 输出的结果: 11 持续调用的结果: 2.变量的私有化 代码: function fn() {var a 10;return function fn1() {return a;}…

git的使用基础教程

最近项目在搞自动化测试,需要将各种测试脚本集成到自动化框架里边,这个就需要用到版本管理系统了,下面简单价绍一下git的使用。 首先从官网下载并安装git工具,下面以wins系统为例子说明 https://git-scm.com/downloads wins安装好后&#xff…

【学习笔记】环论

子环环同态理想单位元(乘法单位元)环与子环的单位元无必然关系,即子环不一定有单位元,有也不一定和环的单位元相同 比如 Z 6 Z_6 Z6​有单位元1,其子环 ( 2 ) (2) (2)单位元为4;Z有单位元1,其子环2Z没有单位元若R有单位…

基于蝴蝶算法优化的Elman神经网络数据预测 - 附代码

基于蝴蝶算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蝴蝶算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于蝴蝶优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要:针…

介绍混沌工程的主要作用是什么?

混沌工程是一种通过有序的混沌实验来提高系统稳健性和可靠性的实践。它不仅有助于发现问题,更能够促使团队建立起一种主动预防和处理问题的文化,从而为复杂系统的管理提供了全新的视角。本文将介绍混沌工程的主要作用: 发现系统脆弱性&#x…

flex布局中滚动条展示内容时部分内容无法显示

这段时间看了一下之前的demo&#xff0c;发现了当时记录了一句 justify-content: center; 会影响滚动条内容展示&#xff0c;觉得还是记录一下 情况复现 这里我简单的写一下demo复现一下这个问题&#xff0c;如下&#xff1a; <!DOCTYPE html> <html lang"en&quo…

Python高级用法:装饰器(decorator)

装饰器&#xff08;decorator&#xff09; Python装饰器的作用是使函数包装与方法包装&#xff08;一个函数&#xff0c;接受函数并返回其增强函数&#xff09;变得更容易阅读和理解。最初的使用场景是在方法定义的开头能够将其定义为类方法或静态方法。 不使用装饰器的代码如…

MyBatis-config.xml配置文件

1、基本介绍&#xff1a; mybatis的核心配置文件(mybatis-config.xml)&#xff0c;比如配置jdbc连接信息&#xff0c;注册mapper等等&#xff0c;我们需要对这个配置文件有详细的了解。 官网地址有详细介绍 mybatis – MyBatis 3 | 配置 2、properties属性 在通常的情况下&am…

Java企业电子招投标系统源代码,支持二次开发,采用Spring cloud框架

在数字化采购领域&#xff0c;企业需要一个高效、透明和规范的管理系统。通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力&#xff0c;通过待办消息、招标公告、中标公告和信息发布等功能模块…

Windows搭建Emby媒体库服务器,无公网IP远程访问本地影音文件

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

普中STM32-PZ6806L开发板(HAL库函数实现-PWM呼吸灯)

简介 实现PWM呼吸灯。 主芯片 STM32F103ZET6呼吸灯引脚 : PC7电路原理图 LED8 电路图 LED8 与 主芯片连接图 其他知识 公式 PWM周期公式: Tpwm ( (ARR 1) * (PSC 1) ) / Tclk Tclk为定时器的输入时钟频率 Tout则为定时器溢出时间 ARR为计数周期 PSC为预分频器的值…

对房价数据集进行处理和数据分析

大家好&#xff0c;我是带我去滑雪&#xff0c;每天教你一个小技巧&#xff01; 房价数据集通常包含各种各样的特征&#xff0c;如房屋面积、地理位置、建造年份等。通过对数据进行处理和分析&#xff0c;可以更好地理解这些特征之间的关系&#xff0c;以及它们对房价的影响程度…

【MySQL】orderby/groupby出现Using filesort根因分析及优化

序 在日常的数据库运维中&#xff0c;我们可能会遇到一些看似难以理解的现象。比如两个SQL查询语句&#xff0c;仅仅在ORDER BY子句上略有不同&#xff0c;却造成了性能的天壤之别——一个飞速完成&#xff0c;一个则让数据库崩溃。今天就让我们围绕这个问题&#xff0c;深入剖…

Jmeter 性能压测 —— 常见问题

1、怎么确定系统最大负载&#xff1f; 通过负载测试&#xff0c;不断增加用户数&#xff0c;随着用户数的增加&#xff0c;各项性能指标也会相应产生变化&#xff0c;当出现了性能拐点。 比如&#xff0c;当用户数达到某个数量级时&#xff0c;响应时间突然增长&#xff0c;那…

20240102使用python3将视频切片改名之后合并

20240102使用python3将视频切片改名之后合并 2024/1/2 22:12 缘起&#xff1a;将迅雷下载的视频切片排序之后再通过ffmpeg合并&#xff01;https://pri-cdn-tx.xiaoeknow.com/app1cE7gLFM1187/confusion_index/1703599111EAPoRE.m3u8?signf17e1a2cc0ddd77801f3c5110116369e&am…

让Windows系统加速引导的六种方法,值得你去尝试

如果你厌倦了在电脑启动到Windows的时间内解决鲁比克方块问题,那么可能会有一些问题需要解决。以下是一些加快引导过程的方法,这样你就可以更快地开始工作(或玩)。 启用Windows的快速启动模式 Windows有一个名为“快速启动”的功能,它可以完全按照它字面的方式启动,所以…

git rebase应用场景三

文章目录 git rebase应用场景三 git rebase应用场景三 在我们的开发分支中 假设我们修改一个文件 提交一个版本 再回到master分支 同时也去修改1.txt文件&#xff0c;提交一个版本 这样相当于master分支提交了一次&#xff0c;dev也提交了一次 然后回到dev分支 此时会报错…

【办公技巧】RAR文件分卷压缩如何设置?

一个rar压缩包体积太大了&#xff0c;想要将压缩包分为三个&#xff0c;该如何做到&#xff1f;其实很简单&#xff0c;方法就在我们经常使用的WinRAR当中。 我们先将压缩包内的文件解压出来&#xff0c;然后查看一下&#xff0c;然后打开WinRAR软件&#xff0c;找到文件&…

基于多元宇宙算法优化的Elman神经网络数据预测 - 附代码

基于多元宇宙算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于多元宇宙算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于多元宇宙优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

鸿蒙崛起:互联网大厂加速鸿蒙原生应用开发,人才争夺战打响

随着华为鸿蒙系统的发布和不断推进&#xff0c;一场以鸿蒙为中心的生态竞争已经拉开帷幕。近日&#xff0c;网易、美团等多家互联网公司发布了与鸿蒙系统有关的岗位招聘&#xff0c;加速推进鸿蒙原生应用开发转型。这种趋势表明&#xff0c;鸿蒙系统已经引起了行业的广泛关注&a…