2台DL580g10服务器,安装了oracle linux(版本7.6),配置RAC,oracle 是19c。
最近几天两个节点的心跳网卡(igb,eno3和eno4),经常的up/down,甚至导致其中1个节点被踢出rac集群。
一个月以前,其中一个节点的服务器曾经发生过hung住的现象,就是服务器从外观显示正常,网卡,FC HBA,硬盘,电源等等都正常,而且没有故障灯亮,iLO中也没有报警出现。但是ping不通,该节点的业务中断,连接的显示器没有信号输出。直到将该服务器断电重启,才恢复正常。
linux日志文件中(/var/log/messages),故障这段时间是没有记录的。
昨天,那个故障节点又出现了一摸一样的问题(晚上22点多),当时在做igb网卡驱动的升级,步骤在make install之前,没有完成升级。也没有特别多的业务(主要业务在白天)。
igb用于RAC心跳,i40e用于业务。
igb升级前的版本是5.4.0,升级后的版本是5.12.3
另外还有一个问题。该双节点的服务器,大约1年前添加过内存,服务器断电升级内存之后启动,i40e网卡配置的team失效不好用了,最后改成了bond才恢复。
这种情况是服务器的硬件问题,还是其它的问题,如何排查呢
iLO版本是2.33,BIOS 版本是v2.40,服务器设置的workload profile是general power efficient compute, power regulator mode:Dynamic power saving.
Linux的内核,uname -r的输出是4.14.35-1818.3.3.el7uek.x86_64
.一、核心问题分析:为什么服务器“假死”且无日志?
这是整个问题中最关键也最危险的信号。当一台服务器完全无响应、显示器无输出,但硬件指示灯正常、iLO无告警时,说明故障发生在比操作系统更深的层面——很可能在硬件初始化或CPU/内存子系统层面。
这种“静默挂死”通常由以下原因引起:
CPU缓存一致性错误:这是最符合你描述的可能性。当多个CPU核心访问同一内存地址时,缓存一致性协议(如MESI)负责协调。如果硬件或BIOS层面存在缺陷,可能导致协议死锁或总线超时,整个系统会瞬间冻结,操作系统来不及记录任何日志。HPE DL580 Gen10这类四路服务器对CPU间的一致性要求极高。
PCIe总线故障:网卡(igb/i40e)、FC HBA都通过PCIe总线与CPU通信。如果总线链路不稳定或存在电气问题,可能导致DMA操作卡死,进而挂死整个系统。
内存故障的隐蔽表现:一年前添加内存后,i40e网卡的team模式失效(最终改用bond才恢复),这是一个重要线索。内存升级如果未严格遵循HPE的内存填充规则(如混用不同Rank的内存、未按顺序插槽安装),可能导致某些内存访问异常。这类问题在低负载时可能不显现,但在特定访问模式(如网卡DMA)下会触发。
电源管理问题:你当前的电源策略是Dynamic Power Saving,这可能导致CPU在负载变化时频繁切换C-state(深度睡眠状态)。在某些BIOS版本中,C-state切换与PCIe设备的中断响应存在兼容性问题,可能导致设备超时、系统无响应。
心跳网卡(igb)的频繁抖动直接触发了Oracle RAC的节点驱逐机制。RAC的CSS(Cluster Synchronization Services)进程通过网络心跳和磁盘心跳双重机制监控节点健康。
当网络心跳在默认超时时间(约30秒)内持续丢失,CSS会判定该节点异常并将其踢出集群。而你观察到的网卡up/down正是心跳丢失的直接原因。
但需要追问:网卡up/down是“因”还是“果”?
如果网卡驱动本身存在bug,可能导致链路状态误报或DMA卡死,引发网卡重置。
更可能是:底层硬件(PCIe、CPU)的不稳定,导致网卡无法正常工作,驱动层检测到超时后被迫重置链路。
你在升级igb驱动时(尚未完成make install)触发了同样的挂死现象,这进一步印证了“硬件是根因”的判断——因为驱动升级过程本身会触发网卡的重置和重新初始化,这个过程对PCIe总线的稳定性是一个“压力测试”。如果总线或CPU层面存在隐患,这个操作就可能成为导火索。
这是最重要的一步,必须在下次故障前准备好。
方案:通过iLO发送NMI(不可屏蔽中断)
HPE Gen10服务器支持通过iLO向操作系统发送NMI,强制触发内核崩溃转储(crash dump),从而捕获系统挂死瞬间的状态。
操作步骤:
提前安装kdump服务(Oracle Linux 7默认可能未安装):
配置crashkernel参数(如已配置可跳过):
在系统挂死时:登录iLO Web界面 → 点击“系统信息” → 选择“电源与散热” → 点击“生成NMI”按钮。
分析生成的vmcore文件:使用crash工具分析内核转储,定位故障时的调用栈。
这个方法的优势在于:即使系统完全无响应、显示器无输出,只要iLO网络可达,就能触发转储,获取宝贵的诊断信息。
你的BIOS版本是v2.40,iLO版本是2.33。HPE ProLiant Gen10系列的固件更新较为频繁,建议立即检查是否有已知问题的修复。
重点关注以下设置调整:
| 配置项 | 当前设置 | 建议调整 | 原因 |
|---|---|---|---|
| Workload Profile | General Power Efficient Compute | Custom | 避免预设电源策略引入的不确定因素 |
| Power Regulator Mode | Dynamic Power Saving | Static High Performance 或 OS Control | 固定CPU性能,排除C-state切换导致的PCIe延迟 |
| QPI/UPI Configuration | 未知 | 检查是否启用“Cluster-on-Die”,如有则禁用 | 某四路服务器的缓存一致性问题与此相关 |
| PCIe ASPM | 未知 | 禁用 | 主动电源管理与某些PCIe设备存在兼容性问题 |
| C-States | 未知 | 设为 C0/C1(禁用深度睡眠) | 优先排除电源管理因素 |
固件更新路径:
BIOS最新版本:前往HPE Support Center搜索DL580 Gen10,查看v2.40之后的更新说明,重点关注“System may hang under heavy PCIe load”或“Processor cache coherency”相关的修复项。
iLO固件:当前2.33版本较老,建议更新至2.70以上版本。
暂无评论
dmesg | grep -i aer
dmesg | grep -i pcie
dmesg | grep -i error
dmesg | grep -i timeout
PCIe Bus Error: severity=Corrected
PCIe Bus Error: severity=Uncorrected
i40e PCIe reset
igb PCIe link lost
grep -i hardlock /var/log/messages*
grep -i softlock /var/log/messages*
grep -i NMI /var/log/messages*
grep -i watchdog /var/log/messages*
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论