上周日,由于断电,公司所在的集群服务器在关机断电重启后,发现唯一的一个登陆节点主板出现了故障,以致于 log 登陆节点的 Red Hat Enterprise 6 系统无法启动。


由于集群是生信所有分析工作的基础,我们所用的 IBM LSF 集群一共有 30 多个计算节点,其中还包括了 2 个大内存 fat 节点,log 节点挂掉后,整个生信部门几十号人的工作都没法正常进行,情况可谓是非常紧迫。负责硬件的同事在加班加点联系供应商更换主板后,终于可以把系统启动起来,但是问题也来了:

  • 系统启动后一直提示 "Network is unreachable" 错误,log 无法跟计算、管理、存储等节点进行网络连接。

  • 供应商负责硬件更换后就走人了,系统层面各种服务还是需要自己去解决。

这个文章主要参考散尽浮华(高级 Linux 运维工程师)在博客园的相关文章,对 Linux 服务器更换主板后,网卡识别失败的处理进行一下记录与分享,希望对大家有用。

1. 现象说明

公司 IDC 机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登录服务器,发现网卡绑定及 ip 信息都在,但是 ip 却 ping 不通了,进一步排查,重启网卡,提示之前的 eth0 和 eth1 网卡设备发现不了了,也就是说服务器主板更换后,之前的网卡设备都识别不了了!

主板更换后,重启并登陆服务器,发现之前的网卡设备(eth0、eth1、eth2、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 绑定网卡操作:《
Linux下绑定网卡的操作记录》)。

[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 地址不一致导致混乱,所以就识别不了当前网卡。

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、eth1、eth3、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、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)

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、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 的名字不同;

作者:散尽浮华(本文已经原作者同意授权转载)
原文:https://www.cnblogs.com/kevingrace/p/8524664.html

4. 后话

如果你的服务器有 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);

  • 重启网络服务。

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

Linux 服务器更换主板后,网卡识别失败的处理方法的更多相关文章

  1. linux 服务器更主板后无法识别网卡处理过程

    linux 服务器更主板后无法识别网卡处理过程   服务器故障报修,主板坏,更换主板后无法识别网卡,ifconfig 查看只显示:lo loopback 127.0.0.1. 系统加载网卡驱动后会去读 ...

  2. Linux服务器更换主板后,网卡识别失败的处理方法

    1)现象说明公司IDC机房里的一台线上服务器硬件报警,最后排查发现服务器主板坏了,随即联系厂商进行更换主板,最后更换后,登录服务器,发现网卡绑定及ip信息都在,但是ip却ping不通了,进一步排查,重 ...

  3. HP服务器更换主板前后的注意事项

    问题 X86服务器免不了会出现故障,以我们实验室使用的HP服务器为例,已经有几台因为各种故障更换过主板了,更换主板前后有些事情需要我们应该注意或处理, 这里记录如下,其中第二.三点是针对我们所使用的C ...

  4. Linux服务器被入侵后的处理过程(转发阿良)

    Linux服务器被入侵后的处理过程   突然,频繁收到一组服务器 ping 监控不可达邮件,赶紧登陆 zabbix 监控系统查看流量状况. 可见流量已经达到了 800M 左右,这肯定不正常了,马上尝试 ...

  5. HP Gen8,9 型号系列服务器更换主板

    更换主板前,记下如下信息,根据具体情况用于更换后的设置用.1.S/N (其实主机箱上会写有,更换后重置)2.ProductID (其实主机箱上会写有,更换后重置)3.iLO IP地址或者MAC地址(根 ...

  6. ssh连接linux服务器只显示-bash-4.1#不显示路径解决方法

    ssh连接linux服务器只显示-bash-4.1#不显示路径时,我们只需要修改  ~/.bash_profile文件,如果不存在这个文件,那么新建一个,增加内容  export PS1='[\u@\ ...

  7. Openfire 服务器更换ip后的恢复方法

    如果你的服务器名称和mysql的地址都是使用的静态ip地址配置的,更改ip后,openfire就会开启失败,这种情况下请看下面的解决方法. 比如你的ip地址由 192.168.0.111 改为192. ...

  8. linux服务器中Apache隐藏index.php失败

    可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考: [Apache] httpd.conf配置文件中加载了mod_rewrite.so模块 AllowOverride ...

  9. [ Linux ] 服务器更换硬盘

    服务器型号:ThinkServer RD650操作系统:Red Hat 6.7业务用途:生产环境监控机 接到机房邮件通知,告知某台服务器硬盘告警,并提供了设备SN号和机柜位置.根据提供想相关信息找到对 ...

  10. Linux服务器被入侵后的处理过程

    突然,频繁收到一组服务器 ping 监控不可达邮件,赶紧登陆 zabbix 监控系统查看流量状况. 可见流量已经达到了 800M 左右,这肯定不正常了,马上尝试 SSH 登陆系统,不幸的事,由于网络堵 ...

随机推荐

  1. C#中的数据字典Dictionary

    前言 今天上午和往常一样在网上冲浪,看到码甲哥微信群里面在聊一个面试题,比较有意思,这里简单分享下结论中的Dictionary字典. 有50w个int类型的数字,现在需要判断一下里面是否存在重复的数字 ...

  2. Solon Initializr v1.2 发布

    Solon Initializr 是 Solon 框架的模板生成器项目.本期更新增加了快捷组合包的依赖选择,并生成对应的项目模板. 更新说明 增加 Solon Lib 依赖选择,并生成对应项目 增加 ...

  3. selenium中处理验证码问题1-获取验证码图片

    selenium中处理验证码问题: 验证码: 基本作用:可以实现当前访问页面的数据安全性.还可以减少用户的并发数:实现大流量的分流 类型:1.纯数字.纯字母 2.汉字组合 3.数学运算题 4.滑动 5 ...

  4. 基于SqlSugar的开发框架循序渐进介绍(25)-- 基于SignalR实现多端的消息通讯

    基于ASP.NET Core SignalR 可以实现客户端和服务器之间进行即时通信.本篇随笔介绍一些SignalR的基础知识,以及结合对SqlSugar的开发框架的支持,实现SignalR的多端处理 ...

  5. .NET Exceptionless 本地部署踩坑记录

    仅已此文记录 Exceptionless 本地部署所遇到的问题 1.安装ElasticSearch文本 执行elasticsearch目录中的elasticsearch.bat 没有执行成功. 使用命 ...

  6. Springboot集成MyBatis进行开发

    引入相关的依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifact ...

  7. 万字长文,带你彻底搞懂 HTTPS(文末附实战)

    大家好,我是满天星,欢迎来到我的技术角落,本期我将带你一起来了解 HTTPS. 前言 其实网上写 HTTPS 的文章也不少了,但是不少文章都是从原理上泛泛而谈,只讲概念,没有讲原因,作为小白,看完还是 ...

  8. 通过命令快速找到python的路径

    查询Python 首先我们需要知道Python安装路径,可以在命令行中逐行执行下面代码 python3 import sys sys.executable

  9. 使用Java接入小程序订阅消息!

    更新完微信服务号的模板消息之后,我又赶紧把微信小程序的订阅消息给实现了!之前我一直以为微信小程序也是要企业才能申请,没想到小程序个人就能申请. 消息推送平台推送下发[邮件][短信][微信服务号][微信 ...

  10. 开心档之MySQL 序列使用

      MySQL 序列使用 MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将 ...