NVME 类IO命令

2024-08-21 02:44
文章标签 命令 io nvme

本文主要是介绍NVME 类IO命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、reservation Acquire command

该命令用于在一个NS上获取一个“预定”,抢占一个“预定”并持有NS,并终止持有NS的“预定”。

该命令使用CDW10和Reservation Acquire structure,使用PRP1和PRP2(或者sgl)

携带的信息CDW10 

RTYPE(除去预定可xx,其他都被禁止) 

另外一个信息是Reservation Acquire structure

 Reservation Acquire structure携带的信息是与主机关联的当前“预定”的key值和抢占“预定”key值(这个有限制,必须Reservation Acquire Action是001或者010b)

当命令完成,返回CQ(如发生异常,状态码参考IO命令)。

二、 Reservation Register structure

 该命令用于在一个NS上注册或者注销,取代一个“预定”。

该命令使用CDW10和Reservation Register structure,使用PRP1和PRP2(或者sgl)

CDW10信息如下: 

 

该命令重点关注Reservation Register Action,定义了是哪一个用途的Reservation key

数据结构如下: 

 

定义了当前的Reservation key和新的Reservation key。

 当命令完成,返回CQ(如发生异常,状态码参考IO命令)。

三、Reservation Release command

该命令用于在一个已经预定的NS上清除或者释放。

该命令使用CDW10和Reservation Release structure,使用PRP1和PRP2(或者sgl)

 

重点关注 Reservation Release Action,包括clear和release。

数据结构如下:

 

  当命令完成,返回CQ(如发生异常,状态码参考IO命令)。

 四、Reservation Report command

Reservation Report命令向内存返回一个Reservation Status数据结构,描述NS的Registration和reservation的状态。

Reservation status Structure的size有一个功能,可以反映与主机关联的nvme subsystem的控制器数量。主机是NS注册Reservation。

主机identitfier可选择128bit或者64bit,取决于是一个Registered Controller data structure ,还是一个 Registered Controller extended data structure。

如果是64bit的host identitifier,但是CDW11设置为1,或者是128bit的host identitifier,但是CDW11设置为0,都需报错Host Identifier Inconsistent Format.;

 

 

 

总结

Reservation用于共享NS的管理,在一些多host的场景,如果同时对一个NS进行操作,会造成未知错误,因此需要用一个权限进行管理。

根据reservation type,会有不同权限,如下图

0-保留  清空所有的reservation,包括holder和registant

1-2h 除去 holder reservation,其他host不能访问

3-4h 除去holder和一个registration,其他均不能访问

5-6 除去holder和registration,其他均不能访问

(可以理解 0是无holder,1-4是一个holder ,4-6是多个holder)

当注册一个reservation,需要命令

nvme resv-register /dev/nvmex 

这篇关于NVME 类IO命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091895

相关文章

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作