linux網絡卡命名規則

2021-08-22 16:24:53 字數 3203 閱讀 1483

伺服器通常有多塊網絡卡,有板載整合的,同時也有插在pcie插槽的。linux系統的命名原來是eth0,eth1這樣的形式,但是這個編號往往不一定準確對應網絡卡介面的物理順序。

為解決這類問題,dell開發了biosdevname方案。

systemd v197版本中將dell的方案作了進一步的一般化拓展。

目前的centos既支援dell的biosdevname,也支援systemd的方案。

scheme 1: 如果從bios中能夠取到可用的,板載網絡卡的索引號,則使用這個索引號命名,例如: eno1,如不能則嘗試scheme 2

scheme 2: 如果從bios中能夠取到可以用的,網絡卡所在的pci-e熱插拔插槽(注:pci槽位號)的索引號,則使用這個索引號命名,例如: ens1,如不能則嘗試scheme 3

scheme 3:如果能拿到裝置所連線的物理位置(pci匯流排號+槽位號?)資訊,則使用這個資訊命名,例如:enp2s0,如不能則嘗試scheme 5

scheme 5:傳統的kernel命名方法,例如: eth0,這種命名方法的結果不可預知的,即可能第二塊網絡卡對應eth0,第一塊網絡卡對應eth1。

scheme 4 使用網絡卡的mac位址來命名,這個方法一般不使用。

net.ifnames的命名規範為:   裝置型別+裝置位置+數字

裝置型別:

en 表示ethernet

wl 表示wlan

ww 表示無線廣域網wwan

實際的例子:

eno1 板載網絡卡

enp0s2  pci網絡卡

ens33   pci網絡卡

wlp3s0  pci無線網絡卡

wwp0s29f7u2i2   4g modem

wlp0s2f1u4u1   連線在usb hub上的無線網絡卡

enx78e7d1ea46da pci網絡卡

biosdevname的命名規範為

實際的例子:

em1 板載網絡卡

p3p4 pci網絡卡

p3p4_1 虛擬網絡卡

按照如下順序執行udev的rule

1./usr/lib/udev/rules.d/60-net.rules

2./usr/lib/udev/rules.d/71-biosdevname.rules

3./lib/udev/rules.d/75-net-description.rules

4./usr/lib/udev/rules.d/80-net-name-slot.rules

1)60-net.rules

使用/lib/udev/rename_device這個程式,去查詢/etc/sysconfig/network-scripts/下所有以ifcfg-開頭的檔案,如果在ifcfg-xx中匹配到hwaddr=xx:xx:xx:xx:xx:xx引數的網絡卡介面則選取device=yyyy中設定的名字作為網絡卡名稱。

2)71-biosdevname.rules

如果系統中安裝了biosdevname,且核心引數指定biosdevname=1,且上一步沒有重新命名網絡卡,則按照biosdevname的命名規範,從bios中取相關資訊來命名網絡卡。

主要是取smbios中的type 9 (system slot) 和 type 41 (onboard devices extended information)不過要求smbios的版本要高於2.6,且系統中要安裝biosdevname程式。

3)75-net-description.rules

udev通過檢查網絡卡資訊,填寫如下這些udev的屬性值

id_net_name_onboard

id_net_name_slot

id_net_name_path

id_net_name_mac 

4)80-net-name-slot.rules

如果在60-net.rules ,71-biosdevname.rules這兩條規則中沒有重新命名網絡卡,且核心指定net.ifnames=1引數,則udev依次嘗試使用以下屬性值來命名網絡卡,如果這些屬性值都沒有,則網絡卡不會被重新命名。

id_net_name_onboard

id_net_name_slot

id_net_name_path

上邊的71-biosdevname.rules 是實際執行biosdevname的策略

75-net-description.rules和80-net-name-slot.rules實際執行上面策略的1,2,3。

根據上述的過程,可見網絡卡命名受 biosdevname和net.ifnames這兩個核心引數影響。

這兩個引數都可以在grub配置中提供。

biosdevname=0是系統預設值(dell伺服器預設是1),net.ifnames=1是系統預設值:

修改預設引數:如回歸預設命名方式:

1)編輯核心引數

在grub_cmdline_linux中加入

net.ifnames=0即可

[root

@centos

7 ~]$vim

/etc/default

/grub

grub_cmdline_linux=

"crashkernel=auto net.ifnames=0 rhgb quiet"

2)為grub2生成配置檔案

編輯完grub配置檔案以後不會立即生效,需要生成配置檔案。

[root@centos7 ~]$grub2-mkconfig -o /etc/grub2.cfg

第二節所說的scheme的策略順序是系統預設的。

總結:1)如系統bios符合要求,且系統中安裝了biosdevname,且biosdevname=1啟用,則biosdevname優先;

2)如果bios不符合biosdevname要求或biosdevname=0,則仍然是systemd的規則優先。

3)如果使用者自己定義了udev rule來修改核心裝置名字,則使用者規則優先。

核心引數組合使用的時候,其結果如下:

預設核心引數(biosdevname=0,net.ifnames=1):  網絡卡名 "enp5s2"

biosdevname=1,net.ifnames=0:網絡卡名 "em1"

biosdevname=0,net.ifnames=0:網絡卡名 "eth0" (最傳統的方式,eth0 eth1 )

網絡卡命名規則(linux)

網絡卡命名規則 scheme 1 如果從bios中能夠取到可用的,板載網絡卡的索引號,則使用這個索引號命名,例如 eno1,如不能則嘗試scheme 2 scheme 2 如果從bios中能夠取到可以用的,網絡卡所在的pci e熱插拔插槽 注 pci槽位號 的索引號,則使用這個索引號命名,例如 en...

修改網絡卡命名規則的筆記

先修改啟動檔案 etc sysconfig grub cmdline linux 行尾加 net.ifnames 0 biosdevname 0 刷一下 grub2 mkconfig o boot grub grub.cfg 將現在已經有啟始那個更名mv ifcfg ens33 ifcfg eth0...

Linux裝置命名規則

linux中ide硬碟,驅動識別符號為 hdx 其中hd表示裝置型別為ide硬碟,x為盤號,表示第幾塊硬碟 a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤 代表分割槽,前4個分割槽用數字1到4表示,它們是主分割槽或擴充套件分割槽,從5開始就是邏輯分割槽 擴充套件分割槽不能直接使用,需切割出...