文章

NVMe-cli基本用法

ubuntu 下 NVMe-cli基本用法

NVMe-cli基本用法

参考资料:https://narasimhan-v.github.io/2020/06/12/Managing-NVMe-Namespaces.html

查看nvme设备容量:

1
nvme id-ctrl /dev/nvme0 | grep -i tnvmcap

查看nvme设备容量 表示容量为1.6TB

查找 NVMe 设备支持的命名空间数量:

1
nvme id-ctrl /dev/nvme0 | grep ^nn

命名空间 表示支持 32 个命名空间

查看设备块大小:

1
nvme id-ns /dev/nvme0n1 | grep "in use"

块大小 表示块大小为$2^9=512$字节

计算最大块数量:

1
expr 1600321314816 / 512

计算最大块数量 最大块数量为: 3125627568

查看lba支持:

1
nvme id-ns /dev/nvme0n1 | grep "lbaf"

lba查询例子

nlbaf : 4 表示支持 0,1,2,3,4 五种lba格式
lbaf 0 : ms:0 lbads:9 rp:0x1 (in use)
lbaf 1 : ms:8 lbads:9 rp:0x3
lbaf 2 : ms:0 lbads:12 rp:0
lbaf 3 : ms:8 lbads:12 rp:0x2
lbaf 4 : ms:64 lbads:12 rp:0x3
中的ms表示meta data size,单位是字节,存储的元数据主要是校验信息
lbads表示lba data size,$2^{lbads}$是每个lba的字节数

管理命名空间:

查看nvme设备控制器ID:

1
nvme id-ctrl /dev/nvme0 | grep ^cntlid

设备控制器ID cntlid : 0x41

列出现有的命名空间:

1
nvme list-ns /dev/nvme0

删除命名空间:

1
nvme delete-ns /dev/nvme0 -n 1

-n 1 表示删除第一个命名空间

创建命名空间: 首先确定命名空间的大小,前面计算的最大块数量为 3125627568,假设要创建两个一样大的命名空间,那么每个命名空间的块数量为 1562813784,那么创建命名空间的命令如下:

1
nvme create-ns /dev/nvme0 --nsze=1562813784 --ncap=1562813784 --flbas=0 -dps=0

注意:ncap小于等于nsze,一般设置为相等

通过控制器 ID 将刚刚创建的命名空间附加到控制器:

1
nvme attach-ns /dev/nvme0 -n 1 -c 0x41

查看创建命名空间后的设备信息:

1
nvme list

设备信息 原本总空间为1.6TB,现在存在一个容量为800GB的命名空间

本文由作者按照 CC BY 4.0 进行授权