我有一台 HP ProLiant DL360 G6,包含两个板载 NIC 以及一个 HP NC375T(NetXen NX3031 芯片组)4 端口 PCIe 卡。系统运行时,eth0 和 eth1 属于板载 NIC,eth2-eth5 属于 NetXen 卡。我最近重建了服务器,从启动过程开始,NIC 被重新排序,板载 NIC 变为 eth4 和 eth5,而 NetXen 卡接管了 eth0-eth3。
我过去曾有过通过更改ifcfg-ethX
配置文件将 NIC 绑定到特定接口的经历,但这是我第一次看到附加卡从主板接口接管 eth0。这影响了我的 kickstart 脚本,因此:
1). 如何确保板载 NIC 在 kickstart 安排中具有优先权。
2). 通过反复重启、内核更改(例如从 RHEL 主线内核转换为 RHEL MRG 实时内核)等方式来维持该顺序的最一致方法是什么?
3).在此上下文中,/etc/modprobe.conf
模块/NIC 定义/etc/sysconfig/network-scripts/ifcfg-ethX
和功能之间的交互是什么?/etc/modprobe.d/blacklist
答案1
这是 RHEL5 及其衍生产品的一个已知问题。有两种可能的解决方案:
- 保留 ifcfg 脚本中的 HWADDR 设置(您可以使用脚本正则表达式和不同 NIC 供应商的 MAC 范围使其变得智能)
- 使用 udev 规则,MAC 再次发挥作用
答案2
您可以使用 kssendmac 选项获取发送到 Kickstart 脚本的 NIC 的 MAC 地址。使用 PHP 解析它并进行相应的配置。
这样,已知变量就是板载 NIC 的 MAC,而未知变量就是内核分配的 eth 设备。
此代码片段将获取并打印所有标头。您必须想出一些东西来解析出您需要的信息。您的网络配置行将根据您从中获得的信息进行条件调整。
<?
$headers = getallheaders();
foreach ($headers as $key => $value)
{ echo "# $key: $value\n"; }
?>
如果你需要更多帮助,请告诉我。不过,这应该能让你走上正确的道路。
答案3
在服务器中插入多于 1 个 NIC 有时会导致新 NIC 按照其自己的顺序启动,而不是按照您期望的 eth0(现有 NIC)、eth1(新 NIC)、eth2(新 NIC)顺序启动
Red Hat/CentOS 例如,在 Red Hat 中,如果驱动程序名为“tg3”(Tigon 驱动程序),则只需通过编辑指定 eth(x) 顺序来指定所需的网络名称顺序即可
六、/etc/modprobe.conf
别名 eth0 tg3
别名 eth1 e1000
别名 eth2 3com
上述示例表明将加载 tg3 驱动程序前e1000 和 3com 内核。