我在两台运行 CentOS 6.9 的服务器上分别安装了两个双端口 FDR Infiniband VPI HBA。
server1>lspci
03:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]
server2>lspci
81:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]
我想用它们在这两台机器之间建立高速 NFSv4(可能通过 RDMA)连接,通过 Infiniband(2 米 56 Gbps QSFP+ 无源电缆)直接连接。我在两台机器上都做了以下操作(替换下面的正确 PCI 地址)。
yum -y install rdma infiniband-diags
chkconfig rdma on
service rdma start
printf "0000:XX:00.0 eth eth\n" >> /etc/rdma/mlx4.conf
echo eth > /sys/bus/pci/devices/0000:XX:00.0/mlx4_port1
echo eth > /sys/bus/pci/devices/0000:XX:00.0/mlx4_port2
modprobe -r mlx4_core
modprobe mlx4_core
modprobe ib_umad
cp -f ifcfg-eth4 /etc/sysconfig/network-scripts/ifcfg-eth4
cp -f ifcfg-eth5 /etc/sysconfig/network-scripts/ifcfg-eth5
chmod 644 /etc/sysconfig/network-scripts/ifcfg-*
chcon system_u:object_r:net_conf_t:s0 /etc/sysconfig/network-scripts/ifcfg-*
ifup eth4
ifup eth5
示例网络配置文件(例如 ifcfg-eth4)如下所示,用适当的 MAC 和 IP 地址替换每个端口:
DEVICE=eth4
HWADDR=XX:XX:XX:XX:XX:XX
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
USERCTL=no
NETWORK=10.72.1.0
NETMASK=255.255.255.0
IPADDR=XXX.XXX.XXX.XXX
还有另外三个类似的文件,每台机器上两个,并且 ifup 和 ifdown 在两台机器的两个接口上都有效。此外,存在路由
server1>ip route show
10.72.1.0/24 dev eth4 proto kernel scope link src 10.72.1.3
10.72.1.0/24 dev eth5 proto kernel scope link src 10.72.1.4
...
这就是事情开始变得糟糕的地方。
CA 'mlx4_0'
CA type: MT4099
Number of ports: 2
Firmware version: 2.11.500
Hardware version: 0
Node GUID: 0xf45...
System image GUID: 0xf45...
Port 1:
State: Down
Physical state: Disabled
Rate: 10
Base lid: 0
LMC: 0
SM lid: 0
Capability mask: 0x04010000
Port GUID: 0xf6...
Link layer: Ethernet
Port 2:
State: Down
Physical state: Disabled
Rate: 40
Base lid: 0
LMC: 0
SM lid: 0
Capability mask: 0x04010000
Port GUID: 0xf6...
Link layer: Ethernet
两台机器都显示相同的信息:“状态:关闭”和“物理状态:已禁用”。HBA 本身的状态灯是暗的。我尝试了两台机器之间的所有连接组合,包括将每张卡连接到自身。
我已经阅读了有关需要的信息opensm
,并尝试安装它,但尽管配置看似正确,却失败了:
May 09 20:18:14 888369 [A8697700] 0x01 -> osm_vendor_bind: ERR 5426: Unable to register class 129 version 1
May 09 20:18:14 888418 [A8697700] 0x01 -> osm_sm_mad_ctrl_bind: ERR 3118: Vendor specific bind failed
May 09 20:18:14 888436 [A8697700] 0x01 -> osm_sm_bind: ERR 2E10: SM MAD Controller bind failed (IB_ERROR)
此外,我读到一些人说opensm
这种类型的配置是不需要的。
此时,我不知道这是否意味着一张或两张卡都坏了,电缆坏了,我的配置有某个方面有问题,还是其他原因。我试过 yum -y groupinstall "Infiniband Support",但这没有帮助,随后我删除了多余的软件包。
我没有做的是重新启动机器,因为这目前不是一个选项,但我认为顺序modprobe -r; modprobe
是等效的,并且与模块安装相关的配置的所有方面似乎都正常工作。
我将非常感激您的想法!
答案1
首先,opensm 仅用于 Infiniband (IB)。您已将卡配置为以太网模式,因此不需要 opensm。
基本配置看起来还不错。我猜想当你添加 mlx4_core 时,mlx4_en 也同时被插入了?lsmod | grep mlx
但是,我怀疑问题出在电缆上。它们是 Mellanox 品牌的 FDR 还是以太网电缆?如果不是,它们可能被卡忽略,因为在以太网模式下不受支持。查找每个部件的型号以验证兼容性。VPI 卡的电缆在以太网模式下无法工作,这不止一次让我感到头疼。
另一个快速测试是移除模块,退出“eth”模式设置,然后仅使用 IB 电缆背对背插入两个节点,然后重新插入模块。IB 通常在非最佳条件下链接得很好。ibstat 将显示除关闭之外的物理状态 - 它要么部分链接(没有 opensm),要么完全链接;如果电缆是非 FDR 电缆,它仍将以 QDR 或 DDR 链接。如果您至少可以让 IB 工作,您就知道这些卡是好的。您还可以使用 IPoIB(接口 ib0 和 ib1 - 使用“连接模式”),尽管以太网的性能会受到影响。如果您只使用 NFS,那么您不妨继续使用 IB 模式。启用 NFS over RDMA(不要忘记更改您的客户端安装以使用它),并在 56Gbps 链接上享受近线速 NFS 的好处。