一、裝置命名標準
參考:官方文件第8章:
部分資訊參考博文:感謝!
noway11:
王偉傑:
centos7以前版本的centost系統對網絡卡命令採用了傳統的命令標準,如eth0,eth1,個人是理解eth標識了網絡卡的鏈路層封裝型別,後面的數字就是網絡卡編號了,但這個編號可不是一成不變的,如果伺服器增加或刪除新硬體就可能會發生變化,為運維工作多少帶來了一些麻煩,為了解決這個問題centos7以後版本引入了新的網路裝置命名規範:一致網路裝置命名(consistent network device naming),centos7以後支援biosdevname和net.ifnames兩種命名規範。
1.net.ifnames命名規範為:裝置型別+裝置位置+埠號
裝置型別:en 代表乙太網,wl 代表無線區域網(wlan),ww 代表無線廣域網(wwan)。
裝置位置:整合裝置的裝置索引編號 ,或擴充套件卡所在匯流排槽位編號
埠號:板載整合裝置索引編號或擴充套件卡上的物理埠編號
裝置名稱型別
格式說明eno1
板載裝置索引號
ens33
熱插拔插槽索引號
舉例:
名稱裝置型別
說明eno1
板載網絡卡
板載1號網絡卡
enp0s2
pci網絡卡
pci擴充套件卡的2號埠
ens33
pci網絡卡
熱插拔插槽3號pci-e插槽的3號埠
wlp3s0
pci無線網絡卡
第3號pci擴充套件卡的0號埠
2.biosdevname命名規範
centos系統需要安裝biosdevname程式包才可以使用biosdevname命名規範,biosdevname程式讀取bios資訊中的type 9(系統插槽)和 type 41(板載裝置擴充套件資訊)兩個字段資訊來命名網絡卡。(要求smbios的版本要高於2.6)
裝置舊名稱
新名稱例
板載內建網絡卡
eth[0123…]
em[1234…]
em1pci擴充套件卡網路介面
eth[0123…]
p【槽位號】p【埠號】
p3p4
子介面虛擬功能
eth[0123…]
p【槽位號】p【埠號】_【子介面號】
p3p4_1
二、系統預設的網絡卡命名規則
官方文件命名規則描如下:
預設情況下,systemd 會使用以下策略,採用支援的命名方案為介面命名:
方案 1:如果韌體或 bios 資訊適用且可用,則使用整合了為板載裝置提供索引號的韌體或 bios 的名稱(例如:eno1),否則請使用方案 2。(針對的是板載整合網絡卡命名)
方案 2:如果韌體或 bios 資訊適用且可用,則使用整合了為 pci 快速熱插拔插槽提供索引號的韌體或 bios 名稱(例如 ens1),否則請使用方案 3。(針對的是pci-e擴充套件網絡卡針命名標準)
方案 3:如果硬體聯結器物理位置資訊可用,則使用整合了該資訊的名稱(例如:enp2s0),否則請使用方案 5。
方案 5:傳統的不可**的核心命名方案,在其他方法均失敗後使用(例如: eth0)(以上命令資訊都無法獲取時則採用傳統的命令規則)
這個策略(如上所述)是預設策略。如果該系統已啟用 biosdevname,則會使用該方案。注:啟用 biosdevname 需要新增 biosdevname=1 作為命令列引數(dell 系統除外),此時只要安裝 biosdevname,就會預設使用該方案。如果使用者已新增 udev 規則,該規則會更高核心裝置名稱,則會優先使用這些規則
三、裝置重新命名策略
關於裝置重新命名官方的文件做了如下闡述:
1./usr/lib/udev/rules.d/60-net.rules 檔案中的規則會讓 udev 幫助工具 /lib/udev/rename_device 檢視所有 /etc/sysconfig/network-scripts/ifcfg-suffix 檔案。如果發現包含 hwaddr 條目的 ifcfg 檔案與某個介面的 mac 位址匹配,它會將該介面重新命名為 ifcfg 檔案中由 device 指令給出的名稱。
2./usr/lib/udev/rules.d/71-biosdevname.rules 中的規則讓 biosdevname 根據其命名策略重新命名該介面,即在上一步中沒有重新命名該介面、已安裝 biosdevname、且在 boot 命令列中將 biosdevname=0 作為核心命令給出。
3./lib/udev/rules.d/75-net-description.rules 中的規則讓 udev 通過檢查網路介面裝置,填寫內部 udev 裝置屬性值 id_net_name_onboard、id_net_name_slot、id_net_name_path。注:有些裝置屬性可能處於未定義狀態。
4./usr/lib/udev/rules.d/80-net-name-slot.rules 中的規則讓 udev 重新命名該介面,優先順序如下:id_net_name_onboard、id_net_name_slot、id_net_name_path。並提供如下資訊:沒有在步驟 1 或 2 中重新命名該介面,同時未給出核心引數 net.ifnames=0。如果乙個引數未設定,則會按列表的順序設定下乙個。如果沒有設定任何引數,則不會重新命名該介面。
從官方的闡述來看1,3,4都與系統systemd udev命名規則有關,2與biosdevname有關,個人理解四個檔案的用途如下:
1./usr/lib/udev/rules.d/60-net.rules (rename_device程式基於自定義配置檔案命名)
如果在目錄/etc/sysconfig/network-scripts/中有以ifcfg-開頭的檔案,並且其中包含了指定網絡卡的mac,則以ifcfg檔案中的device欄位給寫的名稱命名。
2./usr/lib/udev/rules.d/71-biosdevname.rules(biosdevname基於bios資訊自動命名)
如果ifcfg開頭的檔案中找不到對應的配置,則看系統是否安裝了biosdevname程式包,並且系統未裝置引數biosdevname=0,則按biosdevname命名標準為網絡卡命名。
3./lib/udev/rules.d/75-net-description.rules(systemd-udev基於systemd-udev基於網絡卡資訊命名)
如果1,2兩條規則都沒有命中則檢視網絡卡資訊,基於網絡卡資訊指定的字段命名。
4./usr/lib/udev/rules.d/80-net-name-slot.rules(systemd-udev基於systemd-udev基於bios資訊命名)
網絡卡資訊都沒有指定的字段,則按bios獲取的板載槽位資訊命名。
總結:自定義配置的優先順序、其次是biosdevname、最後是systemd-udev自動配置
四、恢復網絡卡傳統命名標準
從以上命名策略與命名規則來看,響應網絡卡命名的應該就是受biosdevname、net.ifnames兩個引數影響,官方也給出兩個引數的預設值:iosdevname=0是系統預設值(dell伺服器預設是1),net.ifnames=1是系統預設值
如果想恢復以前的傳統命名規範則只需要在grub檔案中將兩個引數設定為0即可,具體操作過程如下:
2.重新生成配置檔案grub配置檔案,執行如下命名
grub2-mkconfig -o /boot/grub2/grub.cfg
4、重啟系統。
關於centos7的網絡卡命名
在進行centos7的pxe安裝測試中發現了網絡卡命名不再遵從來有的命名規則而啟用了最新的命名方式,官網文件描述如下 在 red hat enterprise linux 7 中,和 支援大量不同的命名方案。預設行為是根據韌體 拓撲及位置資訊分配固定名稱。這個命名方法的優點是完全自動且可 即使新增或...
關於centos7的網絡卡命名
關於centos7的網絡卡 在進行centos7的pxe安裝測試中發現了網絡卡命名不再遵從來有的命名規則而啟用了最新的命名方式,官網文件描述如下 在 red hat enterprise linux 7 中,和 支援大量不同的命名方案。預設行為是根據韌體 拓撲及位置資訊分配固定名稱。這個命名方法的優...
CentOS7 網絡卡命名
在進行centos7的pxe安裝測試中發現了網絡卡命名不再遵從來有的命名規則而啟用了最新的命名方式,官網文件描述如下 在 red hat enterprise linux 7 中,目前 方案 1 合併韌體或者 bios 的名稱為板載裝置提供索引號的名稱,例如 eno1。如果韌體資訊適用且可用,則 方...