5.10. 在 NFS 服务器中启用 RDMA 的 NFS
远程直接内存访问(RDMA)是一种协议,它允许客户端系统将数据直接从存储服务器的内存传输到其自身的内存。这提高了存储吞吐量,降低服务器和客户端之间的数据传输延迟,并减少两端的 CPU 负载。如果 NFS 服务器和客户端都通过 RDMA 连接,客户端可以使用 NFSoRDMA 来挂载导出的目录。
先决条件
- NFS 服务正在运行并配置了
- 在服务器中安装 InfiniBand 或 RDMA over Converged Ethernet (RoCE)设备。
- IP over InfiniBand (IPoIB)在服务器上被配置,InfiniBand 设备分配了一个 IP 地址。
流程
安装
rdma-core
软件包:# dnf install rdma-core
如果已经安装了软件包,请验证
/etc/rdma/modules/rdma.conf
文件中的xprtrdma
和svcrdma
模块是否已取消注释:# NFS over RDMA client support xprtrdma # NFS over RDMA server support svcrdma
可选:默认情况下,通过 RDMA 的 NFS 使用端口 20049。如果要使用其他端口,请在
/etc/nfs.conf
文件的[nfsd]
部分中设置rdma-port
设置:rdma-port=<port>
在
firewalld
中打开 NFSoRDMA 端口:# firewall-cmd --permanent --add-port={20049/tcp,20049/udp} # firewall-cmd --reload
如果您设置了与 20049 不同的端口,请调整端口号。
重启
nfs-server
服务:# systemctl restart nfs-server
验证
在带有 InfiniBand 硬件的客户端中执行以下步骤:
安装以下软件包:
# dnf install nfs-utils rdma-core
通过 RDMA 挂载导出的 NFS 共享:
# mount -o rdma server.example.com:/nfs/projects/ /mnt/
如果您设置了默认端口号(20049),请将 port
= <port_number>
传给命令:# mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/
验证共享是否已使用
rdma
选项挂载:# mount | grep "/mnt" server.example.com:/nfs/projects/ on /mnt type nfs (...,proto=rdma,...)