<强>一、设备命名标准强>
参考:
官方文档第8章:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/ch-consistent_network_device_naming sec-Naming_Schemes_Hierarchy
部分信息参考博文:感谢!
Noway11: https://www.cnblogs.com/zyd112/p/8143464.html
王伟杰:https://www.jianshu.com/p/b66981dbb389
Centos7以前版本的Centost系统对网卡命令采用了传统的命令标准,如eth0, eth2,个人是理解eth标识了网卡的链路层封装类型,后面的数字就是网卡编号了,但这个编号可不是一成不变的,如果服务器增加或删除新硬件就可能会发生变化,为运维工作多少带来了一些麻烦,为了解决这个问题Centos7以后版本引入了新的网络设备命名规范:一致网络设备命名(一致的网络设备命名),Centos7以后支持biosdevname和net.ifnames两种命名规范。
<强> 1. net.ifnames命名规范为:设备类型+设备位置+端口号强>
设备类型:en代表以太网,王代表无线局域网(WLAN), ww代表无线广域网(无线广域网)。
设备位置:集成设备的设备索引编号,或扩展卡所在总线槽位编号
端口号:板载集成设备索引编号或扩展卡上的物理端口编号
<强>设备名称类型强>
格式 说明 三、 板载设备索引号 ens33 热插拔插槽索引号<强>举例:强>
名称 设备类型 说明 三、 板载网卡 板载1号网卡 enp0s2 pci网卡 PCI扩展卡的2号端口 ens33 pci网卡 热插拔插槽3号PCI-E插槽的3号端口 wlp3s0 PCI无线网卡 第3号PCI扩展卡的0号端口<强> 2. biosdevname命名规范强>
Centos系统需要安装biosdevname程序包才可以使用biosdevname命名规范,biosdevname程序读取BIOS信息中9的类型(系统插槽)和41型(板载设备扩展信息)两个字段信息来命名网卡。(要求SMBIOS的版本要高于2.6)
设备 旧名称 新名称 例 板载内置网卡 乙(0123…) em (1234…) em1 PCI扩展卡网络接口 乙(0123…) p p【槽位号】【端口号】 p3p4 子接口虚拟功能 乙(0123…) p p【槽位号】【端口号】_【子接口号】 p3p4_1<强>二,系统默认的网卡命名规则强>
官方文档命名规则描如下:
默认情况下,systemd会使用以下策略,采用支持的命名方案为接口命名:
方案1:如果固件或BIOS信息适用且可用,则使用整合了为板载设备提供索引号的固件或BIOS的名称(例如:三、),否则请使用方案2。(针对的是板载集成网卡命名)
方案2:如果固件或BIOS信息适用且可用,则使用整合了为PCI快速热插拔插槽提供索引号的固件或BIOS名称(例如ens1),否则请使用方案3。(针对的是PCI-E扩展网卡针命名标准)
方案3:如果硬件连接器物理位置信息可用,则使用整合了该信息的名称(例如:enp2s0),否则请使用方案5 .
方案4:默认不使用整合接口MAC地址的名称(例如:enx78e7d1ea46da),但用户可选择使用此方案。(根据MAC地址命名网卡)
方案5:传统的不可预测的内核命名方案,在其他方法均失败后使用(例如:eth0)(以上命令信息都无法获取时则采用传统的命令规则)
这个策略(如上所述)是默认策略。如果该系统已启用biosdevname,则会使用该方案。注:启用biosdevname需要添加biosdevname=1作为命令行参数(戴尔系统除外),此时只要安装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文件中由设备指令给出的名称。
2./usr/lib/udev/rules.d/71 - biosdevname.rules中的规则让biosdevname根据其命名策略重命名该接口,即在上一步中没有重命名该接口,已安装biosdevname,且在引导命令行中将biosdevname=0作为内核命令给出。