What is this?
Server
安装
首先安装nvmetcli这个软件包,然后加载模块:
modprobe nvmet
systemd服务为nvmet.service, 使用如下命令开启并设置开机自启:
systemctl enable --now nvmet.service
配置
nvmetcli包提供了一个很方便的nvmetcli程序,可以用cd,ls等命令来进行配置
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. 进入该nqn的namespace创建命名空间并设置后端块设备:
/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
《 “NVMe over Fabrics – 拯救你的旋转废铁主机” 》 有 3 条评论
太强了
喵喵咕噜咕噜
tqlxkm