我运行一个服务器,刚刚遇到一个我以前没有遇到的错误。 它发出几声嘟嘟声,重新启动,并卡在启动屏幕(bios显示其标志的部分,并开始列出信息)与错误:
Node0:DRAM不可纠正的ECC错误
节点1:HT链接同步错误
硬重置后,系统启动良好,尚未报告任何edac-util。
我的研究告诉我,即使在ECC存储器和理想情况下的系统中,一个不可纠正的错误仍然是可能的,并且很可能在系统的某个使用寿命期间发生。 一些报道至less每年一次或更早提出。
服务器运行CentOS 6.5和几个ECC模块。 我已经在试图诊断哪个模块抛出错误来评估这是一个错误,还是像宇宙射线这样的不可避免的事情的结果。
我的研究还表明,当系统暂停时,无法写入日志,唯一可靠的方法是将系统连接到另一个日志,通过串行端口写入日志。
除了通常的edac-util,memtest,压力testing和预防replace,在处理这个错误时还有什么我应该考虑的?
在我search的任何CentOS日志中,我无法find这个崩溃的logging,这与我相信不能将这个错误logging到本地磁盘一致。 这个错误只有在自动重新启动之后由bios报告给我。 是否build议将系统日志写入串行以logging这些types的错误?
使用单个系统可以避免这种故障吗?或者只有使用昂贵的企业解决scheme才能实现这种故障?
我能做些什么来为单个生产服务器的这些故障情况提供后备措施; 如在,生产服务器本身不跨越多台机器,但后备服务器可以存在。
那么,这不是像惠普,戴尔或IBM服务器这样的完全集成的系统,所以这种失败的监控和报告不会是一成不变的。
在我pipe理的系统中,磁盘最常出现故障,其次是RAM,电源,风扇,系统板和CPU。
内存可能会失败…你可以做的事情不多。
请参阅: 服务器级硬件需要烧入RAM吗?
既然你不能真正防止ECC错误和内存故障,只是为它做好准备。 保留备件。 实际访问您的系统并维护组件的保修。 我绝对不会把“预防性替代”引入环境。 其中一些是你硬件的function…你有IPMI吗? 有时硬件日志将会在那里结束。
这是更好的服务器硬件的增值之一。 以下是HP ProLiant DL580 G4服务器的一个片段,其中超过了RAM上的ECC阈值,然后进入DIMM禁用状态,最后服务器崩溃(ASR),并在坏的DIMM停用的情况下重新启动。
0004 Repaired 22:21 12/01/2008 22:21 12/01/2008 0001 LOG: Corrected Memory Error threshold exceeded (Slot 1, Memory Module 1) 0005 Repaired 20:41 12/06/2008 20:43 12/06/2008 0002 LOG: POST Error: 201-Memory Error Single-bit error occured during memory initialization, Board 1, DIMM 1. Bank containing DIMM(s) has been disabled. 0006 Repaired 21:37 12/06/2008 21:41 12/06/2008 0002 LOG: POST Error: 201-Memory Error Single-bit error occured during memory initialization, Board 1, DIMM 1. Bank containing DIMM(s) has been disabled. 0007 Repaired 02:58 12/07/2008 02:58 12/07/2008 0001 LOG: POST Error: 201-Memory Error Single-bit error occured during memory initialization, Board 1, DIMM 1. Bank containing DIMM(s) has been disabled. 0008 Repaired 19:31 12/08/2009 19:31 12/08/2009 0001 LOG: ASR Detected by System ROM
如果DIMM具有不可纠正的错误,我build议更换它。 如果只是可纠正的错误率低,你可能会忍受它,在任何情况下,可纠正的错误是很难得到退款。
如果您想查看是否有logging,请尝试使用ipmitool sel elist或等效工具访问IPMI SELlogging。
另一种方法是设置一个Linux崩溃内核来启动并保存dmesg,这也可以捕获硬件故障的信息。
第三种方法是将服务器的串行控制台logging到持久的地方,同时也包含软件或硬件types的服务器崩溃的线索。
这是回答共享我如何阻止系统崩溃,但没有解决原来的问题。 我仍然在研究解决scheme,并会分享我学到的所有新信息。
该系统是一个带有64GB(16×4)Hynix,32GB(16×2)Viking RAM的Supermicro H8SGL-F主板的白盒。 主板规格说明,由于处理器使用四通道内存控制器,因此必须以四个为单位安装内存模块。 我把额外的两个Viking模块扔进去,看它是否有效, 这个解决scheme工作了几个月,但是我的第一个错误
我的第二个错误是我错误地安装了内存。 内存插槽是四色通道设置的颜色编码和交错。 我有这样安装ram:
[ ========== ] 16GB Hynix [ ---------- ] 16GB Hynix [ ========== ] 16GB Hynix [ ---------- ] 16GB Hynix [ ========== ] 16GB Viking [ ---------- ] 16GB Viking [ ========== ] [ ---------- ]
虽然这个设置工作了好几个月,最近才开始产生问题,但是我不能确定这个错误是否是由于容量增加导致我的模块外有一个问题。
由于我只有一个生产系统,所以我把所有的模块都拆下来,并且开始把它们转成两个(仍然不符合规格),并且在几个星期的时间内以较小的容量运行系统。 我没有收到崩溃,也没有edac-util的错误报告。 但是,有可能错误的模块可能位于第二个插槽中,并且只是没有被访问,从而导致错误。
通过内存旋转后没有重现错误,我意识到我已经错误地安装了内存。 我删除了Viking模块,并像这样设置新的布局:
[ ========== ] 16GB Hynix [ ---------- ] [ ========== ] 16GB Hynix [ ---------- ] [ ========== ] 16GB Hynix [ ---------- ] [ ========== ] 16GB Hynix [ ---------- ]
由于我做了这个改变,系统保持稳定。 尽pipe符合规范,但是这并不能证实故障是否与布局有关,Viking模块(因为它们被移除),或者违规模块只是布局中进一步向下访问的Hynix模块之一不要过错。
请看这个答案不是问题的结论,而是我为解决整体问题所采取的一个步骤。 我还没有完成,并将继续报告,因为我继续寻找解决scheme。
另外值得注意的是,自从我将内存设置为新布局以来,系统首次在昨天进行循环。 我不能确定这是由于记忆问题得到解决,还是由于电源问题,这个单一的事件至今还不够。