最近将管理实验室的服务器,希望从服务器存储节点到计算节点之间采用IB(infiniband)通信。购置了IB交换机(型号:MSX6005F-1BFS)、IB网卡(MCX353A-FCBT)、以及IB铜线线缆。他们分别长这个样子
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
(图片来源于网络)

IB网卡驱动安装

硬件步骤

1、将IB网卡安装到服务器节点上,使用IB铜线线缆连接IB交换机与服务器节点上的IB网卡。连线完毕后,IB网卡是这个样子,其中两个灯都是不亮的,因为驱动还没有安装,服务也没有启动
在这里插入图片描述

软件步骤(这里以Ubuntu为例)

第一步:查看Ubuntu版本与内核版本

cat /etc/issue

这说明系统的版本为Ubuntu 18.04.4 LTS \n \l

uname -a

输出如下:

Linux gpu158 5.4.0-42-generic #46~18.04.1-Ubuntu SMP Fri Jul 10 07:21:24 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

这说明内核版本为5.4.0-42-generic

第二步:确定插在服务器节点上的IB网卡的信息以及是否插入成功

lspci |grep Mell

如果返回如下信息,说明IB网卡插入成功:

82:00.0 Network controller: Mellanox Technologies MT27500 Family [ConnectX-3]

如果没有返回,则说明网卡未成功插入,可能需要重新插入网卡。此外,返回的信息中,ConnectX-3说明了IB网卡的信息。特别说明,ConnectX-3、ConnectX-4、ConnectX-5、ConnectX-6的驱动有所不同,例如,ConnectX-3可能不支持最新版本的驱动,因此需要知道该信息!

第三步:结合Linux版本、IB网卡版本,选择合适的IB网卡驱动,网站如下:
官网推荐的版本号与系统、网卡型号的关系如下:https://cn.mellanox.com/support/mlnx-ofed-matrix?mtag=linux_sw_drivers

https://cn.mellanox.com/products/infiniband-drivers/linux/mlnx_ofed
在这里插入图片描述
点击Archive Versions即可查看历史版本,选择合适的版本,例如4.7-1.0.0.1,如下图所示
在这里插入图片描述
点击最右边的链接【注意:该链接还不是下载链接,不能直接复制该链接使用wget命令下载】。
例如下载 MLNX_OFED_LINUX-4.7-1.0.0.1-ubuntu16.04-x86_64.tgz

页面如下:
在这里插入图片描述
下拉至最后,勾选I Have Read the Above End User License Agreement.然后点击按钮I Accept在这里插入图片描述
弹出的为下载链接,如下所示:
http://content.mellanox.com/ofed/MLNX_OFED-4.7-1.0.0.1/MLNX_OFED_LINUX-4.7-1.0.0.1-ubuntu16.04-x86_64.tgz

第四步:下载刚刚选好的驱动:

wget http://content.mellanox.com/ofed/MLNX_OFED-4.7-1.0.0.1/MLNX_OFED_LINUX-4.7-1.0.0.1-ubuntu16.04-x86_64.tgz

然后解压刚刚下载的压缩包:

tar -zxvf MLNX_OFED_LINUX-4.7-1.0.0.1-ubuntu16.04-x86_64.tgz ./

第五步:安装IB驱动:
切换到安装文件夹

cd MLNX_OFED_LINUX-4.7-1.0.0.1-ubuntu16.04-x86_64

运行安装命令:

./mlnxofedinstall --force

安装成功后,会提示:

Installation passed successfully
To load the new driver, run:
/etc/init.d/openibd restart      # 系统自动提示你,到了重启服务的步骤了

第六步:启动服务
运行以下命令:

/etc/init.d/openibd restart
/etc/init.d/opensmd restart

重启服务器:

reboot

State: Initializing解决办法

检查IB网卡状态:

ibstat

如果出现下图所示的红框状态:

        State: Initializing
		Physical state: LinkUp

在这里插入图片描述
则运行以下命令即可恢复正常

systemctl restart opensm

或者命令:

sudo systemctl start opensmd 
sudo systemctl enable opensmd

再次运行IB网卡查看命令

ibstat

在这里插入图片描述
这说明驱动安装正常,网卡与IB交换机连接正常

State: Down解决办法

总体思路:把IB网卡默认的Ethernet模式切换为Infiniband
如果ibstat返回的结果为:

CA 'mlx4_0'
	CA type: MT4099
	Number of ports: 1
	Firmware version: 2.42.5000
	Hardware version: 1
	Node GUID: 0xxxxxx
	System image GUID: 0xxxxxx
	Port 1:
		State: Down
		Physical state: LinkUp
		Rate: 56
		Base lid: 11
		LMC: 0
		SM lid: 6
		Capability mask: 0xxxxxx
		Port GUID: 0xxxxxxxx
		Link layer: Ethernet

启动mst工具:

systemctl start mst
systemctl status mst

返回下列信息说明启动成功:

● mst.service - LSB: mst
   Loaded: loaded (/etc/init.d/mst; bad; vendor preset: enabled)
   Active: active (exited) since 五 2021-01-08 17:33:15 CST; 12s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 25814 ExecStart=/etc/init.d/mst start (code=exited, status=0/SUCCESS)

1月 08 17:33:13 amax143 systemd[1]: Starting LSB: mst...
1月 08 17:33:13 amax143 mst[25814]: Starting MST (Mellanox Software Tools) driver set
1月 08 17:33:13 amax143 mst[25814]: Loading MST PCI module - Success
1月 08 17:33:13 amax143 mst[25814]: Loading MST PCI configuration module - Success
1月 08 17:33:13 amax143 mst[25814]: Create devices
1月 08 17:33:15 amax143 systemd[1]: Started LSB: mst.

通过以下命令查看自己的MST设备,也就是IB网卡的位置:

mst status
MST modules:
------------
    MST PCI module loaded
    MST PCI configuration module loaded

MST devices:
------------
/dev/mst/mt4099_pciconf0         - PCI configuration cycles access.
                                   domain:bus:dev.fn=0000:82:00.0 addr.reg=88 data.reg=92 cr_bar.gw_offset=-1
                                   Chip revision is: 01
/dev/mst/mt4099_pci_cr0          - PCI direct access.
                                   domain:bus:dev.fn=0000:82:00.0 bar=0xfb400000 size=0x100000
                                   Chip revision is: 01

其中,/dev/mst/mt4099_pciconf0表示IB网卡。

通过以下命令即可修改网卡的模式(把/dev/mst/mt4099_pciconf0改为你通过mst status查询得到的设备位置):

  • 双口网卡
mlxconfig -d /dev/mst/mt4099_pciconf0 set LINK_TYPE_P1=1 LINK_TYPE_P2=1
  • 单口网卡
mlxconfig -d /dev/mst/mt4099_pciconf0 set LINK_TYPE_P1=1

备注:1:Infiniband模式;2:Ethernet模式

然后重启设备使得修改生效:

sudo reboot

重启后运行ibstat,返回以下结果,说明修改成功:

CA 'mlx4_0'
	CA type: MT4099
	Number of ports: 1
	Firmware version: 2.42.5000
	Hardware version: 1
	Node GUID: 0xxxxxx
	System image GUID: 0xxxxxx
	Port 1:
		State: Active
		Physical state: LinkUp
		Rate: 56
		Base lid: 11
		LMC: 0
		SM lid: 6
		Capability mask: 0xxxxx
		Port GUID: 0xxxxxx
		Link layer: InfiniBand

IP配置

不同版本的Ubuntu可能有所区别,以下为Ubuntu16.04或者18.04下的网络配置
首先,使用命令查看是否存在ib0网卡:

ifconfig ib0

返回的信息第一行为:

ib0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 2044

这说明存在ib0网卡,可以进行下一步

Ubuntu16.04修改网络配置

sudo vim  /etc/network/interfaces

例如:
在文件末尾指定ib0的address、netmask

auto ib0
iface ib0 inet static
address 172.1.1.17
netmask 255.255.255.0

执行以下命令更新网络配置:

service networking restart

部分系统可能需要重启才生效:

reboot

最后,运行以下命令查看IP设置结果:

ip a

Ubuntu18.04修改网络配置

进入目录/etc/netplan/查看网络配置文件

cd  /etc/netplan/
ls

例如我的网络配置文件为01-network-manager-all.yaml,打开该配置文件

sudo vim  /etc/netplan/****.yaml

修改如下,需要注意的是renderer需要设为networkd,否则可能导致网络访问出现问题:

network:
  version: 2
  renderer: networkd
  ethernets:
          enp129s0f0:
                       dhcp4: no
                       dhcp6: no
                       addresses: [xxx.xx.xx.xxx/24]
                       gateway4: xxx.xx.xx.xxx
                       nameservers:
                               addresses: [xxx.xx.xx.xx, xxx.xxx.xx.xx]

          ib0:
                       dhcp4: no
                       dhcp6: no
                       addresses: [10.0.0.142/24]

然后应用该配置文件:

sudo netplan apply

也可以运行该命令查看执行情况:

sudo netplan --debug apply

部分系统可能需要重启才生效:

reboot

最后,运行以下命令查看IP设置结果:

ip a
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐