我将构建一个中等规模的集群(20 个节点,以后扩展),出于各种原因,使用商用硬件应该可以节省大量成本(甚至可以缩短操作周期/故障)。我担心的是持久性内存故障。
这里显而易见的解决方案是在每个节点上定期运行 memtest - 但这会带来 2 个问题:
虽然 memtest 具有运行一次然后退出模式 - 我如何(提前)配置退出后应该发生什么(即启动 Linux)
如果发生错误,运行一次模式就会停止——我该如何将该状态投射出主机?
答案1
实用吗?不定期作为持续运营的一部分。等待停机时间烧入内存不会检测到瞬时位翻转。并且在检测持续故障时引入了显着的滞后。此外,如果您指的是开源 memtest86+,则存在集成挑战,例如不支持 UEFI并自动报告故障。
相反,要获得具有足够 RAS 功能的硬件,即 ECC 内存。然后你的服务器可以向你报告内存故障。
此类错误可能并不常见。没有 ECC 的服务器不会立即崩溃,这是一种选择。但是,如果您的服务器型号有非 ECC RAM 的选择,那么价格溢价通常很小。
答案2
现在,我的问题第一部分有了答案。grub 发行版包含一个叫做格鲁邦斯。因此,如果 Linux 是我的 grub 中的默认设置,我可以要求 grub 运行一次 memtest(然后它将恢复为默认设置)。
到目前为止,第二部分我唯一的选择就是寻找一台机器保持离线(即不运行 Linux)在预定的内存测试预计完成后。
答案3
请问您运行了什么应用程序以及持久性内存故障是什么意思?
据我所知,当今许多应用程序在非 ECC RAM 上运行良好,并且大多数崩溃与 ECC 问题无关,而是内存不足或错误。
而且扫描 RAM 来识别错误是非常低效的。你可以识别潜在错误的第一个地方是从日志文件中,只有当你发现症状时你才需要运行 memtest。
我认为最好先澄清这样做背后的逻辑,以找到更好的解决方案,您认为呢?