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

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

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 命令的基本用法三、远程关机与重启四、实际应用