Mellanox智能网卡驱动程序安装过程。
这里使用的组合是: CentOS7.9 + 3.10内核(升级过) + OFED5.4
参考文档:https://blog.csdn.net/bandaoyu/article/details/115906185
一、看一下系统是否已经自动识别网卡,没识别的话不能使用。如果这个工具没有安装,执行:yum install -y pciutils
lspci |grep Mellanox 02:00.0 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5] |
二、下载网卡驱动,请到驱动下载页面
先看下自己的OS版本,要选择正确的版本安装
[root@nodeb ~]# cat /etc/os-release NAME="Red Hat Enterprise Linux Server" VERSION="7.4 (Maipo)" [root@nodeb ~]# uname -m x86_64 |
到这个页面下载: https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
最好是下载iso文件。
三、安装依赖包
安装内核头文件
yum install kernel-headers-$(uname -r) kernel-devel-$( uname -r) -y |
安装开发者工具包
yum groupinstall 'Development Tools' -y |
安装其他工具
yum install python-devel lsof redhat-rpm-config rpm-build gcc libtool libusbx tcl fuse-libs tcsh tk -y |
注意这个也要安装
yum install createrepo |
四、正式安装驱动
查看支持的内核版本
cat .supported_kernels |
对比自己的内核版本,如果支持的话,就执行:
./mlnxofedinstall --add-kernel-support |
否则的话,执行 (如果是升级过内核(不符合Mellanox定义的所谓标准OS),则执行:)
./mlnxofedinstall --add-kernel-support |
此过程包含重新编译、生成对应内核的驱动文件、自动安装驱动等过程,所以需要更多的时间(大概20~30分钟)
安装程序发现固件版本低的话,会自动更新固件。
mlnxofedinstall的其他参数(可以通过./mlnxofedinstall -h查看)
--distro rhel9.0 |
如果是非社区的定制系统(可能同不过脚本的判断,报错系统为不支持的系统,则需要加一些参数),例如公司的定制系统是基于centos9/redahat9,则可以加--distro rhel9.0 |
--with-nvmf |
|
--with-nfsrdma | |
--skip-distro-check | 让执行脚本不去检查当前OS的发布版本号(如redhat7.5) |
--without-fw-update | 参数是不更新FW |
也可以使用mlnx_add_kernel_support.sh手动编译内核安装包。
./mlnx_add_kernel_support.sh -m /opt/mellanox/MLNX_OFED_LINUX-5.0-2.1.8.0-rhel7.7-x86_64 --make-tgz -t /tmp/ |
生成对应此OS内核的包,生成目录默认在/tmp下,安装过程中可能会有提示需要安装相关OS的依赖包,配置yum源进行安装即可:
mlnx_add_kernel_support.sh脚本文件用于在当前系统内核下进行重新编译打包
其中-m后参数为原始驱动包文件夹路径,-t后参数为存放重新编译打包后的文件夹,--make-tgz表示已tgz压缩包方式打包,--skip-repo 不检查OS的发布版本进行编译)
五、重启驱动
/etc/init.d/openibd restart |
六、重新启动openmsd
sudo /etc/init.d/opensmd restart |
七、安装完毕,现在终于看到那两块网卡了
enp129s0f0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 ether 10:70:fd:5d:78:38 txqueuelen 1000 (Ethernet) RX packets 21 bytes 6182 (6.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 66 bytes 10108 (9.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp129s0f1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500 ether 10:70:fd:5d:78:38 txqueuelen 1000 (Ethernet) RX packets 24 bytes 6644 (6.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 60 bytes 9400 (9.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
八、查看网卡状态,没有fail就对了
sudo hca_self_test.ofed |
九、查看网卡映射关系
[root@t443 ~]# ibdev2netdev -v 0000:81:00.0 mlx5_bond_0 (MT4127 - MCX631102AN-ADAT) ConnectX-6 Lx EN adapter card, 25GbE, Dual-port SFP28, PCIe 4.0 x8, No Crypto fw 26.31.2006 port 1 (ACTIVE) ==> bond1 (Up) |
十、显示并检查汇总信息
mlnx_tune |
十一、查看网卡的工作模式
网卡可以工作在eth模式和ib(RDMA)模式。要查看工作模式其实非常简单,直接执行:ibstatus
Infiniband device 'mlx5_0' port 1 status: base lid: 0xffff sm lid: 0x0 state: 1: DOWN phys state: 3: Disabled rate: 10 Gb/sec (4X SDR) link_layer: InfiniBand Infiniband device 'mlx5_1' port 1 status: base lid: 0xffff sm lid: 0x0 state: 1: DOWN phys state: 2: Polling rate: 10 Gb/sec (4X SDR) link_layer: InfiniBand |
如果看到的是Ethernet,那一定是eth模式了。使用这个命令更好:lspci -v | grep Mellanox
有些文章也提到了这个方式查看工作模式:
sudo /sbin/connectx_port_config -s |
但是根本找不到这个额命令。应该是废弃了。
十二、设置网卡的工作模式
sudo /sbin/connectx_port_config -s |
P1是第一个口,P2是第二个口;
1代表IB,2代表Eth
十三、查询固件版本
# 查询固件版本 或者: mlxconfig -d /dev/mst/mt4127_pciconf0 query full |
十四、查询 LINK_TYPE_P1 之类的参数
# flint -d /dev/mst/mt4099_pciconf0 query full mstconfig -d 81:00.0 query |
十五、查询IB状态
ibv_devinfo |
十六、查询device type version
Mlxfwmanager
十七、查看OFED版本
ofed_info |
后面还有一些关于RDMA的设置,可参考这篇文章: