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

  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.mzph.cn/news/590227.shtml

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

相关文章

鸿蒙开发之android对比开发《基础知识》

基于华为鸿蒙未来可能不再兼容android应用,推出鸿蒙开发系列文档,帮助android开发人员快速上手鸿蒙应用开发。 1. 鸿蒙使用什么基础语言开发? ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风…

二叉树题目:根到叶路径上的不足结点

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:根到叶路径上的不足结点 出处:1080. 根到叶路径上的不足结点 难度 6 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root…

关键字:throw关键字

在 Java 中,throw关键字用于抛出异常。当程序执行过程中发生意外情况,如错误的输入、资源不足、错误的逻辑等,导致程序无法正常执行下去时,可以使用throw关键字抛出异常。 以下是使用throw关键字的一些示例: 抛出异常…

服装店收银系统不只是收银 还需要线上商城和线上批发

一个综合性的服装店收银系统可以结合线上商城和线上批发功能,提供以下特点和优势: 线上商城:将服装店的商品信息同步到线上商城平台,让顾客可以通过网站或移动应用程序浏览和购买商品。线上商城可以实现在线支付、订单跟踪、售后服…

MySQL数据库索引优化

一、引言 1. 索引的重要性 MySQL数据库索引的重要性主要体现在,一是查询速度优化,索引可以极大地提高查询速度。对于没有索引的表,MySQL必须进行全部扫描来找到所需的行,如果表中数据量很大,那么通常很慢。通过适当的…

大数据规模存储的几个核心问题

文章目录 三个关键问题RAID(独立磁盘冗余阵列)RAID是如何解决关于存储的三个关键问题?水平伸缩 大规模数据存储都需要解决几个核心问题,这些问题都是什么呢? 三个关键问题 1.数据存储容量的问题 既然大数据要解决的…

图像分割实战-系列教程1:语义分割与实例分割概述

🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 下篇内容: Unet系列算法 1、图像分割任务概述 1.1 图像分割 分割任务就是在原始图像…

Elasticsearch8集群部署

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 本文记录在3台服务器上离线搭建es8.7.1版本集群。 1. 修改系统配置 1.1 hosts配置 在三台es节点服务器加入hostname解析&…

加法器原理详解

加法器的介绍与原理分析 什么是加法器? 加法器是一种数字电路,用于将两个二进制数相加并输出它们的和。 如何实现加法器 要讨论如何实现加法器就要先从只有一位的数字先进行考虑 一位二进制数相加 不考虑来自低位的进位——半加器 对于一位二进制…

【VTK三维重建-体绘制】第四期 VTK中GPU加速

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 上期内容讲到VTK的体绘制技术vtkGPUVolumeRayCastMapper,本文分享VTK中GPU加速的相关内容,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会…

机器学习的分类与经典算法

机器学习算法按照学习方式分类,可以分为有监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)、半监督学习(Semi-supervised Learning)、强化学习(Reinforcement Le…

图文证明 等价无穷小替换

等价无穷小替换 定义 等价无穷小是无穷小之间的一种关系,指的是:在同一自变量的趋向过程中,若两个无穷小之比的极限为1,则称这两个无穷小是等价的。无穷小等价关系刻画的是两个无穷小趋向于零的速度是相等的。 设当 x → x 0 时…

Android 接入第三方数数科技平台

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数数科技平台是什么?二、使用步骤1.集成SDK2. 初始化3. 发送事件和设置账号id4. 验证发送事件是否成功 小结 前言 一个成熟的App必然不可缺少对…

算法学习系列(十四):并查集

目录 引言一、并查集概念二、并查集模板三、例题1.合并集合2.连通块中点的数量 引言 这个并查集以代码短小并且精悍的特点,在算法竞赛和面试中特别容易出,对于面试而言,肯定不会让你去写一两百行的代码,一般出的都是那种比较短的…

服务器的TCP连接限制:如何优化并提高服务器的并发连接数?

🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注),发送【资料】可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景、中间件系列…

mysql基础-表操作

环境: 管理工具:Navicat 数据库版本:5.7.37 mysql的版本,我们可以通过函数,version()进行查看,本次使用的版本如下: 目录 1.管理工具 1.1创建表 1.2.修改表名 1.3.复制表 1.4.删除表 2…

python开发的app有哪些,python如何开发小软件

这篇文章主要介绍了python开发的app有哪些,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 Python 无处不在,可以说是现代的 C 编程语言,你可以在任何地…

54.网游逆向分析与插件开发-游戏增加自动化助手接口-项目需求与需求拆解

内容来源于:易道云信息技术研究院VIP课 项目需求: 为游戏增加VIP功能-自动化助手。自动化助手做的是首先要说一下背景,对于授权游戏来讲它往往年限都比较老,老游戏和新游戏设计理念是不同的,比如说老游戏基本上在10年…

easyx的窗口函数

文章目录 前言一、EasyX的颜色二、EasyX的坐标和设备1,EasyX的坐标2,EasyX的设备 三、窗口函数1,初始化窗口函数2,关闭绘图窗口3,设置窗口背景板颜色4,清空绘图设备 前言 easyx是针对c的图形库,…