因此,我在家里有一个设置,我在其中运行 Windows 服务器 2019,运行 Software Raid 5 设置,运行通过磁盘管理器创建的 5 个磁盘。由于这是一个家庭系统,我还没有真正发现值得进行适当的硬件突袭(而且那些更便宜的“家用”突袭卡只是将计算卸载到 CPU 上,并且没有电池支持)。服务器有 8 条内存,分为 2 组,每组 4 组(Set1 和 Set2)
现在,几周前,服务器崩溃了,黑屏,完全没有响应。重启后导致RAID阵列开始重新同步。然后它在 2 天后再次崩溃。调查了一下,我发现其中一个内存模块已经非常糟糕,几乎所有我能对它进行的测试都失败了。所以,我删除了包含这个模块的一组 4 个模块(Set1),并留下了第二组(Set2),其中有四个模块。
现在,重新同步在我留在那里的内存(Set2)上完成得很好,但是,当我更换了坏内存时,我更换了服务器中的所有内存,包括那些留在里面的内存,以确保所有内存模块都相同类型和规格。
从服务器中删除该工作集(Set2)后,我决定对其进行测试,结果发现其中一根棍子也很糟糕,其中一根棍子在单个内存地址处始终失败。不是来自 Set1 的棒的无穷无尽的错误列表,但仍然是一个错误。
问题就在这里。我的磁盘上的奇偶校验数据有可能是坏的吗?我不太了解在重新同步期间如何计算和处理这些数据,或者,因为它是非常少量的数据,如果它实际上完全离开了 CPU 缓存甚至命中了主内存。我担心如果我的奇偶校验数据不好,下次我需要更换 raid 阵列中的坏磁盘时会导致灾难。
我已经有这样的心态,除非有人说服我否则它是不好的,但我希望对 Windows 中的软件突袭重新同步过程如何工作有更深入的技术知识的人可以确认或否认它。也许有适当的检查可以实际检测并防止这成为问题?如果它有变坏的风险,有没有一种方法可以强制 Windows 重新同步阵列以替换奇偶校验数据而不进行强力断电?(而且我也不希望通过移除磁盘来故意对阵列造成故障,因为如果奇偶校验数据错误,这将导致我想避免的问题。)
是的,我有历史记录的所有内容的最新备份。
这真是太棒了!我想我得给你讲一个关于备份的标准讲座。你可能需要它们。
这就是 ECC RAM 的作用。ECC 模块可以纠正每个字节的一个错误位翻转并检测所有 2 位错误(以及一些 2+)。在后一种情况下,它会使机器崩溃,因为这比处理已知的不良数据更安全。
ECC 在服务器中非常重要,因为没有它,系统必须盲目相信内存中的数据是正确的。DDR5 规范甚至要求所有模块的 ECC。
听起来你没有 ECC 内存,所以你不能确定你的数据是好的。我通常会假设 RAID 不可信,因为 RAID5 只能检测错误,但不能正确纠正它们(除非文件系统可以做到这一点,而 NTFS 不能 AFAIK)。擦洗阵列将使其保持一致,但不能保证所做的调整是正确的。
您可以:
这是假设你知道你的备份是好的。如果源系统默默地破坏数据,情况可能并非如此。
考虑切换到 ECC 内存以防止将来发生这种情况。