希望有人可以就我做错或遗漏的事情提供帮助:
- 拥有 3 台测试服务器(主机名 node1..3),每台服务器均配有 Mellanox MT28908 系列 infiniband 卡,型号 CX653105A
- 拥有 Mellanox HDR infiniband 交换机 QM8700。
- 在运行 RHEL 7.9、内核 3.10.0-1160.49.1.el7.x86_64 的每台服务器上
- 正在引用 Access_Redhat 存储管理指南,8.6配置 NFS 服务器。
systemctl disable firewalld; service firewalld stop
- selinux 在
/etc/selinux/config
. - 已
MLNX_OFED_LINUX-5.4-3.1.0.0-rhel7.9-x86_64.iso
(362Mb) 下载自https://www.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed;并安装在每个node1、node2、node3上。mount -o loop MLNX_OFED_LINUX-5.4-3.1.0.0-rhel7.9-x86_64.iso /mlx;
- 跑步
/mlx/mlnxofedinstall
- 让它做它的事情,对所有提示都是肯定的,它会卸载它说不兼容的现有 rhel ofed 东西。
chkconfig opensm on
以及openibd.service=enabled
所有 3 个节点上。- 重新启动
ib0
在系统工具-设置-网络下通过gui配置网络。- ib0 传输模式 = 数据报; MTU = 自动;手动设置ipv4地址; ipv6=忽略。
- 手动编辑
/etc/hosts
以添加我的3个测试服务器的node1、node2、node3的IP地址:172.16.2.{1,2,3} - 该 infiniband 网络是这 3 台服务器和交换机之间物理连接的唯一网络。
- 我可以通过 infiniband 网络成功 ping 和 ssh 或 scp。
/etc/sysconfig/nfs
在所有节点上都相同,下面列出了该文件。- 在节点 1 上 :
/etc/exports
:/scratch *(rw,async,no_root_squash)
和nfs.service=enabled
- 节点2或节点3:
mount node1:/scratch /scratch
有效 - 节点2或节点3:
mount -o rdma,port=20049 node1:/scratch /scratch
结果mount.nfs:挂载系统调用失败 - 有一个
/etc/rdma/mlx4.conf
文件,我没有修改过。 - 没有,
/etc/rdma/rmda.conf
但有一个/etc/rdma/modules/rdma.conf
。 - 我做到了
ln -s /etc/rdma/modules/rdma.conf /etc/rdma/rdma.conf
;不确定是否需要。 - 我取消了其中所有行(服务)的注释;语法似乎不同,没有“LOAD =”;如果需要的话可以发布这个文件。
/var/log/messages
尝试后mount -o proto=rdma
,不确定这是否重要:Request for unknown module key Mellanox Technologies signing key <40 hex chars> err -11
我尝试将传输协议设置为连接的在两个节点上的“系统-工具-设置-网络”中,但关闭/打开变为关闭并且不会保持打开状态,并且ip a
显示 ib0 已链接但没有 IP 地址,然后两者之间没有网络连接。
问题:
- 要通过 RDMA 实现 NFS,传输模式应设置为 DATAGRAM 还是 CONNECTED?
- 为一个基本的 传输控制协议通过 infiniband 的网络,就像我可以开始工作一样,我上面描述的是否正确?我错过了什么或做错了什么吗?关于
opensm
在每个服务器上运行是正确的吗? mount -o rdma node1:/scratch /scratch
如果其他一切都配置正确以使 NFS=RDMA 正常工作,那么这就是所需要的一切- 如果/当 NFS+RDMA 实际工作时,我的小网络之间是否仍然存在通用 tcp 类型网络,我可以在它们之间进行 ssh 或 scp?
- A
systemctl list-unit-files | grep nfs
显示 13 个不同的nfs-xxx.service
。是否需要启用其他任何(blkmap、config、idmap、lock、mountd、rquotad、server、lock)? - selinux=enforcing 会有问题吗?
--
My /etc/sysconfig/nfs file on each server
#LOCKDARG=
#RPCNFSDCOUNT=16
#NFSD_V4_GRACE=90
#NFSD_V4_LEASE=90
RPCMOUNTDOPTS=""
STATDARG=""
#STATD_HA_CALLOUT="/usr/local/bin/foo"
SMNOTIFYARGS=""
RPCIDMAPDARGS=""
RPCGSSDARGS=""
GSS_USE_PROXY="yes"
BLKMAPDARGS=""
RPCNFSDARGS="--rdma=20049"
STATD_PORT=4001
STATD_OUTGOING_PORT=4002
MOUNTD_PORT=4003
LOCKD_TCPPORT=4004
LOCKD_UDPPORT=4004
答案1
我逐渐了解到的是,两者之间似乎存在不相容性。MLNX_OFED_LINUX-5.4-3.1.0.0-rhel7.9-x86_64.iso 和systemctl rdma.service
。安装 MLNX iso 时,当它执行其操作并安装其执行的所有操作时,它会删除并用它自己的版本替换 redhat 版本rdma-core-22.4-6.el7_9.x86_64
,因此不再有rdma.service
.
我的 redhat 服务票证的帮助让我走上了确保已启用并运行的道路rdma.service
,这并不是因为我走的是 MLNX iso 安装的道路。
我从 DVD 重新安装了 RHEL 7.9,选择Infiniband Support
软件包,我的 infiniband 网络在重新启动后基本上开始工作...opensm
安装并运行。
从那里开始,问题是要确保/etc/rdma/rdma.conf
所有服务都是“是”,尤其是SVCRDMA_LOAD
。被TECH_PREVIEW_LOAD
保留为否。
在防火墙中为 nfs4 打开端口 2049,为 rdma 打开端口 20049。
编辑/etc/sysconfig/nfs
并仅更改
RPCNFSARGS='--rdma=20049'
nfs-client 上的 mount 命令只是
mount -o rdma,port=20049 server:/scratch /scratch
我还观察到使用 MLNX iso 来让 infiniband 工作的服务器与那些不使用 MLNX iso 并使用 redhat infiniband 软件包的服务器之间存在不兼容性和失败的 nfs 安装。所以看来要么到处使用 MLNX,要么根本不使用,我不知道。我只会使用 MLNX iso 来允许在已安装的 inifiniband 卡上更新固件,并对它想要安装的其他所有内容说不。我想我遇到过一些 MLNX 文档,说它的工作方式有点不同,并且它使用 openibd 或其他东西,但事实证明它很难工作。
我只能让 nfs v4.1 工作; /etc/nfs.conf 提到 nfs4.2 可用,redhat 甚至有关于如何启用它的文章,但我从未成功过。