日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux网卡名称乱编,小斗CentOS7.x网卡名称错乱、及网卡启动失败。

發布時間:2023/12/9 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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网卡名称错乱、及网卡启动失败。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。