在使用维护过程中,经常因为添加更换网卡导致网卡的顺序产生不一至的现象

1、启动流程

1)linux内核一般会在rc.sysinit里执行/sbin/udevd -d开始执行udev程序

2)执行udev的过程中会检测所有设备,并根据不同的设备来加载不同的驱动

3)加载完相应设备的驱动后,udev会收到一个该设备的内核事件,udev会根据相应的事件来匹配相应的规则,或者是执行某些脚本修改设备名重新书写规则(rules)

4)当规则生成后,当再次产生此设备的内核事件时,则首先会匹配这些规则

这里要注意udev的两点:

1)我们可以通过udev来修改任何设备的名字

2)在我们没修改名字之前,内核已经给给设备分配了名字(值得注意这点,否则修改的名字和内核给其他设备分配的名字冲突,则会修改失败)

2、不同的网卡设备

目前为止我已知的网卡有如下几种(都是intel的):

网卡型号 所用驱动

8086:1502 e1000e

8086:10d3 e1000e

8086:150e igb

8086:105e e1000e

8086:1521 igb

这只是我接触的几种网卡,不同种类的驱动对网卡端口的命名还是会有影响的

3.pci接口的bus id号

-bash-3.2# lspci -n –D grep 0200

0000:00:19.0 0200: 8086:1502 (rev 05)

0000:01:00.0 0200: 8086:150e (rev 01)

0000:01:00.1 0200: 8086:150e (rev 01)

0000:01:00.2 0200: 8086:150e (rev 01)

0000:01:00.3 0200: 8086:150e (rev 01)

0000:03:00.0 0200: 8086:105e (rev 06)

0000:03:00.1 0200: 8086:105e (rev 06)

0000:04:00.0 0200: 8086:10d3

我们通过lspci -n -D可以查看所有的连在pci接口上的设备的busid号(第一列)和设备型号(最后一列)的对应列表,这里的0200代表的是网卡设备,通过大量的实验发现,无论网口的名字(eth*)怎么变化,在同一台机器上,他们的busid号是不变的。这里的8086:1502,8086:10d3是主板自带的两个端口,8086:150e是一个4口的Intel网卡,8086:105e是一个两口的intel网卡。由此,在这一型号的机器上,这一型号的网卡上,可已通过busid号,网卡型号来固定网口名。

2、shell编写过程

  1. 查看目录/etc/udev/rules.d/70-persistent-net.rules 

问题发现:没有这个文件,自己手动创建也不好使,重启的时候不会执行

/lib/udev/write_net_rules这个脚本都不存在,应该是生成不了。

编写文件

 命名完规则之后,网卡名称和pci的对应关系地方

 

 ----------暂时未完成还差一些测试和总结,以后有机会在继续研究------------------------------

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐