如何使用 ethtool 在 Rocky Linux 中查看并更改网络接口的链路速率?

问题浏览数Icon
3
问题创建时间Icon
2025-06-04 07:21:00
作者头像
mingri09

在Rocky Linux中使用ethtool管理网络接口链路速率时,需遵循以下实践流程及注意事项:

  1. 查看链路状态

    ethtool eth0 | grep -E 'Speed|Duplex|Auto-negotiation'

    重点关注Speed字段,若显示'Unknown'可能表示驱动未正确识别物理层状态。实践中发现某些Intel X520网卡在虚拟化场景下会误报速率,需通过dmesg检查内核是否抛出'link is renegotiated'警告。

  2. 强制设置速率(需root权限)

    ethtool -s eth0 speed 1000 duplex full autoneg off

    关键挑战

    • Mellanox ConnectX-4以上网卡要求speed必须为25/40/50/100等特定值,强制设置千兆会导致ENOTSUPP错误
    • Broadcom网卡需保持autoneg on才能生效,与Intel网卡行为相反
    • 虚拟化场景中VMXNET3虚拟网卡不支持速率限制,需在ESXi主机端通过Traffic Shaping实现
  3. 配置持久化 在/etc/NetworkManager/dispatcher.d/99-ethtool中写入:

    if [[ "$1" == "eth0" && "$2" == "up" ]]; then
     /sbin/ethtool -s eth0 speed 1000
    fi

    实践中发现systemd-networkd与NetworkManager并存时可能触发多次配置,需添加状态锁文件避免竞态条件。

  4. 链路验证 使用ethtool -S eth0 | grep crc检查物理层错误计数,数据中心场景下CRC错误激增可能表明协商速率与物理线路质量不匹配。

典型故障案例:某次将Cisco Nexus 9000交换机端口强制为10G Full Duplex后,与之直连的Rocky Linux服务器因未关闭autoneg导致持续生成LINK_CHANGE事件,最终触发内核soft lockup。解决方案是同时在交换机和主机端禁用自动协商,并通过watch -n1 'ethtool eth0'实时监控协商状态。

更多回答

作者头像
hongling09

作为IT架构师,建议通过以下步骤使用ethtool管理Rocky Linux网络接口链路速率:

  1. 查看链路状态

    sudo ethtool eth0

    查看"Speed"字段确认当前速率,"Supported link modes"显示设备支持的模式。

  2. 临时修改速率

    sudo ethtool -s eth0 speed 1000 duplex full autoneg off

    需注意:

    • 需关闭自动协商(autoneg off)
    • 需同时指定speed/duplex
    • 需网卡驱动支持手动配置
  3. 持久化配置: 创建/etc/NetworkManager/dispatcher.d/99-ethtool脚本,添加接口配置 或通过systemd link文件配置

  4. 风险提示

    • 错误配置可能导致链路中断
    • 需确保交换机和设备端速率一致
    • 建议在变更前测试支持模式

建议优先通过网卡厂商管理工具(如Intel的ice驱动)进行高级配置,生产环境变更前应在测试环境验证。