在我的超算集群里,有台服务器故障报修,主板坏了,更换主板后,无法识别网卡,用命令ifconfig -a 查看只显示lo loopback 127.0.0.1,以及eth7,eth8,eth9等没有网卡的信息,如此的话,导致服务器和集群别的节点服务器都无法ping通
原因和解决办法:
系统加载网卡驱动后会去读一个文件,这个文件是一个缓冲文件,包含了网卡的mac地址,因为更换了主板,网卡的mac地址也变了,但是这个文件的mac地址还没变,还是之前坏了的主板的上面的网卡的MAC地址,这样系统在加载网卡,读取这个文件的时候读取的是之前网卡的mac地址,和现在更换后主板后的网卡mac地址不一致导致混乱,所以就识别不了当前网卡;
这个文件就是:/etc/udev/rules.d/70-persistent-net.rules,把这个文件删除后(或者把这个文件重新命名)重启服务器就可以解决了,重启后会重新生成这个文件;
注意:有时候重启后还是出现以上情况,对比之前的文件,新的文件mac地址和name已经改变,name=eth0,和之前name=em1的名字不同;
操作:ifconfig eth0 down
然后编辑:vi /etc/sysconfig/network-scripts/ifcfg-eth0
重启网卡:service network restart
注意:更换主板后,ipmi的信息也变了,要在开机bios的BMC 网络管理模块更改成之前的ipmi地址
主机网卡启动失败的原理:
CentOS系统启动的时候,会探测网卡MAC地址并写入/etc/udev/rules.d/70-persistent-net.rules,例如前文的就是 "00:50:56:8c:19:a6", 它对应的网卡接口是eth0. 网卡文件/etc/sysconfig/network-scripts/ifcfg-eth0 , DEVICE=eth0 对应的同样是 00:50:56:8C:19:A6 .所以 ifcfg-eth0 和 70-persistent-net.rules 两个文件中的eth0和MAC地址映射关系是一样的.
vmware或vSphere克隆操作系统,会给网卡分配一个新MAC地址,比如新MAC是 01:50:56:8C:19:A6. 那么原来的"00:50:56:8c:19:a6"已经不复存在了. 操作系统启动以后探测到这个MAC地址后继续写入70-persistent-net.rules文件中,并按照eth0,eth1,eth2的顺序依次来命名. 原来已经存在eth0. 所以新MAC地址 01:50:56:8C:19:A6 则会对应eth1. 但是 ifcfg-eth0 对应的是HWADDR地址 00:50:56:8C:19:A6 (旧). 这是导致网卡启动失败原因, 因为MAC地址和eth0的对应关系就错乱了. 因此, 70-persistent-net.rules的MAC和eth0的对应关系和 ifcfg-eth0文件中的HWADDR 和eth0的对应文件保持一致, 那么网络启动就没有问题. 需要注意的一点就是MAC地址要以70-persistent-net.rules文件的为基准, ifcfg-eth0的 HWADDR 只是方便人查看的.
所以, 注释 70-persistent-net.rules 的内容是为了系统在启动的时候探测到新MAC地址并对应eth*时, 保持从eth0起始命名的顺序. 而注释 ifcfg-eth0 的 HWADDR 是为了使ifcfg-eth0 可以映射任意的新MAC而并非固定一个. 所以 系统启动后的, 新MAC -> eth0 -> ifcfg-eth0 .
VMware/vSphere中新安装好的虚拟机把以下两个文件添加注释后,即可转换为虚拟机模板
添加注释
[root]# cat /etc/udev/rules.d/70-persistent-net.rules
# SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:8c:19:a6", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# 注释此行 SUBSYSTEM
[root]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# HWADDR=00:50:56:8C:19:A6
# 注释此行 HWADDR
# 注释 UUID
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static/dhcp
IPADDR=192.168.83.127
NETMASK=255.255.255.0
GATEWAY=192.168.92.254