最近十天来连续两次遇到服务器网络出现“抽风式”故障—公网网络不定时突然自动down掉(如果要说有特别点最多就流量大点 但也并非常啊)无法连接,还好局域网网络正常服务器系统本身服务也没发现异常情况,也没查看到特别异常的log记录,都只能通过局域网服务连接执行service network restart重启网络服务才能恢复正常,觉得实在比较诡异。觉得怀疑会不会网卡有问题,后来同事提醒下进一步觉得应该是网卡驱动兼容性问题。
环境:OS:CentOS5.5 64Bit 网卡:Broadcom Corporation NetXtreme II BCM5709 系统自带的默认驱动bnx2:2.0.2
网上Google了下据说是RH系列相关系统自带的Broadcom NetXtreme II BCM 5709 驱动有BUG 涉及到关于ACPI电源管理的问题。这么一来网上肯定自然也有相应的修复办法(有人提问题最终肯定有答案,而且这有如电视剧里演的有案件最终肯定有结果不然不可能演)。故在自己的地方简单记录再次警惕自己下…
解决措施:
方案一、系统启动内核加载时停用ACPI电源管理系统 修改相应的Grub.conf引导程序配置文件:(此方案个人未曾尝试过 因为毕竟是在线生产环境还是比较担心不靠谱)
vim /boot/grub/grub.conf
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 acpi=off #内核引导行最后添加acpi=off关闭
initrd /initrd-2.6.18-194.el5.img
方案二、去除使用系统自带的网卡驱动,手动安装更新网卡驱动。(最后选择此方案进行修复待后续观察效果…)
1、先确认当前驱动版本:
modinfo bnx2 #或直接ethtool -i eth0 可以查看到固件版本
filename: /lib/modules/2.6.18-194.el5/kernel/drivers/net/bnx2.ko
version: 2.0.2
license: GPL
--------------------------------------------------------
ethtool -i eth0
driver: bnx2
version: 2.0.2
firmware-version: bc 4.6.4
bus-info: 0000:01:00.0
3、安装更新驱动:
unzip linux-6.0.53.zip #解压驱动程序其中已包括源代码及rpm包
cd Server/Linxu/Driver
rpm -ivh netxtreme2-6.0.53-1.src.rpm #解压出包源码
1:netxtreme2 ########################################### [100%]
cd /usr/src/RedHat/SPECS/
rpmbuild -bb netxtreme2.spec #重建生产对应系统的rpm包
cd ../RPMS/x86_64/
rpm -ivh netxtreme2-6.0.53-1.x86_64.rpm #安装网卡驱动
4、网卡驱动切换:
vim change_driver.sh
rmmod bnx2
modprobe bnx2
chmod 755 change_driver.sh
./change_driver.sh & #后台执行脚本
注:正常情况网络会出现中断一会重新加载完成会自动恢复,如果出现异常未能自动恢复可能需要重启服务器使系统完成重新加载新网卡驱动
5、核实更新后当前驱动版本:
modinfo bnx2 #或直接ethtool -i eth0 可以查看到固件版本
filename: /lib/modules/2.6.18-194.el5/updates/bnx2.ko
version: 2.0.18c
license: GPL
---------------------------------------------------------
ethtool -i eth0
driver: bnx2
version: 2.0.18c
firmware-version: bc 4.6.4
bus-info: 0000:01:00.0
至此,能做基本处理,对于自身环境后续就是还有待再继续观察验证是否是此问题,不定时问题是否还依旧。就比如同事后来置疑到固件版本还是没升级上来,还是4.6.4担心还会有问题。但因为对此情况网上貌似有人测试过单单升级固件版本还是不见效果(来源见参考链接2),故还是先更新驱动看看,真还是依旧有问题的话再找其他招数。