linux网卡名称乱编,小斗CentOS7.x网卡名称错乱、及网卡启动失败。
本帖最后由 Zack 于 2018-5-31 13:39 編輯
最近在搞CentOS7裝機的事情,在此記錄期間遇到關于網卡方面的坑,整理分享下,以免大家繼續再踩。
一、在CentOS7默認裝完系統之后網卡名稱一改之前的名稱習慣,網卡名稱為enoxxxxx(之前命名規則為eth0-ethxxx)如下圖
這種命名規則讓習慣了ethxxx的同學很不習慣,對于業務其他方面也會有很大的影響,如對機器網卡監控方面,os每次裝機升成的網卡名字不同,則沒有辦法對所有機器的網卡監控做統一,網卡識別起來不直觀等(這尼瑪很坑爹啊!)。對此我們通過udev對網卡進行了命名綁定(udev詳解綁定自行google吧。),步驟如下:
cd /etc/udev/rules.d/
創建 70-persistent-net.rules
對網卡進行名稱綁定
echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"$(ifconfig eth0|grep ether|awk '{print $2}')\", ATTR{type}==\"1\", KERNEL==\"eth*\", NAME=\"eth0\"" >/etc/udev/rules.d/70-persistent-net.rules
echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"$(ifconfig eth1|grep ether|awk '{print $2}')\", ATTR{type}==\"1\", KERNEL==\"eth*\", NAME=\"eth1\"" >>/etc/udev/rules.d/70-persistent-net.rules
echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"$(ifconfig eth2|grep ether|awk '{print $2}')\", ATTR{type}==\"1\", KERNEL==\"eth*\", NAME=\"eth2\"" >>/etc/udev/rules.d/70-persistent-net.rules
echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"$(ifconfig eth3|grep ether|awk '{print $2}')\", ATTR{type}==\"1\", KERNEL==\"eth*\", NAME=\"eth3\"" >>/etc/udev/rules.d/70-persistent-net.rules
然后進入cd /etc/sysconfig/network-scripts 對相應的網卡配置文件編輯,將DEVICE更改為綁定后的設備名稱。以及對相應的配置文件重命名如下圖
然后修改grub禁用可命名規則,編輯/etc/default/grub文件實現,在該文件的GRUB_CMDLINE_linux= 添加net.ifnames=0 biosdevname=0如下圖
重新升成grub.conf
grub2-mkconfig -o /boot/grub2/grub.cfg
這次重啟機器查看網卡名稱是不是成為我們想要的名字了呢?
已經變成我熟悉的ethxxx了。ps:心里莫名小激動呢。
二、網卡名稱雜亂的問題我們已經解決了,但是在業務實際使用過程中,出現了機器重啟后不能ping通的情況,經過調查發現,我們的修改后的網卡命名規則會有一定概率失效!原因是機器在啟動中把最先啟動的網卡識別在了前面,我們綁定的網卡啟動在后面。導致的了機器把原本應該的eth0,識別為了eth1、eth2、eth3。這個問題真是很頭疼,經過老司機的指點明白了原因:我們機房的環境是使用的萬兆網絡環境(即光纖環境),而服務器的萬兆網卡非板載網卡,(pci接入)板載的網卡是千兆卡,這樣機器在啟動的時候先去識別的板載的網卡,而pci接口的萬兆卡就在后面識別,導致這個情況的發生。(ps:找到這個原因,我內心毫無波瀾,甚至還想送個迷之微笑送給大家。)
經過老司機的指點,解決方案是禁用千兆網卡驅動,操作如下:
此處以intel網卡為例
echo "blacklist igb" >> /etc/modprobe.d/blacklist.conf
sed -i '/GRUB_CMDLINE_LINUX/{s/"$//g;s/$/rdblacklist=igb"/}' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg;
這樣機器就不會去識別千兆的網卡了。從而不會再出現綁定失敗的情況。
Ps:在此講一下我們之前的妥協方案,在機器中加入一條開機network服務延遲5秒啟動的方案。用以解決網卡并行啟動,導致網卡啟動在udev綁定之前,這樣會導致機器網卡啟動失敗,(目前只有CentOS7.0有發現這個問題,7.2 7.3暫未發現)操作如下。
#!/bin/bash
#關閉network開機自啟動
chkconfig network off
#添加sa-network服務延遲5秒重啟network服務
echo '#!/bin/bash' >> /etc/init.d/sa-network
echo '#chkconfig:2345 90 05' >> /etc/init.d/sa-network
echo 'sleep 5' >> /etc/init.d/sa-network
echo 'service network restart' >> /etc/init.d/sa-network
chmod x /etc/init.d/sa-network
chkconfig --add sa-network
chkconfig sa-network on
三、批量裝機中使用
在機房進行批量裝機的時候,不可能每臺都手動執行,或者發現機器不通再單用戶修改密碼,然后在執行以上一二步驟,會非常浪費時間,經過以上的經驗總結中,我在裝機的初始化中添加了如下操作,大家可以參考
# disable igb add Zack
osver=`cat /etc/redhat-release | grep -i "7.2" | wc -l`
osver73=`cat /etc/redhat-release | grep -i "7.3" | wc -l`
osver70=`cat /etc/redhat-release | grep -i "7.0" | wc -l`
udev_eth0_mac=`cat /etc/udev/rules.d/70-persistent-net.rules | grep -i eth0| awk -F '"' '{print $8}'`
ip_add_eth0_mac=`ip add | grep -A2 eth0 |grep -i 'ether' | awk '{print $2}'`
speed=`ethtool eth0 | grep -i 'Speed' |awk -F [:] '{print $2}'`
network_name=`ip add |grep -iB1 $udev_eth0_mac | grep -i eth|awk '{print $2}'| grep -i eth| awk -F ':' '{print $1}'`
network_failure_name=`ethtool $network_name | grep -i 'Speed' | awk -F ':' '{print $2}'`
if [ $udev_eth0_mac = $ip_add_eth0_mac ] && [ $speed = "10000Mb/s" ] ;then
echo "blacklist igb" >> /etc/modprobe.d/blacklist.conf
sed -i '/GRUB_CMDLINE_LINUX/{s/"$//g;s/$/rdblacklist=igb"/}' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg;
echo '默認萬兆網卡,已禁用千兆igb驅動。'
elif [ $udev_eth0_mac != $ip_add_eth0_mac ] ;then
echo "blacklist igb" >> /etc/modprobe.d/blacklist.conf
sed -i '/GRUB_CMDLINE_LINUX/{s/"$//g;s/$/rdblacklist=igb"/}' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
echo 'udev綁定網卡不匹配ip add網卡名稱,已禁用千兆igb驅動,重啟生效。'
elif [ $udev_eth0_mac = $ip_add_eth0_mac ] && [ $speed = "1000Mb/s" ] ;then
echo '默認千兆網卡,啥都不做。退出。'
fi
#兼容CentOS7.0 network 判斷
if [[ "$osver70" == "1" ]]; then
#關閉network開機自啟動
chkconfig network off
#添加sa-network服務延遲5秒重啟network服務
echo '#!/bin/bash' >> /etc/init.d/sa-network
echo '#chkconfig:2345 90 05' >> /etc/init.d/sa-network
echo 'sleep 5' >> /etc/init.d/sa-network
echo 'service network restart' >> /etc/init.d/sa-network
chmod x /etc/init.d/sa-network
chkconfig --add sa-network
chkconfig sa-network on
fi
if [ $osver70 = "1" ] && [ $network_name = "eth0" ] && [ $speed = "10000Mb/s" ] ;then
echo "blacklist igb" >> /etc/modprobe.d/blacklist.conf
sed -i '/GRUB_CMDLINE_LINUX/{s/"$//g;s/$/rdblacklist=igb"/}' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg;
echo 'CentOS7.0系統,網口名稱為eth0且為萬兆網卡,已禁用千兆igb驅動。'
fi
if [ $osver70 = "1" ] && [ $network_failure_name = "10000Mb/s" ]; then
echo "blacklist igb" >> /etc/modprobe.d/blacklist.conf
sed -i '/GRUB_CMDLINE_LINUX/{s/"$//g;s/$/rdblacklist=igb"/}' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg;
echo 'CentOS7.0系統,網口名稱為eth*且為萬兆網卡,已禁用千兆igb驅動。'
fi
貼兩段執行結果
(寫的很low,但至少能用,哈哈)
以上腳本我對部分服務器進行了測試包括dell和華為的機器,OS包括CentOS7.0 7.2 73其它機型和OS沒有測試,資源有限哈哈。也希望大家能針對自身的環境靈活運用,不要死套用。有疑問可以直接回復我,我盡量回復大家。
在此建議大家使用CentOS7.2 7.3版本 相對會穩定很多。7.0畢竟是個過渡版本。
感謝大家能看完Thanks!
感謝工作中指點我的Kirin。
轉載請說明出處www.houzhibo.com謝謝!
推廣排行榜:
總結
以上是生活随笔為你收集整理的linux网卡名称乱编,小斗CentOS7.x网卡名称错乱、及网卡启动失败。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 棋盘覆盖问题
- 下一篇: Linux Free命令与cache和b