Linux – Biosdevname & net.ifnames

Linux – Biosdevname & net.ifnames

参考链接:http://benjr.tw/93340

传统的Linux 下面看到的网路装置名称都是从eth0, eth1, eth2 …. 一直连续下去,一般我们使用的电脑只有1 , 2 个网路埠,所以在使用上不会遇到太大的难题,但是在多个网路装置的伺服器上就头大了,到底哪一个ethx 是对应到哪一个实体装置.

还好现在有新的装置命名规则,目前看到有两种方式Biosdevname & net.ifnames

Biosdevname

在讨论Biosdevname 这种一致性的网络设备命名规则device naming rule ,我们先来看看什么是udev.

但老实说这还是很麻烦, Dell 戴尔开发了一个udev 的协助工具– Biosdevname,这是一个以GNU General Public License(GPL)下所开发的工具,它提供了一个一致性的命名机制,实体网路装置的名称会依据BIOS 所建议的方式来命名,命名规则大致如下.

  • Embedded network interface (LOM)
  • PCI card network interface
  • Virtual function
    ⁠[For example: p3p4_1]

biosdevname 会依据系统的SMBIOS –

  • RHEL (RedHat)
    #yum install biosdevname

    接着在Kernel 加入参数biosdevname=1

    #vi /boot/grub/grub.conf
    kernel /boot/vmlinuz biosdevname=1
    initrd /boot/initrd.img
    [root@localhost ~]# cat /etc/default/grub
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
    GRUB_DISABLE_RECOVERY="true"
    [root@localhost ~]# grub2-mkconfig
  • 如果系统使用的是 Ubuntu
    #apt-get install biosdevname

    一样在append 加入参数biosdevname=1

    #vi /boot/grub/grub.conf
    kernel /boot/vmlinuz
    append initrd=/boot/initrd.img biosdevname=1

如果要取消将biosdevname=0 即可.

或者是手动更改/etc/udev/rules.d/70-persistent-net.rules 改变其命名规则.下面示范列参考

# vi /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x14e4:0x1680 (tg3)
ACTION=="add", SUBSYSTEM=="net", DRIVER=="tg3", ATTR{address}=="00:1A:64:22:04:83", NAME="em1"

只要修改NAME 的部分,如果系统没有/etc/udev/rules.d/70-persistent-net.rules 请自行创建.

这一篇就讨论到如何自行修改网路装置的命名规则.

net.ifnames

要查net.ifnames 请用这个关键字Predictable Network Interface Names,这个是预设的功能,除非你在开机的时候加入核心参数net.ifnames=0 ,前面介绍的biosdevname 也就没有再用了,先来看看Predictable Network Interface 的命名规则长怎样!!

装置名称由装置类型+ 装置位置+数字组成:

  1. en for Ethernet,
  2. wl for wireless LAN (WLAN),
  3. ww for wireless wide area network (WWAN).

装置位置+数字

  • o
    on-board device index number
  • s[f][d] hotplug slot index number
  • x
    MAC address
  • ps[f][d] PCI geographical location
  • ps[f][u][..][i] USB port number chain

enp0s3 就代表Ethernet ,PCI bus 0,slot 3

Biosdevname & net.ifnames

问题来了,如果Biosdevname & net.ifnames 都用了,那名称会变成怎么样!!!

  1. No parameters (net.ifnames 为预设): NIC identified as “enp5s2”.
  2. Parameter biosdevname=0 (net.ifnames 为预设): NIC identified as “enp5s2”.
  3. Parameter net.ifnames=0 (采用biosdevname 规则): NIC identified as “em1”.
  4. Parameter net.ifnames=0 AND biosdevname=0 (最传统的方式,eth0 eth1 傻傻分不清): NIC identified as “eth0”.
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值