ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux系统操作系统网卡漂移解决方案及问题原因

2021-01-08 11:34:09  阅读:271  来源: 互联网

标签:grub rules cfg 网卡 linux net bak 漂移


一.问题描述

公司有100-150台服务器安装RHEL7.4&中标麒麟7.4系统,为方便编辑配置网卡,使用脚本方式配置为biosname=0,ifname=0,目的是为将en1o2p此类长字符网卡名称规范为传统的eth*,使用传统的网卡识别方式,但安装完成后配置IP,BOND双网卡存在网络漂移现象,现象即重启网卡后所有网口均发生变化导致网络不通


二.原理说明


  • 在/usr/lib/udev/rules.d/60-net.rules中有一条规则指示udev助手实用程序/lib/udev/rename_device查看所有的/etc/sysconfig/network-scripts/ifcfg后缀文件。如果它发现一个带有HWADDR条目的ifcfg文件与一个接口的MAC地址匹配,它将该接口重命名为DEVICE指令在ifcfg文件中给出的名称。

  • 在/usr/lib/udev/rules.d/71-biosdevname.rules中指示biosdevname根据其命名策略重命名接口, 前提是在前面的步骤中没有重命名接口,安装了biosdevname,并且在引导命令行上没有将biosdevname =0作为内核命令给出。

  • 在/lib/udev/rules.d/75-net-description.rules中的规则指示udev通过检查网络接口设备来填充 内部udev设备属性值id_net_name_board、ID_NET_NAME_SLOT、ID_NET_NAME_PATH、ID_NET_NAME_MAC 。注意,有些设备属性可能是未定义的。

  • 在/usr/lib/udev/rules.d/80-net-name-slot.rules中有一条规则指示udev重命名接口(前提是在 第1步或第2步中没有重命名接口)和内核参数net。根据以下优先级:id_net_name_board、ID_NET_NAME _SLOT、ID_NET_NAME_PATH,没有指定ifnames=0。如果其中一个未设置,则它将进入列表中的下一个。 如果没有设置这些参数,则不会重命名接口。

  • 步骤2实际执行的是biosdevname的policy 步骤3和4实际执行的是Scheme1、2、3


三.处理步骤

由于在实际场景中,使用的是biosdevname=0 ifname=0的配置,实际影响的文件为在/usr/lib/udev/rules.d/60-net.rules文件,随即在该配置文件中使用了以下设置:

在使用此设置后,RHEL7.4系统问题彻底解决,经过近20次左右的测试,网口不会漂移。但是在中标麒麟7.4系统中,使用次配置后在网口状态不变的情况下不会发生任何漂移,但是如果随机拔掉其中一个网口,所有的网口会全部变化
随后用udevadm test命令进行测试,此命令可以根据网卡名回溯是哪条策略生效,从输出结果看RHEL7.4&中标麒麟7.4系统全部显示60-rules规则已经生效,但是在中标麒麟中仍然存在漂移问题。 经过文档查询,和进一步替换测试,基本可确定此问题为系统差异导致


四.解决方案

在使用systemd的命名规则时候,网卡名类似en1o2p3,此种命令可以准确的指出网卡来自主板上的哪一个pci槽位哪一条总线,以及具体的口。Systemd的命名方式虽然可读性差,但是本身就是为了解决此问题而做出的改变,建议同一为systemd方式使用长格式网卡名。
还原脚本如下:

#! /bin/bash
#  redhat还原脚本
cd /etc/sysconfig/network-scripts/
mv ifcfg- bak/
mv ifcfg-eth* bak/
mv ifcfg-bond0 bak/
cd /etc/sysconfig
cp grub  /home/grub.bak
sed -i "s/ net.ifnames=0/ /g" grub
sed -i "s/ biosdevname=0/ /g" grub
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
cd /boot/efi/EFI/redhat/
cp grub.cfg /home/grub.cfg.bak
sed -i "s/ net.ifnames=0/ /g" grub.cfg
sed -i "s/ biosdevname=0/ /g" grub.cfg
sleep 5
sync
sync
sync
reboot
#! /bin/bash
# 中标麒麟还原脚本
cd /etc/sysconfig/network-scripts/
mv ifcfg- bak/
mv ifcfg-eth* bak/
mv ifcfg-bond0 bak/
cd /etc/sysconfig
cp grub  /home/grub.bak
sed -i "s/net.ifnames=0/ /g" grub
sed -i "s/biosdevname=0/ /g" grub
grub2-mkconfig -o /boot/efi/EFI/neokylin/grub.cfg
cd /boot/efi/EFI/neokylin/
cp grub.cfg /home/grub.cfg.bak
sed -i "s/ net.ifnames=0/ /g" grub.cfg
sed -i "s/ biosdevname=0/ /g" grub.cfg
sleep 5
sync
sync
sync
reboot


转载请标明出处:
1.博客中标注原创的文章,版权归原作者 heardic 所有;
2.未经原作者允许不得转载本文内容,否则将视为侵权;
3.转载或者引用本文内容请注明来源及原作者;
4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

标签:grub,rules,cfg,网卡,linux,net,bak,漂移
来源: https://www.cnblogs.com/heardic/p/14250571.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有