我正在将旧系统从 RHEL 5.4 升级到 5.8。安装了三个 NIC,每个 NIC 都有定义的 IP 地址和连接的接线。
升级后,这些卡位于相同的 PCI 地址上,但操作系统已打乱 NIC 名称:
network old new
net A eth0 eth1
net B eth1 eth2
net C eth2 eth0
正在使用的 PCI 地址是05.03.0
for Net C
,另外两个是 on03.03.0
和03.03.1
。
没有/etc/udev/rules.d/70-persistent-net.rules
文件。
有没有办法指定每个接口使用哪些 PCI 地址?
更新
我找到了包含 IP 和 MAC 地址值的文件/etc/sysconfig/hwconf
。/etc/sysconfig/network-scripts/ifcfg-eth?
hwconf 还指定 PCI 地址,但似乎在启动时被重写。
我希望能够通过 PCI 位置指定 NIC,因为这实际上用于确定行为,而不是使用不同的卡时会更改的 MAC 地址。
答案1
这通常是通过 MAC 地址完成的,而不是 PCI 地址。
如果 RHEL 5.8 支持 /etc/udev/rules.d/70-persistent-net.rules 文件,您可以创建一个。
只需从另一台计算机复制并编辑它,以便根据 MAC 地址分配正确的设备名称。
在该文件中,您真正需要的只是 3 行,如下所示:(忽略任何换行,这都是一行)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:23:cd:b0:23:b9", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
更改 ATTR{addresss} 和 NAME="eth[012]" 以适合您的 NIC 和您的要求。
我不确定 RHEL 5.4 或 5.8 是否有它,但可能值得检查一下是否有一个名为 /lib/udev/write_net_rules 的脚本 - 如果有,只需运行它,它将生成 70-persistent- net.rules 文件,因此只需编辑每个网卡的名称即可。
您可以使用 获取 MAC 地址
ifconfig | grep 'eth.*HWaddr'
,然后将它们复制粘贴到 70-persistent-net.rules 文件中。完成后,您可以重新启动或关闭所有接口,卸载其内核驱动程序模块,重新加载模块(接口现在将具有分配的设备名称),然后恢复接口。
在使用 udev 和 70-persistent-net.rules 文件之前,我曾经使用从 wireless-tools 包调用的程序
ifrename
(它适用于任何 NIC,而不仅仅是无线)。它使用 /etc/iftab 文件通过 MAC 地址重命名网络接口。它大部分都有效,但不如 udev 方法可靠。我不知道它是否是为 RHEL 打包的,但你可以在以下位置找到它:http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
我自己没有在 NIC 上使用过这种方法,但也可以使用 udev 根据 PCI 地址持久命名设备。首先,删除 /etc/udev/rules/70-persistent-net.rules(如果存在)。然后在 /etc/udev/rules 中创建一个新文件 - 也许将其命名为 70-persistent-net-by-pci.rules
添加如下行:
操作==“添加”,子系统==“网络”,总线==“pci”,内核==“0000:03:03.0”,名称=“eth0” 操作==“添加”,子系统==“网络”,总线==“pci”,内核==“0000:03:03.1”,名称=“eth1” 操作==“添加”,子系统==“网络”,总线==“pci”,内核==“0000:05:03.0”,名称=“eth2”
在一些较新的 Linux(例如 Ubuntu 13.04 或更高版本)上,您需要删除 BUS 限定符,因此规则应如下所示:
操作==“添加”,子系统==“网络”,内核==“0000:03:03.0”,名称=“eth0”
然后重新启动或卸载并重新加载驱动程序模块,如上所述。
您可以在以下位置找到更多详细信息:http://linux-tips.org/article/73/persistent-device-naming-with-udev- 但该页面相当旧并且引用了过时的
udevinfo
命令。改用udevadm info
答案2
在 RedHat 5 上,MAC 和接口名称应该足够了。我从来没有在那里摆弄过 udev 或 PCI 指示符。
将 HWADDR 设置为 MAC,将 DEVICE 设置为目标设备名称。
至于名字在/etc/sysconfig/网络*您可以为配置名称使用有意义的别名ifcfg-别名。