有史以来最怪的问题,如果不是友人早前的提示,我还真得还要得耗半天找原。话说他们公司 Dell R710 用的操作系统是 RedHat As5.3 X64 会在正常运行中无故断网….
而且并没有规律,择日而断…弄了好久,还以为是机房的问题,最后无奈之下打电话给 Dell 报修。
他们的工程师立马就反应过来,这是 RedHat As5.X 版本中的Broadcom NetXtreme II BCM 5709 驱动 BUG,涉及到 ACPI 电源管理的问题。
所以当网卡在正常工作的时候,会被 ACPI 误以为他闲着,从而把它给关闭掉。
每次出现这个情况,只需要 service network restart 或者 ifdown/ifup ethX (对于被关闭的网卡端口) 就可以恢复正常。
真有够气愤的。
解决这个问题有2种方法,第一种相对简单,就是在Linux内核中禁用 ACPI 电源管理系统。
但该方法不推荐,因为会导致服务器失去智能电源调节,增加功耗。
另外一种方法就是升级网卡驱动,以下是过程:
首先当然是去 Dell 下载一份最新的 Broadcom NetXtreme II BCM 驱动。
相信只要是 使用 Broadcom NetXtreme II BCM 5709 网卡的服务器都有必要更新,例如 R710 ,R610。
[root@localhost DRIVER]# modinfo bnx2 [首先查看当前驱动版本]
filename: /lib/modules/2.6.18-164.el5/updates/bnx2.ko
version: 1.9.3
license: GPL
description: Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver
[root@localhost DRIVER]# tar zxvf Bcom_LAN_14.1.5_Linux_Source_A00.tar.gz
[root@localhost DRIVER]# cd Bcom_LAN_14.1.5_Linux_Source_A00/NetXtremeII/
[root@localhost NetXtremeII]# rpm -ivh netxtreme2-5.0a.10-1.src.rpm
1:netxtreme2 ######################## [100%]
[root@localhost NetXtremeII]# cd /usr/src/redhat/
[root@localhost redhat]# rpmbuild –bb SPECS/netxtreme2.spec
[root@localhost redhat]# rpm -ivh RPMS/x86_64/netxtreme2-5.0a.10-1.x86_64.rpm
好了,驱动都安装上了,然后有2个方法让新驱动起效,一是重启服务器。
如果不便重启的话,以下是第二种:
但过程会导致网络断开,而且没有人工干预,会无法连上。
所以如果你并不在本地操作,或者你的服务器与您相隔甚远,建议三思后行。
[root@localhost NetXtremeII]# rmmod bnx2 卸载现有驱动[注意!!!会导致网络中断]
[root@localhost NetXtremeII]# modprobe bnx2 [重新加载驱动]
但是,如果你非逼不得已。
可以用以下小方法:
把以上2个命令写成一个 sh 脚本
[root@localhost redhat]# vim lan_dr_up.sh
rmmod bnx2
modprobe bnx2
:wq
然后赐予可执行权限
[root@localhost redhat]# chmod +x lan_dr_up.sh
[root@localhost redhat]# ./lan_dr_up.sh & [留意,在执行命令后方带有&符号,意思是让该命令在后台执行就算ssh控制端掉线了,服务器还能自主把新的网卡驱动重新加载。]
好了,下边我们再次查看网卡驱动的版本号
[root@localhost DRIVER]# modinfo bnx2 [首先查看当前驱动版本]
filename: /lib/modules/2.6.18-164.el5/updates/bnx2.ko
version: 1.9.20d
license: GPL
description: Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver