保姆级教程:Ubuntu 18.04下Mellanox ConnectX-3 IB网卡从驱动安装到IP配置全流程(解决ibstat状态异常)
Ubuntu 18.04下Mellanox ConnectX-3 IB网卡全流程配置指南
在构建高性能计算集群时,InfiniBand网络因其超低延迟和高吞吐量成为关键组件。Mellanox ConnectX-3系列作为经典IB网卡,虽已不是最新型号,但在二手市场仍广泛流通。本文将带您从硬件识别到网络配置,解决ibstat状态异常等典型问题。
1. 硬件准备与环境检查
1.1 硬件兼容性确认
ConnectX-3系列网卡分为VPI(支持IB和以太网)和IB专用版本。首先通过网卡标签确认具体型号:
lspci | grep Mellanox典型输出应包含MT27500或MT27520芯片标识。对于较旧的固件版本(低于2.40.5030),建议优先考虑升级以避免与新系统兼容性问题。
提示:二手网卡常见固件过时问题,可通过
flint -d /dev/mst/mt4099_pciconf0 query查询当前版本
1.2 系统环境预配置
Ubuntu 18.04默认内核(4.15)对旧款IB卡支持有限,建议安装HWE内核:
sudo apt install --install-recommends linux-generic-hwe-18.04关键依赖包安装清单:
- 必须组件:libnl-3-200、libnl-route-3-200
- 开发工具:gcc-multilib、make
- 调试工具:iproute2、net-tools
2. 驱动安装与调优
2.1 驱动版本选择策略
MLNX_OFED驱动版本选择矩阵:
| 网卡型号 | 推荐驱动版本 | 最大内核支持 |
|---|---|---|
| ConnectX-3 | MLNX_OFED 4.9 | 5.4 |
| ConnectX-3 Pro | MLNX_OFED 5.2 | 5.11 |
对于Ubuntu 18.04,建议下载MLNX_OFED 4.9的ubuntu18.04-x86_64包。安装前需卸载默认的mlx4驱动:
sudo modprobe -r mlx4_core mlx4_ib sudo apt purge mlnx-ofed-kernel-dkms2.2 定制化安装流程
解压驱动包后,使用--without-fw-update跳过固件升级(避免旧卡刷写风险):
./mlnxofedinstall --without-fw-update --force安装后必须重建initramfs:
sudo update-initramfs -u常见安装问题处理:
- dkms构建失败:检查
/usr/src/linux-headers-$(uname -r)是否存在 - 符号链接错误:手动执行
sudo /etc/init.d/openibd restart - 模块签名冲突:临时禁用Secure Boot
3. 网络配置与状态诊断
3.1 子网管理器配置
单机测试时需启动本地子网管理器:
sudo /etc/init.d/opensm start永久生效配置:
sudo systemctl enable opensm sudo echo "options ib_core port_type_cache=1" > /etc/modprobe.d/ib_core.conf3.2 IPoIB基础配置
编辑/etc/network/interfaces添加IB接口:
auto ib0 iface ib0 inet static address 192.168.1.100 netmask 255.255.255.0 mtu 65520 hwaddress 80:00:00:48:fe:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00 up ip link set ib0 mtu 65520关键参数说明:
- mtu:必须≤65520
- hwaddress:格式为GUID+端口号(可通过
ibstat查询)
3.3 状态异常排查指南
当ibstat显示State: Initializing时,按序检查:
物理层状态:
sudo cat /sys/class/net/ib0/phy_state正常应返回
5: LINK_UP端口激活状态:
sudo ibportstate -D 0 1检查
PhysLinkState是否为ActiveSM通信验证:
sudo ibstat | grep Rate正常应返回
Rate: 56或Rate: 40
典型修复操作:
sudo ibportstate -D 0 1 enable sudo service opensm restart sudo ifdown ib0 && sudo ifup ib04. 性能优化与压力测试
4.1 协议栈参数调优
修改/etc/sysctl.conf添加:
net.core.rmem_max = 4194304 net.core.wmem_max = 4194304 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 65536 4194304RDMA相关参数调整:
echo 2048 > /sys/class/infiniband/mlx4_0/ports/1/hca_ack_delay echo 1 > /sys/class/infiniband/mlx4_0/ports/1/unsafe_global_rkey4.2 基准测试工具使用
安装perftest套件:
sudo apt install perftest带宽测试示例(需双机配合):
# 服务端 ib_send_bw -d mlx4_0 -i 1 # 客户端 ib_send_bw -d mlx4_0 -i 1 <server_ip>延迟测试关键指标解读:
- 单边延迟:
ib_send_lat结果应<1.5μs - 双向延迟:
ib_write_lat结果应<2μs
4.3 持久化故障排查
创建系统服务监控IB状态:
cat <<EOF | sudo tee /etc/systemd/system/ib-monitor.service [Unit] Description=InfiniBand Link Monitor [Service] ExecStart=/usr/bin/watch -n 60 "ibstat | grep -q 'State: Active' || (logger -t ibmon 'IB link down'; systemctl restart opensm)" Restart=always [Install] WantedBy=multi-user.target EOF日志分析技巧:
journalctl -u opensm -f # 实时查看SM日志 dmesg | grep mlx4 # 驱动层事件追踪