百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

InfiniBand网络运维全指南:从驱动安装到故障排查

ahcoder 2025-03-23 16:59 122 浏览

一、InfiniBand 网络概述

InfiniBand(直译为“无限带宽”技术,缩写为IB)是一种用于高性能计算的计算机网络通信标准,具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。它广泛应用于高性能计算(HPC)和数据中心环境,提供比传统以太网更高的性能和可扩展性。

二、驱动安装与配置

2.1 Mellanox OFED 安装

# CentOS/RHEL 系统
wget https://www.mellanox.com/downloads/ofed/MLNX_OFED-5.8-1.0.1.1/MLNX_OFED_LINUX-5.8-1.0.1.1-rhel8.6-x86_64.tgz
tar -xvf MLNX_OFED_LINUX-*.tgz
cd MLNX_OFED_LINUX-*
sudo ./mlnxofedinstall --auto-add-kernel-support --force

# Ubuntu 系统
sudo apt-get install mlnx-ofed-all

驱动下载地址:
https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/

参数说明:

--auto-add-kernel-support:自动适配内核版本

--force:强制覆盖现有驱动

--without-fw-update:跳过固件更新(可选)

安装后验证:

/etc/init.d/openibd restart
systemctl enable opensm
ibstat

2.2 驱动状态检查

# 查看驱动版本
modinfo mlx5_core

# 检查服务状态
systemctl status opensm

# 验证RDMA功能
ibv_devinfo

# 验证网卡映射关系
ibdev2netdev -v

三、基础维护命令

3.1 网络状态查询

# 查看所有IB设备信息
ibstat

输出示例:

CA 'mlx5_0'
    CA type: MT4123
    Number of ports: 1
    Firmware version: 20.30.1004
    Hardware version: 0
    Node GUID: 0x98039b0300b8a0a0
    System image GUID: 0x98039b0300b8a0a3
    Port 1:
        State: Active
        Physical state: LinkUp
        Rate: 100
        Base lid: 3
        LMC: 0
        SM lid: 2
        Capability mask: 0x2651e848
        Port GUID: 0x98039b0300b8a0a1

字段解析:

  • Physical state:物理链路状态(LinkUp/LinkDown)
  • Rate:连接速率(56=56Gb/s,100=100Gb/s)
  • Base lid:本地标识符
  • LMC:LID掩码控制

3.2 子网管理

# 启动子网管理器
opensm -B 0x0002a
参数说明:
-B:指定分区密钥

# 查看SM状态
ibsm_info

# 强制更新路由表
opensm -u /etc/opensm/opensm.conf
参数说明:
-u:更新配置后重新加载

3.3 连接性测试

# 持续ping测试
ibping -c 1000 -d 200 -i 0.001 192.168.1.101

参数说明:

-c 1000:发送1000个测试包

-d 200:数据包大小200字节

-i 0.001:发包间隔1ms

四、性能测试工具

4.1 带宽测试

# 服务端
ib_send_bw -d mlx5_0 -x 3 -F --report_gbits

# 客户端
ib_send_bw -d mlx5_0 -x 3 -F --report_gbits 

参数详解:

-d:指定设备名称

-x:使用端口号

-F:启用帧模式

--report_gbits:以Gb/s为单位报告结果

输出示例:

---------------------------------------------------------------------------------------
                    Send BW Test
 Dual-port       : OFF          Device         : mlx5_0
 Number of qps   : 1            Transport type : IB
 Connection type : RC            Using SRQ      : OFF
 PCIe relax order: ON
 ibv_wr* API     : ON
 TX depth        : 128
 CQ Moderation   : 1
 Mtu             : 4096[B]
 Link type       : Ethernet
 GID index       : 3
 Max inline data : 0[B]
 rdma_cm QPs     : OFF
 Data ex. method : Ethernet
---------------------------------------------------------------------------------------
 local address: LID 0003 QPN 0x0123 PSN 0xf6b3b2
 remote address: LID 0004 QPN 0x0124 PSN 0x8e1b9d RKey 0x18000 VAddr 0x007f7d9d9000
---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
 65536      1000             96.43              96.35                 0.184

4.2 延迟测试

ib_send_lat -d mlx5_0 -x 1 -F 

输出关键指标:

  • latency typical[usec]:平均延迟
  • latency min[usec]:最小延迟
  • latency max[usec]:最大延迟

五、网络诊断命令

5.1 拓扑发现

ibnetdiscover -v

输出示例:

# Mellanox Technologies Aggregation Node description
Switch  24 "S-0002c903004a5f68" # "MF0;switch-a:IB" base port 0 lid 2 lmc 0
[24]    "H-0002c903004a5f68" # "HostA HCA-1" lid 1 4xHDR
[25]    "H-0002c903004b6f70" # "HostB HCA-2" lid 3 4xHDR

字段解析:

  • lid:节点在子网中的逻辑标识符
  • lmc:LID掩码计数
  • 4xHDR:4通道HDR连接

5.2 错误检测

ibdiagnet --routing_engine=updn --get_phy_info

检测范围包括:

  • 链路CRC错误
  • 符号错误计数
  • 接收器错误
  • 本地物理错误

5.3 端口计数器

# 查看端口统计
ibportstate -L 1 -D mlx5_0 counters

关键计数器:

  • PortXmitData:发送数据量(4字节单位)
  • PortRcvData:接收数据量
  • SymbolError:符号错误计数
  • LinkErrorRecovery:链路错误恢复次数

六、高级维护场景

6.1 固件升级

mst start
mst status -v
mlxfwmanager -i /tmp/fw-Mellanox-XX.XX.XX.bin --online

6.2 性能调优

# 设置MTU值
ip link set ib0 mtu 4096

# 调整队列深度
echo 2048 > /sys/class/infiniband/mlx5_0/device/params/sq_psn

# 启用巨帧
ifconfig ib0 txqueuelen 10000

七、常见问题排查

7.1 链路不稳定

诊断步骤:

  • 检查物理连接
  • 查看端口状态:ibstatus
  • 检查错误计数器:ibqueryerrors
  • 验证固件版本:mlxfwmanager

7.2 RDMA通信失败

排查流程:

# 验证子网管理器
ibsmstatus

# 检查GID配置
ibdev2netdev

# 测试基础通信
ibping -S 5 -C mlx5_0 -P 1

相关推荐

Java程序员必备的Linux命令速查表

Java程序员必备的Linux命令速查表在Java开发的世界里,Linux就像一位默默支持的幕后英雄。作为一名Java开发者,掌握一些基本的Linux命令,不仅能提高工作效率,还能让你在团队中显得格外...

Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!

在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...

linux磁盘管理相关命令(linux磁盘管理常用命令)

磁盘的使用情况会直接影响系统的性能,因此我们经常会用到以下命令,主要围绕:fdisk:磁盘分区df:文件系统的磁盘空间占用情况du:文件目录的磁盘空间占用情况查看磁盘关系lsblk查看磁盘分区情况fd...

第四章 Linux常用shell命令-4.5.磁盘管理

主要介绍一下跟磁盘管理相关命令,有比较多的内容摘抄自网络,如有侵权,请及时联系我删除:显示目前在Linux系统上的文件系统磁盘使用情况统计:df创建和维护分区表的程序:fdisk将磁盘分区或镜像挂...

Linux新手必备:20个高效命令轻松掌握!

Linux基本命令使用指南在现代计算机操作系统中,Linux因其开放性、灵活性和强大的功能,广泛应用于服务器和开发环境中。作为技术人员,掌握Linux的基本命令是非常重要的。在本文中,我们将重点介绍2...

每日必学Linux命令:ls命令(linux命令详解之ls命令)

ls命令是linux下最常用的命令。ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。通过ls命令不仅可以查看linux文件...

Linux系统dev和proc目录详解(linux dev/sr0)

简介:Linux系统里的/dev和/proc目录那可是相当重要的系统文件。在Linux系统中,/dev目录专门用来存放设备文件。不光有设备文件,系统里还有好多特殊功能也是通过设备的形式...

Linux切换目录之cd命令(linux切换指定目录)

1.基本概念1.1命令作用当我们在Linux系统上工作时,做得相当多的一项任务就是在不同的目录之间进行切换,这时就需要用到cd命令了。cd是"changedirectory"的首...

Linux切换目录(cd命令)(linux如何切换到目录)

cd命令,是ChangeDirectory的缩写,用来切换工作目录。Linux命令按照来源方式,可分为两种,分别是Shell内置命令和外部命令。所谓Shell内置命令,就是Shel...

MongoDB数据库的快速部署和启动(mongodb的使用教程)

一、Mongodb介绍常见数据库介绍关系数据库RDBMS设计表结构,通过SQL语句进行操作。连表关系常见的关系型数据库:mysqloracle(商业)DB2(IBM)sqlserver(微软...

5分钟学会网络服务搭建,飞凌i.MX9352 + Linux 6.1实战示例

在“万物互联”的技术浪潮下,网络服务已成为连接物理世界与数字世界的核心纽带,它不仅赋予了终端设备“开口说话”的能力,更构建了智能设备的开发范式。本文就将以飞凌嵌入式OK-MX9352-C开发板(搭载了...

centos安装geoserver并配置开机启动

前提条件:服务器已经安装了java环境一、下载下载地址:http://geoserver.org/release/maintain/下载后文件名为:geoserver-2.19.3-bin.zip二、...

开机启动流程(开机流程图)

grubandbootCentos5,6的开机启动流程grubCentos7的开机启动流程Centos5,6的开机启动流程initrd/initramfs一般存储在/boot目录下,以.img...

Linux cron服务概述(crontab服务)

cron是Linux/Unix系统中一个非常重要的后台服务(守护进程),用于在预定的时间间隔自动执行命令或脚本。它使得自动化重复性任务成为可能,例如日志清理、数据备份、系统维护等。1.cron...

CentOS 8利用rc.local进行开机自启动的配置

CentOS8利用rc.local进行开机自启动的配置CentOS8linux系统是不建议使用rc.local进行开机自启动的,建议创建systemdservice。我们为了方便以后多一个配置...