我在上一个 Debian 服务器上遇到了问题。我的屏幕上每隔几秒就会显示这个错误:
EDAC MC0: INTERNAL ERROR: csrow value is out of range (7 >= 4)
edac-utils 给出:
mc0: 0 Uncorrected Errors with no DIMM info
mc0: 44747 Corrected Errors with no DIMM info
mc0: csrow0: 15330 Uncorrected Errors
mc0: csrow0: mc#0csrow#0channel#0: 0 Corrected Errors
mc0: csrow0: mc#0csrow#2channel#0: 0 Corrected Errors
mc0: csrow2: 0 Uncorrected Errors
mc0: csrow2: mc#0csrow#1channel#0: 0 Corrected Errors
mc0: csrow2: mc#0csrow#3channel#0: 0 Corrected Errors
mc0: csrow3: 0 Uncorrected Errors
mc0: csrow3: mc#0csrow#1channel#1: 0 Corrected Errors
mc0: csrow3: mc#0csrow#3channel#1: 0 Corrected Errors
Memtest 上没有任何内容。
有什么问题?如何解决?
谢谢。
答案1
EDAC 对大多数(所有?)内存组抱怨,而 Memtest 没有显示任何错误,这很可能意味着您的 ECC RAM 正常,但在启动时未由 BIOS 正确初始化。
为了初始化 ECC 位 - 必须先写入内存才能使用。通常由 BIOS 完成,但对于某些主板(例如 ASUS P5B),如果启用了“快速启动”,则会跳过此步骤。因此,每次访问未初始化的单元时,您都会收到 EDAC 错误,同时服务器可以正常工作。
尝试在 BIOS 中禁用快速启动,看看是否有帮助。
如果您无法物理访问硬件,或者您的 BIOS 没有提供禁用快速启动功能的选项 - 还有其他方法可以在加载 EDAC 模块之前初始化内存。添加memtest=1
到您的内核命令行/etc/default/grub
并运行update-grub
以更新配置(我假设您正在运行 Debian/Ubuntu)。内核将在启动时使用其内置的内存测试器,作为测试的一部分,所有内存都将被写入,从而导致 ECC 位初始化。
答案2
memtest 可能不会显示问题,但我可以mc0: csrow0: 15330 Uncorrected Errors
在日志中看到。看来您的 RAM 有问题。根据主板的不同,您应该能够找到确切的坏块并更换它。