Infiniband RHEL7、NFS RDMA 设置和帮助

Infiniband RHEL7、NFS RDMA 设置和帮助

希望有人可以就我做错或遗漏的事情提供帮助:

  • 拥有 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个测试服务器的nod​​e1、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 地址,然后两者之间没有网络连接。

问题:

  1. 要通过 RDMA 实现 NFS,传输模式应设置为 DATAGRAM 还是 CONNECTED?
  2. 为一个基本的 传输控制协议通过 infiniband 的网络,就像我可以开始工作一样,我上面描述的是否正确?我错过了什么或做错了什么吗?关于opensm在每个服务器上运行是正确的吗?
  3. mount -o rdma node1:/scratch /scratch如果其他一切都配置正确以使 NFS=RDMA 正常工作,那么这就是所需要的一切
  4. 如果/当 NFS+RDMA 实际工作时,我的小网络之间是否仍然存在通用 tcp 类型网络,我可以在它们之间进行 ssh 或 scp?
  5. Asystemctl list-unit-files | grep nfs显示 13 个不同的nfs-xxx.service。是否需要启用其他任何(blkmap、config、idmap、lock、mountd、rquotad、server、lock)?
  6. 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.isosystemctl 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 甚至有关于如何启用它的文章,但我从未成功过。

相关内容