查看 mellanox 网卡的状态 📅 2026/7/27 20:08:59 1. 查看 cx5 状态ibdev2netdev显示Down是 CX5 光纤直连场景中最常见的问题之一。结合你之前的配置背景CX5 556A EDR、MLNX_OFED 24.10、Ubuntu 22.04/24.04、双网卡光纤直连以下是按优先级排序的系统化排查清单。一、最可能的原因端口模式未切到 EthernetCX5 VPI 卡出厂默认端口类型可能是InfiniBand (LINK_TYPE1)而 RoCEv2 需要Ethernet (LINK_TYPE2)。这是ibdev2netdev显示 Down 的头号原因。1.1 检查当前端口模式sudomst startsudomst status# 查看设备路径例如 /dev/mst/mt4115_pciconf0# 查询当前端口类型sudomlxconfig-d/dev/mst/mt4115_pciconf0 q|grepLINK_TYPE_LINK_TYPE_P1 1→ InfiniBand 模式LINK_TYPE_P1 2→ Ethernet 模式1.2 切换到 Ethernet 模式sudomlxconfig-d/dev/mst/mt4115_pciconf0setLINK_TYPE_P12LINK_TYPE_P22# 重启生效sudoreboot重启后再次执行ibdev2netdev ibv_devinfo|greplink_layerlink_layer应显示Ethernet。二、检查物理层与光模块即使驱动正常物理层问题也会导致链路 Down。2.1 核心诊断命令# 查看 IB 设备详细信息与端口状态ibstat ibv_devinfo# 查看网卡对应的 netdev 接口名ibdev2netdev-v# 用 mlxlink 检查物理链路状态重点sudomlxlink-dmst_device-e-m-c# 例如sudo mlxlink -d /dev/mst/mt4115_pciconf0 -e -m -c关注输出中的Link State:Down/ActiveSpeed: 是否协商到预期速率如 100GbEFEC: 是否匹配Cable Type: 是否正确识别光模块2.2 光模块兼容性排查NVIDIA 官方论坛有明确案例第三方光模块非 NVIDIA 认证可能导致 CX5 双端口异常联动甚至链路无法建立更换为 NVIDIA 认证光模块后问题解决。排查动作确认 QSFP28 光模块是100G EDR规格尝试更换光模块或光纤如果是 AOC/DAC优先尝试 DAC 线缆排除光模块问题检查光模块是否插紧QSFP28 有卡扣需确认锁定到位三、检查驱动与固件状态3.1 驱动信息# 确认 mlx5_core 已加载ethtool-i$(ibdev2netdev|awk{print $5}|head-1)应输出driver: mlx5_coreversion: MLNX_OFED 24.10.x或对应内核版本firmware-version: 16.x.xxxx3.2 固件版本sudoflint-d/dev/mst/mt4115_pciconf0 q确认固件不是过旧版本。如果安装 MLNX_OFED 时跳过了固件更新建议手动更新sudomlxup四、检查链路协商与速率4.1 查看链路下降原因# 找到对应的 netdev 接口cat/sys/class/net/interface/debug/link_down_reason# 例如cat /sys/class/net/ens5f0/debug/link_down_reason常见原因Negotiation failure— 两端速率/FEC 不匹配Remote faults detected— 对端异常No cable detected— 光模块未被识别4.2 强制速率与 FEC如果需要如果两端协商失败可尝试强制参数sudomlxlink-d/dev/mst/mt4115_pciconf0--speeds100G--fecRS确保两端设置一致五、检查 dmesg 内核日志sudodmesg|grep-imlx5|tail-50关注是否有Link down/Link up事件Detected insufficient power on the PCIe slot— 供电不足AOC 比 DAC 耗电多固件/驱动版本不匹配警告六、一键巡检脚本供你直接运行你可以先跑下面这个脚本把输出贴出来我可以帮你精确定位#!/bin/bashecho 1. ibdev2netdev ibdev2netdev-vechoecho 2. ibstat ibstatechoecho 3. ibv_devinfo ibv_devinfoechoecho 4. OFED Info ofed_info-s2/dev/null||echoofed_info not foundechoecho 5. MST Status sudomst start2/dev/nullsudomst statusechoecho 6. mlxlink (Port 1) MST_DEV$(sudomst status|grepmt|awk{print $1}|head-1)sudomlxlink-d$MST_DEV-e-m-c2/dev/null||echomlxlink failedechoecho 7. ethtool driver info forifacein$(ibdev2netdev|awk{print $5});doecho---$iface---ethtool-i$iface2/dev/null||echoethtool failed for$ifacedoneechoecho 8. dmesg mlx5 sudodmesg|grep-imlx5|tail-20echoecho 9. Link Down Reason forifacein$(ibdev2netdev|awk{print $5});doif[-f/sys/class/net/$iface/debug/link_down_reason];thenecho---$iface---cat/sys/class/net/$iface/debug/link_down_reasonfidone七、常见根因总结现象最可能原因解决ibdev2netdev显示 Downibv_devinfo显示link_layer: InfiniBand端口模式为 IBmlxconfig set LINK_TYPE_P12重启光模块识别不到mlxlink 无输出第三方光模块不兼容或插不紧更换 NVIDIA 认证光模块或重新插拔一端口拔插导致另一端口也 Down第三方光模块与固件交互问题更换认证光模块dmesg报供电不足PCIe 插槽功率不足换插槽或换用 DAC 线缆速率协商失败FEC 或 Speed 不匹配mlxlink强制统一参数建议你先执行上述脚本把输出结果发给我特别是ibv_devinfo的link_layer字段和mlxlink的物理层状态这样可以精准定位是配置问题还是物理层问题。2. 其他方法查看 cx5 状态mst未找到说明Mellanox Software Tools (MFT)没有安装或未加入 PATH。MFT 通常随 MLNX_OFED 一起安装但某些安装方式如只装内核驱动、或 Ubuntu inbox 驱动会缺失它。一、先安装 MFT推荐如果你已经安装了 MLNX_OFED 24.10MFT 应该在其中。尝试# 查找 mst 是否已存在whichmstfind/opt-namemst2/dev/null# 如果 MLNX_OFED 已安装但 mst 不在 PATH手动加环境变量exportPATH$PATH:/opt/mellanox/mst/bin# 或安装 MFT 独立包sudoaptupdatesudoaptinstallmellanox-tools# Ubuntu inbox 包名# 或从 NVIDIA 官网下载 MFT 独立安装包如果 MLNX_OFED 是源码编译安装的确认编译时包含了 MFT 组件。二、没有 mst 时的替代排查方案在mst不可用的情况下你仍可以通过sysfs和通用工具完成 90% 的诊断。2.1 确认网卡是否被识别lspci|grep-imellanox# 应输出类似# 05:00.0 Ethernet controller: Mellanox Technologies MT27800 Family [ConnectX-5]2.2 确认驱动已加载lsmod|grepmlx5# 应有 mlx5_core, mlx5_ib 等2.3 查看 IB 设备与端口类型最关键ibv_devinfo重点看每个端口的link_layer字段link_layer: InfiniBand→ 端口在IB 模式这是ibdev2netdev显示 Down 的最常见原因link_layer: Ethernet→ 端口已在Ethernet 模式2.4 查看 sysfs 中的链路层类型cat/sys/class/infiniband/mlx5_0/ports/1/link_layercat/sys/class/infiniband/mlx5_1/ports/1/link_layer输出InfiniBand或Ethernet。2.5 查看 netdev 接口状态ibdev2netdev-vip-brlink记录每个 mlx5 设备对应的 netdev 名称如ens5f0np0。2.6 用 ethtool 查看驱动与链路状态forifacein$(ibdev2netdev|awk{print $5});doecho$ifaceethtool-i$ifaceethtool$ifacedone关注driver: mlx5_coreLink detected: yes/noSpeed: 100000Mb/s或Unknown!2.7 查看链路下降原因forifacein$(ibdev2netdev|awk{print $5});doif[-f/sys/class/net/$iface/debug/link_down_reason];thenecho$ifacecat/sys/class/net/$iface/debug/link_down_reasonfidone2.8 查看 dmesgsudodmesg|grep-imlx5|tail-30三、如果 link_layer 显示 InfiniBand → 必须切到 Ethernet这是 CX5 VPI 卡光纤直连后ibdev2netdev显示 Down 的头号原因。CX5 出厂默认可能是 IB 模式。没有 mst 时的替代切法方法 A使用connectx_port_config如果可用sudoconnectx_port_config# 按提示选择 Ethernet方法 B通过 sysfs部分系统支持# 查看是否有相关 sysfs 节点ls/sys/class/infiniband/mlx5_0/ports/1/# 某些内核版本支持直接写入但 CX5 通常需要 mlxconfig方法 C安装 MFT 后用 mlxconfig最可靠# 安装 MFT 后sudomst startsudomlxconfig-d/dev/mst/mt4115_pciconf0 q|grepLINK_TYPE_sudomlxconfig-d/dev/mst/mt4115_pciconf0setLINK_TYPE_P12LINK_TYPE_P22sudorebootCX5 的vendor_part_id是4115所以 mst 设备名通常是/dev/mst/mt4115_pciconf0。四、请你执行以下命令把输出贴给我在没有mst的情况下先跑这组命令我能精准判断问题echo 1. lspci lspci|grep-imellanoxechoecho 2. ibv_devinfo ibv_devinfoechoecho 3. ibdev2netdev -v ibdev2netdev-vechoecho 4. link_layer (sysfs) fordevin/sys/class/infiniband/mlx5_*;doecho$(basename$dev)/ports/1:$(cat$dev/ports/1/link_layer2/dev/null)doneechoecho 5. ethtool link status forifacein$(ibdev2netdev|awk{print $5});doecho---$iface---ethtool$iface2/dev/null|grep-ESpeed|Link detected|Duplexdoneechoecho 6. dmesg mlx5 sudodmesg|grep-imlx5|tail-20特别重点关注ibv_devinfo输出的link_layer字段——如果显示InfiniBand那就是端口模式问题切到 Ethernet 后重启即可解决。