在我的超算集群里,有台服務器故障報修,主板壞了,更換主板后,無法識別網卡,用命令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