上周日,深圳宝安某客户的集群服务器在关机断电重启后,发现唯一的一个登陆节点主板出现了故障,以致于 log 登陆节点的 Red Hat Enterprise 6 系统无法启动。
由于集群是客户生信所有分析工作的基础,用户所用的 IBM LSF 集群一共有 30 多个计算节点,其中还包括了 2 个大内存 fat 节点,log 节点挂掉后,整个生信部门几十号人的工作都没法正常进行,情况可谓是非常紧迫。负责硬件的同事联系到我们,经过现场更换主板,终于可以把系统启动起来,但是问题也来了.......
主板更换后,重启并登陆服务器,发现之前的网卡设备(eth0、eth1、eth2、eth3)都没有了!(应该是由于硬件mac地址改变后无法匹配系统网卡配置文件中的信息导致)
之前的网卡设备和 bond 绑定的配置信息都还在
1:原因
这是因为服务器更换了主板或网卡,mac 地址改变所导致的。系统加载网卡驱动后会去读一个文件(即 /etc/udev/rules.d/70-persistent-net.rules
),这个文件是一个缓冲文件,包含了网卡的 mac 地址,因为更换了主板,网卡的 mac 地址也变了,但是这个文件的 mac 地址还没变,还是之前坏了的主板的上面的网卡的 MAC 地址,这样系统在加载网卡,读取这个文件的时候读取的是之前网卡的 mac 地址,和现在更换后主板后的网卡 mac 地址不一致导致混乱,所以就识别不了当前网卡。
$ mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.bak20241030
重启服务器后,查看 /etc/udev/rules.d/70-persistent-net.rules
文件,发现没有 eth0、eth1、eth3、eth4 的网卡信息(mac 和设备名称)
然后重启网卡
[root@kevin ~]# modprobe bonding
[root@kevin ~]# /etc/init.d/network restart
[root@kevin ~]# modprobe bonding
接着 ifconfig
查看,发现 eth0、eth1、eth2、eth3 网卡设备都能识别了
[root@kevin ~]# ifconfig -a
bond0 Link encap:Ethernet HWaddr 08:94:EF:5E:AE:72
inet addr:192.168.10.20 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::a94:efff:fe5e:ae72/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:108809 errors:0 dropped:0 overruns:0 frame:0
TX packets:84207 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8471111 (8.0 MiB) TX bytes:6322341 (6.0 MiB)
eth0 Link encap:Ethernet HWaddr 08:94:EF:5E:AE:72
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:38051 errors:0 dropped:0 overruns:0 frame:0
TX packets:14301 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2869726 (2.7 MiB) TX bytes:944276 (922.1 KiB)
Interrupt:16
eth1 Link encap:Ethernet HWaddr 08:94:EF:5E:AE:72
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:69158 errors:0 dropped:0 overruns:0 frame:0
TX packets:68615 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5469647 (5.2 MiB) TX bytes:5279012 (5.0 MiB)
Interrupt:17
eth2 Link encap:Ethernet HWaddr 08:94:EF:5E:AE:74
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:16
eth3 Link encap:Ethernet HWaddr 08:94:EF:5E:AE:75
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:17
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:26 errors:0 dropped:0 overruns:0 frame:0
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1983 (1.9 KiB) TX bytes:1983 (1.9 KiB)
在查看 /etc/udev/rules.d/70-persistent-net.rules
文件,发现 eth0、eth1、eth2、eth3 网卡及其 mac 地址信息都有了
[root@kevin ~]# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x14e4:0x1657 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:94:ef:5e:ae:75", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
# PCI device 0x14e4:0x1657 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:94:ef:5e:ae:72", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x14e4:0x1657 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:94:ef:5e:ae:73", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x14e4:0x1657 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:94:ef:5e:ae:74", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
接着尝试 ping
其他机器
[root@kevin ~]# ping 192.168.10.23
PING 192.168.10.23 (192.168.10.23) 56(84) bytes of data.
64 bytes from 192.168.10.23: icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from 192.168.10.23: icmp_seq=2 ttl=64 time=0.016 ms
64 bytes from 192.168.10.23: icmp_seq=3 ttl=64 time=0.016 ms
如果 ping
不通的话,多执行下面命令
[root@kevin ~]# modprobe bonding
温馨提示:有时候重启后还是出现以上情况,对比之前的 /etc/udev/rules.d/70-persistent-net.rules
文件,新的文件 mac 地址和 name 已经改变,name=eth0 和之前 name=em1 的名字不同
如果你的服务器有 4 个网卡,重启后对比之前的 /etc/udev/rules.d/70-persistent-net.rules
文件,发现新文件 mac 地址和 name 已经改变,name 变成了 name=eth4,name=eth5,name=eth6,name=eth7,这也是正常的。使用 ifconfig -a
命令也是同样的道理。
此外,如果你在 /etc/sysconfig/network-scripts/
中分别使用 ifcfg-eth0、ifcfg-eth1、ifcfg-eth2、ifcfg-eth3 对四个网卡进行 IP、网关等做了绑定,你需要:
分别把这四个文件名改为 ifcfg-eth4、ifcfg-eth5、ifcfg-eth6、ifcfg-eth7,并把其中的 MAC 地址(HWADDR)改为对应的新 MAC 地址;
或者,把 /etc/udev/rules.d/70-persistent-net.rules
文件中的 name 分别改成 name=eth0,name=eth1,name=eth2,name=eth3,同时修改 ifcfg-eth0、ifcfg-eth1、ifcfg-eth2、ifcfg-eth3 文件中对应的 MAC 地址(HWADDR);
重启网络服务。
编辑:陈平安
审核:宁姚
Copyright ©2017-2024 东莞市冠峰计算机科技有限公司 版权所有 粤ICP备2024331946号