Mellanox VPI网卡在Linux环境下的双模切换实战

张开发
2026/4/16 22:08:44 15 分钟阅读

分享文章

Mellanox VPI网卡在Linux环境下的双模切换实战
1. Mellanox VPI网卡双模切换入门指南第一次接触Mellanox ConnectX系列VPI网卡时我被它同时支持Infiniband和Ethernet两种模式的能力惊艳到了。这种灵活性让一张网卡就能应对高性能计算集群和普通云平台两种截然不同的网络环境。不过在实际操作中我也踩过不少坑比如模式切换后忘记重启导致配置不生效或者搞混了两种模式的配置命令。下面我就把这些年总结的实战经验分享给大家。VPIVirtual Protocol Interconnect是Mellanox的专利技术它允许网卡在硬件层面支持多种协议。ConnectX-4及以后的网卡都具备这个特性。想象一下这就像你的手机同时支持4G和Wi-Fi可以根据网络环境自动切换最佳连接方式。不同的是VPI网卡需要手动配置模式切换而且每次切换后必须重启才能生效。在开始操作前我们需要确认几个关键点网卡型号是否支持VPIConnectX-3及更早型号不支持当前系统是否安装了必要的驱动和工具mst和mlxconfig了解上层应用到底需要哪种网络协议我遇到过最典型的情况是某HPC集群需要从IB网络迁移到以太网环境或者反过来。这时候就需要用到我们今天要讲的模式切换技术。2. 环境准备与工具安装2.1 检查硬件兼容性首先用lspci命令确认网卡型号lspci | grep Mellanox输出类似这样04:00.0 Ethernet controller: Mellanox Technologies MT28800 Family [ConnectX-5 Ex]如果是ConnectX-3或更早型号很遗憾不支持双模切换。ConnectX-4及以上型号都支持VPI技术。2.2 安装MFT工具包RedHat/CentOS下安装Mellanox固件工具包MFTwget https://www.mellanox.com/downloads/MFT/mft-4.23.0-72-x86_64-rpm.tgz tar -xzvf mft-4.23.0-72-x86_64-rpm.tgz cd mft-4.23.0-72-x86_64-rpm sudo ./install.sh安装完成后启动mst服务sudo systemctl start mst这个服务是后续所有操作的基础它提供了访问网卡配置的接口。3. 当前模式诊断与确认3.1 查看设备状态运行以下命令获取设备列表sudo mst status典型输出MST devices: ------------ /dev/mst/mt4119_pciconf0 - PCI configuration cycles access. domain:bus:dev.fn0000:04:00.0 addr.reg88 data.reg92 cr_bar.gw_offset-1 Chip revision is: 00记下你的设备路径这里是/dev/mst/mt4119_pciconf0后续操作都会用到。3.2 查询当前模式使用mlxconfig查询当前配置sudo mlxconfig -d /dev/mst/mt4119_pciconf0 query | grep LINK_TYPE_P1输出可能是LINK_TYPE_P1 IB(1) # IB模式或者LINK_TYPE_P1 ETH(2) # Ethernet模式这个值决定了网卡当前的工作模式。4. 模式切换实战操作4.1 切换到Ethernet模式执行以下命令sudo mlxconfig -d /dev/mst/mt4119_pciconf0 set LINK_TYPE_P12系统会提示确认Apply new Configuration? (y/n) [n] : y输入y回车看到Applying... Done!表示成功。关键提示-I- Please reboot machine to load new configurations.这告诉我们修改的是下次启动的配置必须重启才能生效。4.2 切换到Infiniband模式类似的切回IB模式的命令是sudo mlxconfig -d /dev/mst/mt4119_pciconf0 set LINK_TYPE_P11同样需要确认并重启。4.3 验证模式切换重启后可以通过两种方式验证再次运行mlxconfig查询命令使用ibstat或ifconfig查看接口类型对于IB模式ibstat会显示Infiniband设备信息。对于Ethernet模式ifconfig会看到标准的以太网接口如eth1。5. 常见问题排查5.1 模式切换后网络不通我遇到过几次切换后网络不通的情况通常是因为忘记重启 - 这是最常见的原因交换机端口配置不匹配 - IB和Eth需要不同的交换机配置驱动未正确加载 - 检查dmesg是否有错误解决方法journalctl -u mst --no-pager -n 50 # 查看mst服务日志 dmesg | grep mlx # 检查内核日志5.2 工具命令找不到如果提示mlxconfig: command not found说明MFT没有正确安装。建议检查安装步骤是否完整确认PATH环境变量包含/opt/mellanox/mft/bin尝试完全卸载后重新安装5.3 配置不持久化极少数情况下重启后配置会恢复默认值。这时需要检查BIOS中PCIe设置确认没有其他管理软件覆盖配置考虑更新网卡固件6. 高级配置与优化6.1 并行切换多个端口对于双端口网卡需要同时设置LINK_TYPE_P1和LINK_TYPE_P2sudo mlxconfig -d /dev/mst/mt4119_pciconf0 set LINK_TYPE_P12 LINK_TYPE_P226.2 性能参数调优不同模式下可以调整的参数IB模式调整MTU、QP数量Eth模式调整RSS、LRO等例如设置IB模式的MTUsudo mlxconfig -d /dev/mst/mt4119_pciconf0 set IB_MTU40966.3 固件升级建议保持固件最新能获得最好的兼容性sudo mlxfwmanager --query sudo mlxfwmanager --update升级后必须冷重启完全断电。7. 生产环境最佳实践在数据中心实际部署时我总结了几条经验变更窗口选择 - 模式切换需要重启务必安排在维护时段配置备份 - 修改前先备份当前配置sudo mlxconfig -d /dev/mst/mt4119_pciconf0 query mlxconfig_backup.txt文档记录 - 记录每次变更的时间、原因和操作人回滚方案 - 准备好快速回退的脚本对于自动化运维场景可以用expect脚本实现无人值守切换#!/usr/bin/expect spawn mlxconfig -d /dev/mst/mt4119_pciconf0 set LINK_TYPE_P12 expect Apply new Configuration? send y\r interact最后提醒一点模式切换后原来的IP配置和网络连接都会中断务必提前通知相关用户。我在一个金融交易系统中就曾因为忘记这个细节导致交易中断教训深刻。

更多文章