最近,由于我们要从较旧的硬件配置迁移到较新的硬件配置,因此我不得不为公司构建一个新的克隆映像。由于一些客户要求,我们仍在使用 CentOS 7.9 (2009)。我们之前使用的主板型号是 Advantech ASMB-923,我们迁移到使用 Advantech ASMB-935。
在构建了基本操作系统映像并在其上安装了一些软件之后,我们创建了磁盘的克隆,以部署到其他机器上。但我在网络配置方面遇到了一些问题。该机器上有两个千兆以太网端口,以及一个带有两个 10 GB 以太网端口的 PCI 卡。我们通常只将千兆以太网端口用于两个独立的网络,而 10 GB 端口则保留用于非常特殊的用例,我们很少使用这种用例,但这是客户要求的一部分。
我们对网络设备使用eth命名方案, eth0应该用于软件通信,而eth1用于硬件通信。但是,我遇到了一个问题,这个问题在之前的主板上没有遇到过。出于某种原因,有时它会将eth标识符的分配更改为不同的物理端口。例如,有时它会按照我们的意愿将eth1分配给 10 GB 端口之一,而不是千兆端口。这会破坏我们的内部通信。
我尝试使用一个简单的脚本来解决这个问题,该脚本将端口的 PCI 地址映射到特定的eth设备名称,并使用“ ip link set name ”将设备重命名为正确的设备名称,然后向相关设备的ifcfg文件添加HWADDR和NM_CONTROLLED =no属性。/etc/sysconfig/network-scripts 下还有一个“ save ”目录,它会覆盖我对ifcfg文件所做的任何更改,因此我重命名了该目录以防止这种情况发生。
我相信这应该足够了,但根本问题在发生频率上非常不一致,所以我不确定如何明确验证此解决方案是否有效。有人能给我一些关于这个问题的见解和可能更好的解决方案,或者至少确认我的解决方案是否可靠吗?
编辑:今天早上我再次检查了机器,发现两个令人不安的新异常,这使我的脚本失效:
- 在一台机器上,当我检查 /sys/class/net 下从设备名称到 PCI 地址的映射时,我发现 10 GB 以太网端口的 PCI 地址不再是“0000:1a:00.0”和“0000:1a:00.1”,而是“0000:af:00.0”和“0000:af:00.1”。eth1 和 eth2 的 ifcfg 文件中也缺少 HWADDR 属性和 NM_CONTROLLED=no 属性。
- 在另一台机器上,PCI 地址保持不变,但 eth1 和 eth2 ifcfg 文件中缺少 HWADDR 和 NM_CONTROLLED 属性,如上所述。
6
–
–
–
–
–
|