我有一个Centos 7系统,我已经禁用了新的networking命名系统,并恢复到旧的系统(eth0,eth1等)。 我这样做是因为我在RDO Openstack设置中使用了这个,并且这需要在几个不同的主机上使用相同的以太网设备名称。 其中一些主机在kvm下是virt,并使用eth命名系统。
由于这样做,每一次重启,我的以太网设备翻转。
我明白,在一个健康的起动
[11.172339] tg3 0000:03:00.0 eth0:Tigon3 [partno(BCM95723)rev 5784100](PCI Express)MAC地址68:b5:99:72:d8:02
[11.269599] e1000e 0000:02:00.0 eth1 🙁 PCI Express:2.5GT / s:宽度x1)68:05:ca:04:90:16
在“坏引导”中,这些将被翻转,e1000e将为eth0,tg3为eth1。
到目前为止,我已经做了以下工作:
运行grub2-mkconfig之后,我在/boot/grub2/grub.cfg中看到以下内容(这意味着我上面的更改正在生效)
linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root = UUID = eabee081-85f8-4f33-b72a-fbbdc575e010 ro vconsole.keymap = uk crashkernel = auto vconsole.font = latarcyrheb-sun16 rhgb net.ifnames = 0 biosdevname = 0安静
70-persistent-net.rules的内容如下:
SUBSYSTEM ==“net”,ACTION ==“add”,DRIVERS ==“? ”,ATTR {address} ==“68:B5:99:72:D8:02”,ATTR {type} ==“1” ,KERNEL ==“eth ”,NAME =“eth0”
SUBSYSTEM ==“net”,ACTION ==“add”,DRIVERS ==“? ”,ATTR {address} ==“68:05:CA:04:90:16”,ATTR {type} ==“1” ,KERNEL ==“eth ”,NAME =“eth1”
我也试着把这个文件中的MAC地址中的字母改成小写来匹配dmesg的输出。 这没有什么区别。
我禁用了NetworkManager,并且在/ etc / sysconfig / network-scripts / ifcfg-eth *中有HWADDR条目。
在Ubuntu和早期版本的Centos下,上述工作正常,可靠。
尽pipe如此,CentOS 7并没有在这个盒子上带来可预测的设备。
任何有关如何将这些设备固定到eth名称的build议将非常感激!
我进一步调查,发现更多的细节。
这种不利行为的原因是内核和udev软件之间的竞争条件(开发者在bug报告中提到)。
所以udev的开发者已经决定删除ethX的可靠命名,而不是强调一个不太可预测的命名。
他们删除了允许pipe理员使用ethX接口的可靠顺序的代码,并且还添加了拒绝使用内核已经使用的任何ethX名称作为内部NIC名称的代码。
所以,如果你想使用名称eth0,eth1之类的话,看起来你不能得到可靠的sorting。
有些人build议使用像netX这样的名字。
如果你设置的ethX的X大于接口的实际数量,也可能工作。
我是原以为他find了解决scheme的海报,实际上这只是一个临时的。 经过几次testing,我发现以太网设备是随机命名的,而不是我在60-net.rules中定义的方式。
我已匿名发表原始答案,然后决定报名参加更多。 所以我很抱歉。 下面的答案实际上并没有解决原来的问题。 它为几个靴子这样做,但它不工作可靠。
我用CentOS 7的Minimal-CD取得了成功,并采取了以下策略:
我做了很多没有帮助的事情,所以我不得不改变其中的一些。
我重新安装biosdevname(删除它)。
我编辑了/ etc / default / grub,并添加了biosdevname = 0和ifnames = 0给CMDLINE。
我用grub2-mkconfig -o /boot/grub2/grub.cfg重新编译grubconfiguration
另外,我从CentOS 6.5安装中导入了以下两个文件:
/lib/udev/rules.d/75-persistent-net-generator.rules
/ LIB / udev的/ write_net_rules
(但这些可能根本没有任何作用)
然后我在/etc/udev/rules.d/中创build了一个名为60-net.rules的文件,每个NIC都有一行:
SUBSYSTEM ==“net”,ACTION ==“add”,DRIVERS ==“?*”,ATTR {address} ==“aa:bb:cc:dd:ee:ff”,ATTR {dev_id} ==“0x0 “,ATTR {type} ==”1“,NAME =”eth1“
(当然,MAC ADDRESS'aa:bb:…'必须是正确的)。
之后,我启动,它的工作。