3. 使用ibv_devinfo查看设备信息

任务目标

在已安装 InfiniBand 软件栈(如 OFED)的主机上,通过 ibv_devinfo 命令查看 RDMA 网卡设备信息,并解析输出中的关键参数,判断设备是否处于可用状态。

前置条件

  • 已安装 rdma-core 或 OFED 软件包(包含 ibv_devinfo 工具)
  • 已加载内核模块:mlx5_core、ib_uverbs、ib_core(Mellanox 网卡为例)
  • 设备已连接并处于 Active 状态(可通过 ibstatus 交叉确认)

运行命令

直接执行以下命令查看所有 RDMA 设备信息:

ibv_devinfo -v

若需查看指定设备(如 mlx5_0):

ibv_devinfo -d mlx5_0 -v

关键输出解析

以下为典型输出及对应含义(以 Mellanox ConnectX-5 为例):

hca_id: mlx5_0
    transport: InfiniBand (0)
    fw_ver: 16.32.1010
    node_guid: 0x248a070300a1b2c3
    sys_image_guid: 0x248a070300a1b2c3
    vendor_id: 0x02c9
    vendor_part_id: 4115
    hw_ver: 0x0

    port 1:
        state: PORT_ACTIVE (4)
        max_mtu: 4096 (5)
        active_mtu: 4096 (5)
        sm_lid: 2
        port_lid: 6
        port_lmc: 0
        link_layer: InfiniBand

    port 2:
        state: PORT_DOWN (1)
        max_mtu: 4096 (5)
        active_mtu: 4096 (5)
        sm_lid: 0
        port_lid: 0
        port_lmc: 0
        link_layer: InfiniBand
参数含义正常判定
state端口状态PORT_ACTIVE (4) 表示链路正常;PORT_DOWN (1) 表示未连接或故障
active_mtu当前生效的 MTU 值4096 为 InfiniBand 默认最大值;若为 2048 说明对端协商为较低值
fw_ver固件版本与厂商发布版本比对,确认是否过旧
link_layer链路层协议InfiniBand 或 Ethernet(RoCE 模式)
port_lid本地 LID(子网内地址)非 0 表示已获取有效 LID;0 且 state=DOWN 时说明未接入子网

验证方法

按以下步骤确认设备工作正常:

  1. 状态检查:执行 ibv_devinfo,观察目标端口 state 是否为 PORT_ACTIVE (4)。若为 PORT_DOWN,检查线缆连接和交换机端口。
  2. 速率确认:执行 ibstatus 查看当前链路速率(如 100 Gb/sec),与交换机端口配置比对。
  3. 连通性测试:在另一台主机上执行 ibping -S(服务端)和 ibping -G <远端GID>(客户端),收到响应即表示数据通路正常。

通过条件:端口状态为 PORT_ACTIVE,且 ibstatus 显示的速率与交换机端口配置一致,即可判定设备工作正常。

常见问题

  • 命令不存在:安装 rdma-core:apt install rdma-core 或 yum install rdma-core
  • 设备未列出:确认内核模块已加载:modprobe mlx5_core;检查 ibstat 是否能看到设备
  • 端口 DOWN:检查线缆、交换机端口状态,以及子网管理器(OpenSM)是否运行:ps aux | grep opensm