全部文档
当前文档

共搜索到 0 条结果

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

Nvme PR锁命令说明及示例

最近更新时间:2026-06-18 14:21:04

Nvme PR锁命令说明及示例

1. 展示锁信息

nvme resv-report /dev/nvme0n1 -c 1  

字段

含义解释

-c/--cdw11

1

-c 1 为必填项,否则会导致输出错误

指定是否获取详细锁信息,值为1时输出当前所有注册锁和预留锁的完整状态

gen

2

预留的世代编号。这是一个计数器,每次预留状态发生变化(如注册、抢占)时都会增加,用于帮助客户端判断状态是否有更新。

rtype

0

预留类型。这是最关键的字段,0 表示 “没有活跃的预留”,即没有任何主机持有该盘的写入或独占锁。

regctl

0

当前注册的控制器数量。0 表示当前没有任何主机(控制器)在该盘上注册过预留密钥。

ptpls

1

持久预留(Persistent Reservation)通过电源状态丢失(Power State Lost)的持久化能力标志。1 通常表示该功能支持或已启用,确保预留状态在重启后仍能恢复(如果配置了持久预留)。

2. 注册锁

nvme resv-register /dev/nvme0n1 -k 0xA -r 0

字段

当前值

含义解释

-k/--nrkey

0xA

新锁名,自定义

-r/--rrega

0

注册锁

regctl

1

有 1 个主机(控制器)注册了密钥,说明已经有主机执行过 nvme resv-register 操作。

rtype

0

没有活跃的预留。这表示虽然注册了密钥,但没有任何主机通过 nvme resv-acquire 真正获取该盘的写入或独占权限。

rkey

a00000000000000

这是注册时使用的预留密钥(Registration Key)。后续抢占(Preempt)或注册(Register)时可能需要提供此密钥。

hostid

34356362333330653930356161313636

这是注册主机的唯一标识符(Host Identifier),用于在系统中唯一识别该主机。

3. 替换锁

nvme resv-register /dev/nvme0n1 -c 0xA -k 0xB -r 2

字段

当前值

含义解释

-c/--crkey

0xA

当前锁名

-k/--nrkey

0xB

新锁名,自定义

-r/--rrega

2

替换锁

4. 注销锁

nvme resv-register /dev/nvme0n1 -c 0xB -r 1

字段

当前值

含义解释

-c/--crkey

0xA

当前锁名

-k/--nrkey

0xB

新锁名,自定义

-r/--rrega

2

注销锁

5. 获取独占写锁

前提:已为/dev/nvme0n1注册了锁0xA,无其它设备获取了该锁

nvme resv-acquire /dev/nvme0n1 -c 0xA -t 1 -a 0

字段

当前值

含义解释

-t/--rtype

1

锁类型(目前只支持这一种):

1:Write Exclusive 独占写锁

-a/--racqa

0

普通获取

6. 抢占独占写锁

6.1 先在vm2上注册锁0xC

6.2 在vm2上执行抢占命令,抢占vm1中的锁

nvme resv-acquire /dev/nvme0n1 -c 0xC -p 0xA -t 1 -a 1

字段

当前值

含义解释

-p/--prkey

0xA

被抢占的已有锁的锁名

-t/--rtype

1

锁类型(目前只支持这一种):

1:Write Exclusive 独占写锁通获取

-a/--racqa

1

抢占已有锁,1或2都可以,都表示抢占

2

注意看rcsts的变化

6.3 vm1上的io会因为锁被抢占后被中止,并且由于没有写权限,后续发起写操作都会直接报错。

fio -direct=1 -iodepth=1 -rw=randrw -ioengine=libaio -bs=4k -numjobs=1 -group_reporting -filename=/dev/nvme0n1 -name=Test_4K_rwl

此时,vm2抢到锁后可以正常读写io:

7. 释放锁

前提:已在vm2上为/dev/nvme0n1获取了锁0xC

nvme resv-release /dev/nvme0n1 -c 0xC -t 1 -a 0

释放前

释放后

字段

当前值

含义解释

-a/--rrela

0

普通释放当前锁

释放前:仅vm1可以正常读写io;释放后:vm1、vm2都可以正常读写io

8. 清理锁

nvme resv-release /dev/nvme0n1 -c 0xA -t 1 -a 1

字段

当前值

含义解释

-a/--rrela

1

清空设备所有注册锁和预留信息

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈