rdma-core debug

rdma-core调试及数据解析

export MLX5_DEBUG_MASK=0xff
export MLX5_DEBUG_FILE=/tmp/mlx5.txt

git clone https://github.com/linux-rdma/rdma-core.git

cd rdma-core

./build.sh

修改build/CMakeCache.txt

MLX5_DEBUG:BOOL=TRUE

function install_rdma_core
{
        local dir=/swgwork/cmi/rdma-core/build/lib

        cd /lib64/

        /bin/cp $dir/librdmacm.so.1.3.56.0      .
        /bin/cp $dir/libibverbs.so.1.14.56.0    .
        /bin/cp $dir/libmlx5.so.1.25.56.0       .

        /bin/rm librdmacm.so.1
        /bin/rm librdmacm.so
        /bin/rm libibverbs.so.1
        /bin/rm libibverbs.so
        /bin/rm libibverbs/libmlx5-rdmav34.so
        /bin/rm libmlx5.so.1

        ln -s librdmacm.so.1.3.56.0 librdmacm.so
        ln -s librdmacm.so.1.3.56.0 librdmacm.so.1
        ln -s libibverbs.so.1.14.56.0 libibverbs.so
        ln -s libibv
<think>我们遇到了一个错误:在Netplan配置文件中使用`infinibands`键时,系统提示“unknown key 'infinibands'”。这通常是因为当前安装的Netplan版本不支持InfiniBand配置。Netplan对InfiniBand的支持是在特定版本之后才引入的。 根据引用[1]和[2],我们知道Netplan的配置格式在不断演进,而且不同的系统版本可能支持不同的配置键。因此,我们需要检查Netplan的版本以及它是否支持InfiniBand。 解决方案: 1. **检查Netplan版本**:首先,我们需要确认当前系统中安装的Netplan版本。InfiniBand支持是在Netplan 0.104或更高版本中引入的(具体取决于发行版)。在Ubuntu 20.04 LTS中,默认的Netplan版本是0.104,而Ubuntu 18.04 LTS中则是0.101,因此可能不支持。 2. **替代配置方法**:如果Netplan版本过低,我们可以考虑以下替代方案: a. **使用传统配置方式**:在Ubuntu/Debian中,我们可以使用传统的`/etc/network/interfaces`文件来配置InfiniBand接口(如果系统支持)。 b. **升级Netplan**:如果可能,升级Netplan到支持InfiniBand的版本(例如0.104及以上)。 3. **验证Netplan版本**: ```bash netplan --version ``` 4. **如果版本过低且无法升级**,我们可以使用以下方法之一: - 方法一:使用`ethernets`配置节,但将InfiniBand接口当作普通以太网接口来配置(仅适用于IPoIB模式)。因为InfiniBand接口在IPoIB模式下会以网络接口的形式出现(如ib0),所以我们可以将其当作普通的以太网接口配置。但是,这种方法可能无法设置IB特有的参数。 - 方法二:使用NetworkManager或systemd-networkd的原始配置方式(如果Netplan不支持)。 5. **如果Netplan版本支持**,但配置仍然报错,则可能是拼写错误或配置结构错误。请确保: - 配置文件的缩进正确(YAML格式要求严格)。 - 接口名称正确(使用`ip link`命令查看,通常为ib0, ib1等)。 具体步骤: **步骤1:检查Netplan版本** 运行: ```bash netplan --version ``` 如果版本低于0.104(例如0.101),则不支持`infinibands`键。 **步骤2:降级使用`ethernets`配置节(适用于IPoIB)** 在Netplan配置中,我们可以将IB接口(如ib0)当作普通的以太网接口来配置。修改配置文件(例如`/etc/netplan/99-ib-config.yaml`)如下: ```yaml network: version: 2 renderer: networkd # 或NetworkManager ethernets: ib0: addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 223.5.5.5] ``` 然后应用配置: ```bash sudo netplan apply ``` **步骤3:使用传统配置(如果Netplan不支持且降级方法无效)** 编辑`/etc/network/interfaces`(如果系统使用ifupdown): ```bash sudo nano /etc/network/interfaces ``` 添加: ``` auto ib0 iface ib0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 223.5.5.5 ``` 然后重启网络服务(或重启系统): ```bash sudo systemctl restart networking ``` **步骤4:升级Netplan(可选)** 如果系统允许,升级Netplan到支持InfiniBand的版本。对于Ubuntu,可以使用以下命令升级: ```bash sudo apt update sudo apt install --only-upgrade netplan.io ``` 注意:升级Netplan可能会影响现有的网络配置,请谨慎操作。 **步骤5:验证配置** 无论使用哪种方法,配置后都需验证: ```bash ip addr show ib0 ping 192.168.1.1 ``` 如果使用传统配置方法,确保已安装`ifupdown`: ```bash sudo apt install ifupdown ``` 总结:由于Netplan版本问题,我们可能无法直接使用`infinibands`键。但我们可以通过将IB接口当作普通以太网接口配置(使用`ethernets`)或者回退到传统配置方式来解决。 相关问题: 1. 如何检查Netplan的版本? 2. 在Ubuntu系统中,如何升级Netplan? 3. 如何配置InfiniBand的IPoIB模式? 4. 使用传统ifupdown配置网络接口的步骤是什么?</think>### 解决 Netplan 配置 InfiniBand 时出现 "unknown key 'infinibands'" 错误 当在 Netplan 配置中出现 **"unknown key 'infinibands'"** 错误时,通常表示您的 Netplan 版本不支持原生 InfiniBand 配置。以下是逐步解决方案: --- ### 原因分析 1. **Netplan 版本过旧**: - InfiniBand 原生支持需要 Netplan ≥ 0.104(Ubuntu 20.04+ 默认包含) - 检查版本:`netplan --version`(若低于 0.104 则不支持) 2. **驱动未正确加载**: - 系统未识别 InfiniBand 设备时,Netplan 会忽略相关配置 3. **配置语法错误**: - YAML 缩进错误或键名拼写错误 --- ### 解决方案 #### ✅ 方案 1:降级使用以太网兼容模式(推荐) **原理**:将 InfiniBand 接口(如 `ib0`)当作普通以太网接口配置 ```yaml network: version: 2 renderer: networkd ethernets: # 使用 ethernets 替代 infinibands ib0: # 保持实际接口名 ib0 addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 223.5.5.5] ``` > **验证**:`ip addr show ib0` 应显示配置的 IP[^1] #### ✅ 方案 2:升级 Netplan(仅适用于旧系统) ```bash # Ubuntu 18.04 升级示例 sudo add-apt-repository ppa:netplan.io/stable sudo apt update sudo apt install --only-upgrade netplan.io ``` 升级后即可使用原生 `infinibands` 配置[^1] #### ✅ 方案 3:使用传统网络配置(兼容性方案) 通过 NetworkManager 直接配置: ```bash # 创建连接配置 sudo nmcli con add type infiniband \ con-name ib0 \ ifname ib0 \ ip4 192.168.1.10/24 \ gw4 192.168.1.1 # 设置DNS sudo nmcli con mod ib0 ipv4.dns "8.8.8.8 223.5.5.5" # 激活连接 sudo nmcli con up ib0 ``` --- ### 关键验证步骤 1. **确认驱动加载**: ```bash ibstat # 应显示 InfiniBand 设备 lsmod | grep mlx # 检查驱动(如 mlx5_core, ib_umad) ``` 2. **检查接口命名**: ```bash ibdev2netdev # 输出示例:mlx5_0 port 1 ==> ib0 (Up) ``` 3. **测试连通性**: ```bash ping 192.168.1.1 -I ib0 # 指定从 IB 接口 ping ibping -S -C mlx5_0 -P 1 # 测试 IB 层连通性 ``` --- ### 高级场景配置 #### 配置 IPoIB(IP over InfiniBand) 在 `/etc/network/interfaces` 中添加: ```bash auto ib0 iface ib0 inet static address 192.168.1.10 netmask 255.255.255.0 pre-up echo connected > /sys/class/net/ib0/mode ``` #### 配置 RDMA ```bash # 加载 RDMA 模块 sudo modprobe rdma_ucm sudo modprobe rdma_cm # 验证 RDMA ibv_devices # 应显示设备列表 ``` --- ### 故障排除表 | 现象 | 解决方案 | |------|----------| | `ib0` 接口不存在 | 运行 `sudo /etc/init.d/openibd restart` | | RDMA 测试失败 | 检查 `/etc/rdma/rdma.conf` 中的 `ONLOAD` 设置 | | 配置应用后无变化 | 使用 `sudo netplan --debug apply` 查看详细错误 | | 无法识别 Mellanox 卡 | 更新固件:`mlxup -u -d /dev/mst/mt4123_pciconf0`[^3] | > **提示**:生产环境建议使用 Ubuntu 20.04+ 或 RHEL/CentOS 8+ 以获得最佳 InfiniBand 支持。 --- ### 相关问题 1. 如何在 Ubuntu 18.04 中强制启用 InfiniBand 支持? 2. Netplan 配置 IB 接口 Bonding 的正确方法是什么? 3. 如何验证 InfiniBand 网络的 RDMA 功能是否正常工作? 4. 升级 Mellanox 固件后需要哪些额外配置步骤? 5. 在混合网络(以太网+IB)环境中如何设置路由优先级?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值