先确认硬件与驱动识别,再通过ip命令和配置文件完成增删改,最后用network-scripts或Netplan做持久化,才能让万兆网卡稳定跑满带宽。
服务器加装或更换万兆网卡,看起来是插上就能用,实际部署中经常遇到系统不识别、速率协商不到万兆、重启后配置丢失这类问题,搞懂增删网卡配置的底层逻辑,比死记硬背几行命令更管用。
配置万兆网卡前必须搞清的三个底层问题
物理链路与PCIe通道是否满足带宽需求
万兆网卡跑满速需要至少PCIe 2.0 x8或PCIe 3.0 x4的通道带宽,很多老服务器插上万兆网卡后速度只有千兆,不是网卡坏了,而是插在了PCIe x1插槽上,部署前先查看主板说明书,确认插槽规格。
一般大型数据中心常见的做法是优先使用CPU直出的PCIe插槽,避免经过PCH芯片组转发带来的延迟和带宽损耗,用lspci命令能看到网卡挂载的总线信息:
lspci | grep -i ethernet
如果显示的网卡型号带”rev”版本号,还要注意与驱动版本号的兼容关系。
驱动与固件的匹配度决定网卡能否被正确识别
Intel X520、Mellanox ConnectX-3这类老而稳的方案,在主流Linux发行版上都能直接驱动,但Mellanox ConnectX-4/5/6系列以及BCM57414等型号,部分系统内核自带的驱动版本过旧,会出现识别不到或频繁断链。
行业共识认为,部署前先用ethtool -i查看驱动版本,再到芯片厂商官网比对当前内核版本的兼容性,是避免踩坑最直接的手段。
万兆链路两端必须同时满足协商条件
万兆网卡对链路要求苛刻,光模块、光纤跳线、对端交换机端口,任何一环不达标都会降速。尤其是多模光纤搭配SR光模块的时候,OM3级别以下的光纤在长距离传输中损耗极大,跑万兆会出现明显丢包。
服务器万兆网卡怎么配置:动态增删的实操路径
添加一张新网卡的完整识别流程
假设新网卡已物理安装,当前系统是CentOS 7.9或Rocky 8,操作路径如下:
- 用
lspci -vvv确认PCIe设备已被内核枚举 - 用
dmesg | tail -20查看驱动加载日志 - 用
ip link show查看新网卡是否生成了接口名 - 如果接口名没出现,执行
echo 1 > /sys/bus/pci/rescan触发重新扫描
新接口的命名一般是ens2f0、ens2f1这种基于PCIe位置分配的名字,如果要改成传统的eth0、eth1,需要编辑/etc/default/grub,在GRUB_CMDLINE_LINUX中加入net.ifnames=0,然后重建grub配置并重启。
删除网卡配置的正确方式
很多运维直接在/etc/sysconfig/network-scripts/目录下删除ifcfg文件,然后重启网络服务,这种做法在纯动态环境下可行,但容易留下隐患。
正确做法是分三步走:
# 1. 停用接口并且移除IP地址 ip addr flush dev eno1 ip link set eno1 down # 2. 移除接口对应的udev规则 rm -f /etc/udev/rules.d/70-persistent-net.rules # 3. 清理NetworkManager连接配置 nmcli connection delete eno1
如果网卡是绑在bond接口上的,需要先解除绑定,在bond配置中移除slave接口时,务必用echo -ens2f0 > /sys/class/net/bond0/bonding/slaves的方式逐个摘除,不要直接修改ifcfg文件重启网络服务,容易出现bond主备状态错乱。
修改现有网卡IP地址和速率的工作流
万兆网卡的速率、双工模式、MTU值都可以用ethtool直接调整:
ethtool -s eno1 speed 10000 duplex full autoneg off ip link set eno1 mtu 9000
这里有个关键点:MTU值设置到9000后,如果对端交换机和目标服务器没有同时开启巨型帧,整条链路会直接不通,表现为ping小包正常、ping大包全丢,新上线万兆网卡时建议先保持1500,跑通后再逐段调整。
增删网卡配置后如何保证重启不失效
配置文件持久化才是增删网卡的精髓
动态命令只管当下,重启后一切归零,业界常用的持久化方案按系统版本有区分:
| 系统版本 | 持久化工具 | 配置文件位置 |
|---|---|---|
| CentOS 6/7 | network-scripts | /etc/sysconfig/network-scripts/ifcfg- |
| CentOS 8/RHEL 8+ | NetworkManager + nmcli | /etc/NetworkManager/system-connections/ |
| Ubuntu 18.04+ | Netplan | /etc/netplan/.yaml |
| 通用方案 | systemd-networkd | /etc/systemd/network/.network |
在CentOS 7环境中,新增一个万兆网卡的ifcfg文件,标准模板是:
TYPE=Ethernet
BOOTPROTO=none
NAME=eno1
DEVICE=eno1
ONBOOT=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DEFROUTE=yes
最容易被忽略的是NM_CONTROLLED这个参数。 如果系统里NetworkManager服务处于运行状态,而ifcfg文件里没有明确写NM_CONTROLLED=no,重启后NetworkManager可能会接管网卡配置,导致你手工写的内容被覆盖。
KMOD配置在增删场景中的特殊作用
在拔掉旧网卡、换上不同品牌新网卡的场景中,系统可能沿用旧网卡的驱动模块参数,新网卡识别异常,改完硬件后,建议检查/etc/modprobe.d/下的.conf文件,把旧网卡相关的alias和options清理掉。
对Mellanox网卡来说,mlx4_core和mlx5_core模块的参数控制着端口数量、PCIe缓存分配等底层行为,改错会导致驱动加载失败。
中小企业常见的场景:换网卡后原配置自动迁移的坑
物理更换后怎么复用原有VLAN和bond配置
一个非常实际的工作流是:服务器上原本用着两块千兆网卡做bond0,承载业务网段,现在换成两块万兆网卡,业务要求bond模式不变。
此时如果直接把新网卡的MAC地址改成旧网卡的,很多新手都会踩坑。实际上kernel的bond驱动静态绑定的是接口名,不绑定MAC,网卡换新之后,bond0仍然可以正常工作,但需要在配置前先手动把新接口从bond中踢掉并重新加入:
# 在bond0上摘除旧接口 echo -eth0 > /sys/class/net/bond0/bonding/slaves # 将新接口加入 echo +eth1 > /sys/class/net/bond0/bonding/slaves
如果新网卡被系统识别为eth2和eth3,旧的ifcfg-bond0文件里slaves项需要同步修改,同时要在ifcfg-eth1、ifcfg-eth2里写MASTER=bond0和SLAVE=yes。
删除网卡时管理接口断连的风险控制
远程连接的服务器,一旦误删了管理网卡的配置,断开就再连不上了,一个保险的做法是先用ip route show确认当前ssh连接走的是哪个接口,再进行删除操作,删除管理接口配置前,提前准备一个备用网络路径是最稳妥的。
万兆网卡驱动安装失败的故障排查清单
编译驱动时需要哪些前置条件
新内核版本和旧驱动源码之间经常因为兼容性出现编译报错,需要在系统里安装完整开发工具链:
yum install gcc make kernel-devel-$(uname -r)
编译Intel ixgbe驱动的时候会出现include/linux/if_link.h报错,这通常是内核头文件版本不匹配的问题,换个思路,直接升级内核或者用厂商最新的驱动源码,比花时间改老源码的宏定义更省事。
增删网卡后接口名混乱怎么办
同一台服务器上换过多次网卡之后,接口名会变得很杂乱原来叫eno1的变成eno3,udev规则文件是根源。
删除/etc/udev/rules.d/70-persistent-net.rules文件,然后重新生成initramfs,再重启系统即可,代价是重启后所有接口名按PCIe位置重新分配,原来写死的IP配置可能需要跟着改。
常见问题解答
服务器万兆网卡配置后协商速率只有千兆是怎么回事
大多情况下是光模块或光纤类型不匹配,先检查两端是否是10G模式,再看sensor是否支持10G SR/LR,最终可以通过ethtool eno1查看协商速率,看到1000Mb/s说明物理链路有问题,另有少数情况是PCIe插槽速率不足,查看lspci -vvv里的LnkSta字段确认。
增删网卡配置时ifcfg文件和NetworkManager冲突怎么办
如果确认要使用ifcfg文件管理网络,请将NM_CONTROLLED=no写入该文件,并且执行systemctl stop NetworkManager,反之如果继续用NetworkManager,则统一通过nmcli操作,不要混用,两者混管会导致网络重启时配置被覆盖。
万兆网卡配置成bond模式后流量不增长是什么原因
多数情况下是xmit_hash_policy设置不合理导致负载不均衡,对于万兆网卡bond,建议用mode=4(LACP)配合xmit_hash_policy=layer3+4,同时确认对端交换机链路聚合组已正确配置为动态LACP模式,如果bond口速率为10G而不是20G,说明交换机侧只开启了单个成员端口的access模式,LACP协商未成功。
万兆网卡的增删配置本质上是理解Linux网络栈如何管理设备与接口之间的映射,把物理层识别、驱动模块管理、网络配置持久化这三条线梳理清楚,就能从容应对绝大多数服务器网络的改造场景。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/581677.html




