在 服务器有两个 InfiniBand 网络(两张 IB 网卡) 的情况下,默认 sminfo 只能显示一个 Subnet Manager(SM),因为每个 InfiniBand 子网(Subnet)只允许有一个主 SM(Master SM)。如果你想区分这两个网络,你可以采取以下方法:
方法 1:使用 ibstat 查看每个 IB 端口的状态
在服务器上运行:
ibstat
示例输出:
CA 'mlx5_0'
Port 1:
State: Active
Physical state: LinkUp
Rate: 100 Gb/sec
Base lid: 1
LID: 1
SM lid: 2
LMC: 0
Port 2:
State: Down
Physical state: Polling
Rate: 100 Gb/sec
CA 'mlx5_1'
Port 1:
State: Active
Physical state: LinkUp
Rate: 100 Gb/sec
Base lid: 1
LID: 3
SM lid: 4
LMC: 0
在这个示例中:
- mlx5_0 代表第一个 IB 设备,端口 1 连接到 SM LID=2 的子网
- mlx5_1 代表第二个 IB 设备,端口 1 连接到 SM LID=4 的子网
如果 LID(Local ID)不同,则说明是两个不同的 IB 网络
方法 2:使用 sminfo -D <端口> 强制查询不同 IB 端口
默认 sminfo 只会显示一个 SM,你可以强制指定不同的 IB 端口:
sminfo -D 1
sminfo -D 2
其中:
- -D 1 指定第一个 IB 端口(mlx5_0)
- -D 2 指定第二个 IB 端口(mlx5_1)
如果两个命令返回的 SM 信息不同,说明这两个 IB 端口属于不同的 IB 网络。
方法 3:使用 ibswitches -C <设备> 显示两个 IB 网络的交换机
如果你的服务器连接了 两个不同的 IB 交换机,你可以分别查询:
ibswitches -C mlx5_0
ibswitches -C mlx5_1
这个命令可以显示:
- 交换机的 GUID
- 交换机的 System Image GUID(可能作为序列号)
- 交换机的管理节点(SM)
如果两个 ibswitches 命令返回不同的交换机 GUID,那说明服务器连接了 两个不同的 IB 网络。
方法 4:使用 ibnetdiscover 确认网络拓扑
如果你想获取完整的 IB 网络拓扑,可以运行:
ibnetdiscover
它会输出:
- 交换机 GUID
- 服务器 GUID
- 端口连接关系
你可以手动检查服务器的两个 IB 端口分别连接到哪个交换机,从而确定两个网络的拓扑结构。
方法 5:使用 ibdiagnet 分析 IB 网络
如果你的 InfiniBand 诊断工具 ibdiagnet 可用,你可以运行:
ibdiagnet -r
它会收集完整的 IB 网络信息,包括:
- 交换机信息
- 端口状态
- LID 映射
你可以检查 ibdiagnet 的输出,看看是否有两个独立的 LID 域,如果有,说明是两个不同的 IB 网络。
总结
✅ 如果你的服务器有两个 IB 网络,你可以这样区分它们:
- 用 ibstat 查看每个 IB 端口的 LID
- 用 sminfo -D 1 和 sminfo -D 2 分别查询 SM
- 用 ibswitches -C mlx5_0 和 ibswitches -C mlx5_1 查询交换机
- 用 ibnetdiscover 获取完整的 IB 拓扑
- 用 ibdiagnet -r 分析 IB 网络结构