NVMe over Fabrics – 拯救你的旋转废铁主机


What is this?

-> NVMe over Fabrics

Server

安装

首先安装nvmetcli这个软件包,然后加载模块:

modprobe nvmet

systemd服务为nvmet.service, 使用如下命令开启并设置开机自启:

systemctl enable --now nvmet.service

配置

nvmetcli包提供了一个很方便的nvmetcli程序,可以用cdls等命令来进行配置

1. 运行 nvmetcli进入配置:

[I] xkm@Project-H ~> sudo nvmetcli
/> 

2. 新建一个提供服务的"设备":

/> cd subsystems/
/subsystems> create nqn.nvme-of.115lab.com:PHLJ12345678910GN

这里的nqn可以自定义,比如 nqn.xkm.be:TIHSISMYBIGNVME

通过ls可以看到创建的设备:

/subsystems> ls
o- subsystems .............................................................................................. [...]
  o- nqn.nvme-of.115lab.com:PHLJ12345678910GN ............ [version=2.1, allow_any=0, serial=7b666f5b46f17377b2aa]
    o- allowed_hosts ....................................................................................... [...]
    o- namespaces .......................................................................................... [...]

3. 进入该nqnnamespace创建命名空间并设置后端块设备:

/subsystems> cd nqn.nvme-of.115lab.com:PHLJ12345678910GN/namespaces 
/subsystems/n...GN/namespaces> create 1
/subsystems/n...GN/namespaces> cd 1
/subsystems/n.../namespaces/1> set device path=/tmp/8GB.block
Parameter path is now '/tmp/8GB.block'.
/subsystems/n.../namespaces/1> enable
The Namespace has been enabled.

这里我挂载了个8GB的空文件用作演示

4. 进入/ports配置对外暴露的端口

/subsystems/n.../namespaces/1> cd /ports
/ports> create 2
/ports> cd 2
/ports/2> set addr trtype=tcp traddr=172.16.67.181 trsvcid=4421 adrfam=ipv4

这里用ipv4协议在192.168.0.5上监听4421端口 (注意标准应该使用4420端口)

5. 把我们创建的设备通过这个port进行共享

/ports/2> cd subsystems 
/ports/2/subsystems> create nqn.nvme-of.115lab.com:PHLJ12345678910GN

6. 将客户端设备加入允许访问列表

/ports/2/subsystems> cd /hosts
/hosts> create nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0059-5410-8031-123456789101
/hosts> cd /subsystems/nqn.nvme-of.115lab.com:PHLJ12345678910GN/allowed_hosts 
/subsystems/n...allowed_hosts> create nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0059-5410-8031-123456789101

这里的nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0059-5410-8031-123456789101在客户端的/etc/nvme/hostnqn(这个文件应该是在安装nvme-cli时自动生成的)

注意这个文件是所有用户可见的,也可以很容易被伪造。更安全的验证方式请见参考链接

7. 保存并退出

/subsystems/n...allowed_hosts> saveconfig 
/subsystems/n...allowed_hosts> exit
[I] xkm@Project-H ~> 

Client

安装

安装软件包nvme-cli,并加载模块:

modprobe nvme-fabrics

连接

[I] xkm@localhost ~> sudo nvme connect --transport=tcp --traddr=172.16.67.181 --trsvcid=4421 --nqn=nqn.nvme-of.115lab.com:PHLJ12345678910GN
connecting to device: nvme1

然后就可以使用这个nvme了

[I] xkm@localhost ~ [1]> sudo mkfs.btrfs /dev/nvme1n1
btrfs-progs v6.17.1
See https://btrfs.readthedocs.io for more information.

Performing full device TRIM /dev/nvme1n1 (8.00GiB) ...
Label:              (null)
UUID:               1404d984-56ad-4b19-892a-458e77b3f3f9
Node size:          16384
Sector size:        4096        (CPU page size: 4096)
Filesystem size:    8.00GiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP             256.00MiB
  System:           DUP               8.00MiB
SSD detected:       yes
Zoned device:       no
Features:           extref, skinny-metadata, no-holes, free-space-tree
Checksum:           crc32c
Number of devices:  1
Devices:
   ID        SIZE  PATH        
    1     8.00GiB  /dev/nvme1n1

参考:

ArchWiki


《 “NVMe over Fabrics – 拯救你的旋转废铁主机” 》 有 3 条评论

回复 神铋人 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注