X6000网口linux下无法复位问题

发布时间:  2015-02-28 浏览次数:  435 下载次数:  0
问题描述

 

软件配置:eth0eth1bond0(ifcfg-bond0),未配置ifcfg-eth0ifcfg-eth1文件。

某局点维护人员通过执行命令“(bash -x /sbin/ifdown eth0 ;echo ---------; bash -x /sbin/ifup eth0) >>/tmp/log.txt 2>&1”来复位网卡eth0,并跟踪网卡启动过程,但是发现命令执行后使用ifconfig -a命令查看网卡eth0状态处于down的状态,如图1-1所示。

 

 

告警信息
处理过程

网卡排查步骤如下:

                                              1.     手动执行“ifconfig eth0 up”可以将eth0 UP起来,可以排除网卡无法UP的问题。

                                              2.     再次执行(bash -x /sbin/ifdown eth0 ;echo ---------; bash -x /sbin/ifup eth0) >>/tmp/log.txt 2>&1”,发现问题复现

                                              3.     从步骤2产生的log.txt分析,发现如下提示,即ifdownifup对网卡eth0进行操作时,会去读取网卡eth0的配置文件ifcfg-eth0,并根据配置文件对网卡状态进行设置。

图1-1 ifdownifup组合使用复位网卡

                                              4.     而现场操作系统中未对eth0进行单独配置ifcfg-eth0,所以无法通过ifup激活网卡eth0

                                              5.     通过查看messages日志,也报同样的报错“No configuration found for eth0”。

图1-2 messages日志片段

----结束

根本原因分析:

当网卡配置文件ifcfg-eth N(N表示网卡编号,如0,1,2…)不存在,无法通过ifup ethN命令激活网卡。通过执行ifconfig eth0 up可以激活网卡eth0,因为ifconfig命令对网卡操作时不会检查网卡配置文件,直接通过驱动对网卡硬件进行操作。

根因

当网卡配置文件ifcfg-eth0不存在,无法通过ifup ethN(N表示网卡编号,如0,1,2…)命令激活网卡

解决方案

有以下两种方式恢复,建议使用第一种方法:

第一种方法:重启网络服务(service network restart)

第二种方法:使用ifconfig ethN up恢复(N表示网卡编号,如0,1,2…)

建议与总结

ifdownifupshell脚本,对网卡操作时会读取网卡配置文件ifcfg-eth N(N表示网卡编号,如0,1,2…)ifconfig是二进制命令,对网卡操作时不会读取网卡配置文件,直接对硬件网卡进行操作。因此通过ifconfig eth0 up可以在不存在网卡配置文件ifcfg-eth0的情况下将eth0网口重新激活

建议复位网卡的时候使用ifconfig ethN down/up,而不使用ifdown/ifup ethN

 

另:

(bash -x /sbin/ifdown eth0 ;echo ---------; bash -x /sbin/ifup eth0) >>/tmp/log.txt 2>&1

该命令的作用是复位网卡eth0,同时将网卡复位过程进行跟踪并重定向到/tmp/log.txt文件,详细解释如下:

(1)bash -x表示调用bash执行脚本,-x表示打开调试开关,用来跟踪脚本执行过程。

(2)/sbin/ifdown eth0表示禁用eth0/sbin/ifup eth0表示启用eth0,两条命令结合使用目的是用来复位网卡eth0

(3)echo ---------表示输出字串“---------”作为分割符,用来隔离bash -x /sbin/ifdown eth0 bash -x /sbin/ifup eth0的执行过程。

(4) >>/tmp/log.txt 2>&1表示将“(bash -x /sbin/ifdown eth0 ;echo ---------; bash -x /sbin/ifup eth0)”执行过程重定向到/tmp/log.txt(包含标准输出和错误输出)

END