redhat万兆和千兆的网卡命名问题

author author     2023-04-13     257

关键词:

参考技术A 新弄了一批机器,为了准备切换到万兆环境,给机器配了双千兆和双万兆混合的4接口网卡,然后就出了一点问题

centos 7 引入了网络一致化命名规则,具体可以看红帽的联网指南

主要部分摘抄如下

------------引用专用分割线----------------------------

8.1. 命名方案层级结构

默认情况下,systemd 会使用以下策略,采用支持的命名方案为接口命名:

方案 1: 如果固件或 BIOS 信息适用且可用,则使用整合了为板载设备提供索引号的固件或 BIOS 的名称(例如:eno1),否则请使用方案 2。

方案 2: 如果固件或 BIOS 信息适用且可用,则使用整合了为 PCI 快速热插拔插槽提供索引号的固件或 BIOS 名称(例如 ens1),否则请使用方案 3。

方案 3: 如果硬件连接器物理位置信息可用,则使用整合了该信息的名称(例如:enp2s0),否则请使用方案 5。

方案 4:  默认不使用整合接口 MAC 地址的名称(例如:enx78e7d1ea46da),但用户可选择使用此方案。

方案 5: 传统的不可预测的内核命名方案,在其他方法均失败后使用(例如: eth0)。

这个策略(如上所述)是默认策略。如果该系统已启用  biosdevname ,则会使用该方案。注:启用  biosdevname  需要添加 biosdevname=1 作为命令行参数(Dell 系统除外),此时只要安装  biosdevname ,就会默认使用该方案。如果用户已添加  udev  规则,该规则会更高内核设备名称,则会优先使用这些规则。

设备命名过程如下:

/usr/lib/udev/rules.d/60-net.rules 文件中的规则会让  udev  帮助工具  /lib/udev/rename_device  查看所有 /etc/sysconfig/network-scripts/ifcfg- suffix  文件。如果发现包含 HWADDR 条目的 ifcfg 文件与某个接口的 MAC 地址匹配,它会将该接口重命名为 ifcfg 文件中由 DEVICE 指令给出的名称。

/usr/lib/udev/rules.d/71-biosdevname.rules 中的规则让  biosdevname  根据其命名策略重命名该接口,即在上一步中没有重命名该接口、已安装  biosdevname 、且在 boot 命令行中将 biosdevname=0 作为内核命令给出。

/lib/udev/rules.d/75-net-description.rules 中的规则让  udev  通过检查网络接口设备,填写内部  udev  设备属性值 ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。注:有些设备属性可能处于未定义状态。

/usr/lib/udev/rules.d/80-net-name-slot.rules 中的规则让  udev  重命名该接口,优先顺序如下:ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。并提供如下信息:没有在步骤 1 或 2 中重命名该接口,同时未给出内核参数 net.ifnames=0。如果一个参数未设定,则会按列表的顺序设定下一个。如果没有设定任何参数,则不会重命名该接口。

-----------以上是红帽的联网指南-------

其实简述上面的信息就是首先看内核参数是否启用了biosdevname=1 (默认是启用),如果bios提供了设备的名称就使用bios提供的名称

如果没有,就根据网卡配置中 device=eth,em,xyz 的名字来命名这个网卡,但是如果这样命名的话,必须在配置里写死网卡的mac地址

作为网卡的识别标志,对单网卡当然没什么问题,但是如果在集群环境里,HA,以及bonding环境里,为了快速切换网络流量,往往要屏蔽mac,

使用虚拟mac,或者多块网卡使用一个mac地址,这个时候需要在配置文件里屏蔽mac地址,因此就需要区改udev的配置文件来解决

我所遇到的问题是,使用了biosdevname=0和 net.ifnames=0 参数后,(因为以前有大量的centos6的机器,为了移植方便,不使用一致性命名规则,网卡名依然是eth0,eth1.。。。)安装服务器时一切正常,但启动系统后,发现系统将插在第一个端口的网卡认为是eth2,和预期不符,本能的认为udev可以解决问题,于是添加了udev的规则

```

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRaddress=="24:6e:96:ac:a1:xa", ATTRtype=="1", KERNEL=="*", NAME="eth0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRaddress=="24:6e:96:ac:a1:xb", ATTRtype=="1", KERNEL=="*", NAME="eth1"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRaddress=="24:6e:96:ac:a1:xc", ATTRtype=="1", KERNEL=="*", NAME="eth2"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRaddress=="24:6e:96:ac:a1:xd", ATTRtype=="1", KERNEL=="*", NAME="eth3"

```

发现不起作用,,难道写错了?换个规则,用pci设备号去绑定

SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", SUBSYSTEM=="pci", KERNELS===="0000:01:00.0", NAME="eth0"

依然没用

用下面的命令debug一下

udevadm test /sys/class/net/eth0

结果缩略如下

rules contain 49152 bytes tokens (4096 * 12 bytes), 13451 bytes strings

2076 strings (25677 bytes), 1399 de-duplicated (12904 bytes), 678 trie nodes used

NAME 'eth2' /etc/udev/rules.d/60-net.rules:6

IMPORT builtin 'net_id' /usr/lib/udev/rules.d/75-net-description.rules:6

IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/75-net-description.rules:12

IMPORT builtin 'path_id' /usr/lib/udev/rules.d/80-net-setup-link.rules:5

IMPORT builtin 'net_setup_link' /usr/lib/udev/rules.d/80-net-setup-link.rules:9

No matching link configuration found.

RUN '/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name' /usr/lib/udev/rules.d/99-systemd.rules:55

Error changing net interface name 'eth0' to 'eth2': File exists

could not rename interface '2' from 'eth0' to 'eth2': File exists

created db file '/run/udev/data/n2' for '/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0'

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0

ID_BUS=pci

ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X540/I350 rNDC)

粗体看到原来是设备已经存在,无法重命名,于是想到的重新加载驱动

modprobe -rv igb

modprobe -rv ixgbe

然后按顺序加载驱动

modprobe ixgbe

modprobe  igb

终于可以看到效果了,不过重启就完蛋了

于是想是否可以调整驱动加载顺序?

找了半天文档,发现可以通过重新打包内核启动文件和编译内核两条路实现,不过这显然又增加了很多麻烦,总不能升级一次内核,就重新打一次包吧

看看其他方法。最好发现简单的方法就是修改启动内核的参数 将 biosdevname=0和net.ifnames=0 改为 biosdevname=0和net.ifnames=1 ,这样系统启动时,会按照上述一致性命名规则,重新命名网卡,可以预期的是,已dell板载网卡为例,网卡会依次命名为eno1,eno4,等等,然后再加载udev规则,按照udev规则,再次重新命名为我们期望的eth0,eth1,等等

当然配置文件可以用ansible搞定,我这里的模版内容就是

ifcfg-eth0.j2

------

NAME="eth0"

DEVICE="eth0"

ONBOOT=yes

HWADDR=" hostvars[inventory_hostname].ansible_eth1.macaddress "

NETBOOT=yes

IPV6INIT=no

BOOTPROTO=static

TYPE=Ethernet

----------

这样udev 规则就生效了,其实就是启动过程中,当上述两个参数全为0时,网络设备只能叫ethx,先加载的驱动抢占了eth0和eth1时,(我这里是千兆的设备驱动 igb先启动)后起的设备想按udev规则rname时,发现eth0,和eth1 已经被占据了,因此命名失败,所以深入理解启动顺序和动作其实还是蛮重要的

参考链接  https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_device_renaming_procedure

红帽知识库文章引用如下

千兆网卡与万兆网卡的区别在哪?

...xff0c;今天我们来简单的说一下用户最为关注的千兆网卡与万兆网卡之间有什么区别。1、网卡芯片一般网卡大多数采用的是intel芯片,常规情况下而千兆网卡与万兆网卡所采用的芯片不同,所以网卡的功能也不一样。例如... 查看详情

服务器标配万兆网口,没有千兆网口怎么办

服务器标配万兆网口,没有千兆网口怎么办1.当前电脑使用的网卡不支持1000m宽带,因此会出现此提示,要求更换网卡,用1000m网卡更换旧网卡。2.解决方案:(1)更换千兆网卡,或再次购买带usb接口的外部千兆网卡。(2)买一个带pci插... 查看详情

linux服务器使用的是千兆网卡还是万兆网卡

参考技术A板载的是千兆,PCIE的网卡是万兆。 参考技术Bethtool网络接口名#ethtoolem4Settingsforem4:Supportedports:[TP]Supportedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/FullSupportsauto-negotiation:YesAdvertisedlinkmodes:10baseT/Half10baseT/Full 参... 查看详情

解决esxi6.0识别不到万兆网卡问题

...配器仅有两个千兆,而R940配置了4个网卡,2个千兆,两个万兆;在ESXI的SSH中通过lspci也只能看到两块千兆网卡;  咨询DELL售后服务,通过BIOS可以查看到4个网卡,说明是驱动问题,经了解需要去vmware官网下载相关驱动,然... 查看详情

万兆网卡用千兆路由器连不上网,怎么回事

参考技术A可以将千兆交换机作为中继。我曾经在百兆路由器下用千兆交换机扩展端口,结果,接在千兆交换机上的千兆设备都工作在千兆状态。 查看详情

linux查看网卡是千兆还是万兆网卡

目前用过的两个命令:1、ethtoolethtool网络接口名#ethtoolem4Settingsforem4:Supportedports:[TP]Supportedlinkmodes:10baseT/Half10baseT/Full100baseT/Half100baseT/Full1000baseT/FullSupportsauto-negotiation:YesAdvert 查看详情

千兆/万兆单向传输网卡

单向传输网卡一种计算机网络的单向传输网关,属于计算机网络技术领域。它包括发送方以太网光纤卡、接收方以太网光纤卡以及连接它们的网络光纤线。发送方以太网光纤卡的模块只有发送端口。接收方以太网光纤卡的模块只... 查看详情

网咖万兆网卡的使用

现在网吧的另一个重要趋势是万兆带宽,目前电脑游戏的容量都非常大,动辄几十GB的下载量,仅靠以往的千兆光纤是难以支撑起一个大型网吧庞大的下载量的。千兆网卡瓶颈就突显,现在网吧实行无盘网吧,实行的手段即是用网... 查看详情

万兆网卡该如何选择,我来告诉你

...网卡速率翻了100倍。当然现在市场上更为普及的是千兆和万兆网卡。不过由于市场上万兆网卡类型和厂家种类繁多,这使得用户在购买网卡的时候举棋不定,不知道该怎么选择。那今天小编就来跟大家从芯片、端口、网... 查看详情

bidi千兆模块和万兆的介绍

...,其最大的优势就是节省光纤资源。那么BiDi千兆模块和万兆的有什么区别呢?BiDi千兆光模块的传输速率是1. 查看详情

双网卡绑定

...0;操作前提:确定该物理机有双网卡,如果是要接千兆网/万兆网,必须确定该物理机有对应的网卡。操作步骤:1、首先确定网卡已经接好线:#ifconfig命令或#ipaddr命令,查看现在网卡名称和对应ip2、进目录/etc/sysconfig/network-scripts#... 查看详情

查看网卡信息

查看网卡是千兆网卡还是万兆网卡lspci-vvv|grepEthernet千兆网卡Gigabit(万兆网卡显示为10-Gigabit)出来几行代表几块网卡具体查看每块网卡信息本文出自“砖家博客”博客,请务必保留此出处http://wsxxsl.blog.51cto.com/9085838/1943625 查看详情

联瑞揭秘新款100g以太网卡神秘面纱

...已无法满足部分用户对于网速的要求,尽管用户可以采用万兆网卡来提供更高的带宽,但万兆网卡价格昂贵,且极易造成网络数据带宽资源浪费,所以无法成为部分用户改善网速的首选。为解决这一问题,业界提出采用2.5G网卡... 查看详情

联瑞揭秘新款100g以太网卡神秘面纱

...已无法满足部分用户对于网速的要求,尽管用户可以采用万兆网卡来提供更高的带宽,但万兆网卡价格昂贵,且极易造成网络数据带宽资源浪费,所以无法成为部分用户改善网速的首选。为解决这一问题,业界提出采用2.5G网卡... 查看详情

万兆网卡传输速度

...之间的连接,解决Intranet模式中服务器网卡的瓶颈问题,万兆网卡是传输速率为10G通讯量的网卡,而光纤网卡的选择应根据服务器或工作站的带宽需求并结合物理传输介质所能提供的最大传输速率来选择网卡的传输速率。网卡不... 查看详情

联瑞网卡获得银河麒麟操作系统适配认证证书

...1日,LR-LINK联瑞推出的国产千兆光纤网卡和intel主控的万兆光纤网卡获得与银河麒麟操作系统适配认证证书,这是公司继7月获得统信(UOS)操作系统兼容性认证之后,再次获得国家另一权威国产操作系统适配认... 查看详情

网络设备基本命名规则

...。例如5720。这个5表示下行接口速率为千兆;如果是6表示万兆;如果是3或2表示百兆,3是三层2是二层数字后接字母S:表示交换机为分销型号;如果是I:表示交换机为宽温交换机P:表示上行接口为交换机上固定的千兆光口X:表... 查看详情

万兆网卡使用注意事项

...速发展,科技的快速提升和大数据时代的普及,万兆网络正在快步进入人们的生活。使用万兆网卡的人越来越多,也受到较多用户的青睐。那在使用万兆网卡时我们应该注意那些事项呢?​下面我来说一下应该注... 查看详情