我运行的服务器刚刚遇到了我以前从未遇到过的错误。它发出几声哔哔声,重新启动,然后卡在启动屏幕(BIOS 显示其徽标并开始列出信息的部分)并出现错误:
Node0:DRAM 不可纠正的 ECC 错误
节点 1:HT 链接同步错误
硬重置后,系统启动正常,并且尚未在 edac-util 上报告任何内容。
我的研究告诉我,即使 ECC 内存和系统处于理想条件下,仍然可能出现无法纠正的错误,并且很可能会在系统生命周期的某个时间点发生;一些报告建议至少每年一次或更早。
服务器运行带有多个 ECC 模块的 CentOS 6.5。我已经在尝试诊断哪个模块引发了错误,以评估这是一个错误还是不可避免的事情(如宇宙射线)的结果。
我的研究还表明,当系统像这样停止时,没有地方可以写入日志,唯一可靠的方法是将系统连接到另一个系统,并通过串行端口写出日志。
除了通常的 edac-util、memtest、压力测试和预防性更换之外,在解决此错误时我还应该考虑其他什么吗?
我无法在我搜索的任何 CentOS 日志中找到任何有关此崩溃的记录,这与我认为无法将此错误记录到本地磁盘的信念相吻合。该错误仅在自动重启后由 bios 报告给我。是否建议始终将系统日志写入串行以记录这些类型的错误?
这种故障是可以使用单个系统避免的,还是只能使用昂贵的企业解决方案才能避免?
在单个生产服务器的这些故障情况下,我可以做些什么来提供回退措施;例如,生产服务器本身不跨越多台机器,但可以存在备用服务器。
嗯,这不是一个完全集成的系统,如 HP、Dell 或 IBM 服务器,因此对此类故障的监控和报告不会出现或保持一致。
在我管理的系统中,磁盘最常出现故障,其次是 RAM、电源、风扇、系统板和 CPU。
记忆可能会失败......你无能为力。
请参阅:服务器级硬件是否需要烧录 RAM?
由于您无法真正防止 ECC 错误和 RAM 故障,因此请做好准备。保留备用。物理访问您的系统并维护您的组件的保修。我绝对不会在环境中引入“预防性替换”。其中一些是您的硬件的功能...您有 IPMI 吗?有时硬件日志会在那里结束。
这是更好的服务器硬件的增值之一。这是来自 HP ProLiant DL580 G4 服务器的片段,其中超过了 RAM 上的 ECC 阈值,然后进展为 DIMM 被禁用……最后服务器崩溃 (ASR) 并在停用坏 DIMM 的情况下自行重启。
如果 DIMM 有无法纠正的错误,我建议更换它。如果它只是低比率的可纠正错误,您可能可以忍受它,并且在任何情况下对于可纠正的错误,都将更难获得退款。
如果您想查看是否有记录,请尝试使用
ipmitool sel elist
或等效工具访问 IPMI SEL 记录。另一种选择是设置一个Linux崩溃内核来启动并保存dmesg,这也可以捕获有关硬件故障的信息。
第三种选择是将服务器的串行控制台记录到持久的某个地方,它还将包括软件或硬件类型的服务器崩溃的线索。
这是在回答分享我如何阻止系统崩溃但没有解决原始问题。我仍在研究解决方案,并将分享我在学习过程中提出的任何新信息。
该系统是一个白盒,带有 Supermicro H8SGL-F 主板和 64GB (16x4) Hynix,32GB (16x2) Viking ram。主板规格说明内存模块必须以四个为一组安装,因为处理器使用四通道内存控制器。我将额外的两个 Viking 模块放入其中,看看它是否有效并且确实有效。这个解决方案工作了几个月,但这是我的第一个错误。
我的第二个错误是我错误地安装了内存。对于四通道设置,内存插槽采用颜色编码和交错排列。我的内存是这样安装的:
虽然这种设置确实工作了几个月并且最近才开始产生问题,但我无法确定故障是否是由于容量增加导致我的模块布局是否确实存在问题而导致的问题。
由于我只有一个生产系统,我移除了所有模块并开始将它们以两个成对的方式轮换(仍然不符合规范)并以降低的容量运行系统数周。我没有收到任何崩溃,也没有来自 edac-util 的 ecc 错误报告。但是,有可能出现故障的模块可能位于第二个插槽中,并且根本没有被访问,因此会导致故障。
旋转通过 ram 未能重现错误后,我意识到我错误地设置了 ram。我删除了 Viking 模块并像这样设置新布局:
由于我进行了此更改,系统保持稳定。然而,尽管与规范保持一致,但这并不能确认故障是否与布局、Viking 模块(因为它们已被删除)或有问题的模块是否只是布局中更靠后的 Hynix 模块之一,该模块访问频率不够高不要过错。
请不要将此答案视为对问题的结论,而是我为解决整个问题而采取的步骤。我还没有完成,我会继续报告,因为我会继续寻找解决方案。
另外值得注意的是,自从我将内存设置为新布局以来,系统昨天第一次重新启动。我无法确认这是否是由于正在解决的内存问题,或者这是否是电源的一个单独问题,所以到目前为止,将这一单一事件视为一粒盐。