1)现象说明
公司IDC机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登陆服务器,发现网卡绑定及ip信息都在,可是ip却ping不通了,进一步排查,重启网卡,提示以前的eth0和eth1网卡设备发现不了了,也就是说服务器主板更换后,以前的网卡设备都识别不了了!html
主板更换后,重启并登录服务器,发现以前的网卡设备(eth0、eth一、eth二、eth3)都没有了! [root@kevin01 ~]# 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:75582 errors:0 dropped:0 overruns:0 frame:0 TX packets:58537 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5890233 (5.6 MiB) TX bytes:4390537 (4.1 MiB) 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) usb0 Link encap:Ethernet HWaddr 0A:94:EF:5E:AE:79 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) 以前的网卡设备和bond绑定的配置信息都还在(bond绑定网卡操做:http://www.cnblogs.com/kevingrace/p/7966511.html) [root@kevin ~]# cd /etc/sysconfig/network-scripts/ [root@kevin network-scripts]# ls ifcfg-bond0 ifcfg-lo ifdown-ib ifdown-ppp ifup-aliases ifup-ipv6 ifup-ppp init.ipv6-global ifcfg-eth0 ifcfg-usb0 ifdown-ippp ifdown-routes ifup-bnep ifup-isdn ifup-routes net.hotplug ifcfg-eth1 ifdown ifdown-ipv6 ifdown-sit ifup-eth ifup-plip ifup-sit network-functions ifcfg-eth2 ifdown-bnep ifdown-isdn ifdown-tunnel ifup-ib ifup-plusb ifup-tunnel network-functions-ipv6 ifcfg-eth3 ifdown-eth ifdown-post ifup ifup-ippp ifup-post ifup-wireless [root@kevin ~]# /etc/init.d/network restart ...... 报错说没有发现eth0和eth1网卡 [root@kevin ~]# ipdown eth0 报错提示说没有发现eth0网卡
2)产生缘由
这是由于服务器更换了主板或网卡,mac地址改变所致使的。系统加载网卡驱动后会去读一个文件(即/etc/udev/rules.d/70-persistent-net.rules),这个文件是一个缓冲文件,包含了网卡的mac地址,由于更换了主板,网卡的mac地址也变了,可是这个文件的mac地址还没变,仍是以前坏了的主板的上面的网卡的MAC地址,这样系统在加载网卡,读取这个文件的时候读取的是以前网卡的mac地址,和如今更换后主板后的网卡mac地址不一致致使混乱,因此就识别不了当前网卡;bash
3)解决办法服务器
通常来讲,删除/etc/udev/rules.d/70-persistent-net.rules文件(或者把这个文件从新命名 或者 清空该文件内容),重启服务器就能够解决了,重启后会从新生成这个文件, 这样就顺利解决这个问题了!这里注意下,因为个人这台服务器绑定了网卡,因此重启网卡后,还须要进行modprobe命令使得网卡绑定生效,大体步骤以下: # mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.bak20180307 # init 6 重启服务器后,查看/etc/udev/rules.d/70-persistent-net.rules文件,发现没有eth0、eth一、eth三、eth4的网卡信息(mac和设备名称) [root@kevin network-scripts]# 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}=="****", ATTR{type}=="1", KERNEL=="eth*" # PCI device 0x14e4:0x1657 (tg3) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="****", ATTR{type}=="1", KERNEL=="eth*" # PCI device 0x14e4:0x1657 (tg3) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="****", ATTR{type}=="1", KERNEL=="eth*" # PCI device 0x14e4:0x1657 (tg3) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="****", ATTR{type}=="1", KERNEL=="eth*" 而后重启网卡等操做 [root@kevin ~]# modprobe bonding [root@kevin ~]# /etc/init.d/network restart [root@kevin ~]# modprobe bonding 接着ifconfig查看,发现eth0、eth一、eth二、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) usb0 Link encap:Ethernet HWaddr 0A:94:EF:5E:AE:79 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) 在查看/etc/udev/rules.d/70-persistent-net.rules文件,发现eth0、eth一、eth二、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的名字不一样;less