在Rocky Linux中使用ethtool管理网络接口链路速率时,需遵循以下实践流程及注意事项:
-
查看链路状态
ethtool eth0 | grep -E 'Speed|Duplex|Auto-negotiation'
重点关注Speed字段,若显示'Unknown'可能表示驱动未正确识别物理层状态。实践中发现某些Intel X520网卡在虚拟化场景下会误报速率,需通过dmesg检查内核是否抛出'link is renegotiated'警告。
-
强制设置速率(需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实现
-
配置持久化
在/etc/NetworkManager/dispatcher.d/99-ethtool中写入:
if [[ "$1" == "eth0" && "$2" == "up" ]]; then
/sbin/ethtool -s eth0 speed 1000
fi
实践中发现systemd-networkd与NetworkManager并存时可能触发多次配置,需添加状态锁文件避免竞态条件。
-
链路验证
使用ethtool -S eth0 | grep crc
检查物理层错误计数,数据中心场景下CRC错误激增可能表明协商速率与物理线路质量不匹配。
典型故障案例:某次将Cisco Nexus 9000交换机端口强制为10G Full Duplex后,与之直连的Rocky Linux服务器因未关闭autoneg导致持续生成LINK_CHANGE事件,最终触发内核soft lockup。解决方案是同时在交换机和主机端禁用自动协商,并通过watch -n1 'ethtool eth0'
实时监控协商状态。