我正在尝试构建一个虚拟化服务器。但是,我问了自己一个问题:我是否应该为该服务器坚持使用非 ECC RAM?
这是因为我找到了一款符合我预算的 Xeon CPU。但是,如果我想要一款支持 ECC RAM 的 CPU,那么它就超出了目前的预算。
该服务器将全天候运行大约 10 台虚拟机,其中混合了 Linux 和 Windows 虚拟机。
对此有什么看法吗?
答案1
这取决于您是否能够承受更高的内存损坏风险。
ECC 绝不能完全保证所有错误都会得到纠正或检测 - 但它在检测甚至纠正相当多类型的故障方面做得相当好。如果您的堆栈在单个节点上运行而不是跨多个节点进行 HA/复制,这一点尤其重要。如果您只有一个内存池作为单一事实来源,那么您最好让它成为一个好的内存池。
话虽如此,这完全取决于用例。假设您的一个模块出现故障(或者模块没有问题,而且您住在离星星很近的地方),然后您开始悄无声息地破坏数据(我们这里不使用 ECC)。如果在检测到这种情况之前某些数据丢失或损坏,这会影响您的业务吗?在大多数情况下,确实会这样 - 因此值得花更多的钱购买硬件以减轻这些情况下的可能性。
一般来说,应用程序及其开发人员严重依赖数据路径的可靠性。可靠性较低的堆栈是否会浪费大量管理员和开发人员的时间?这可能最终比购买更好的硬件更昂贵。
如果您的基础设施是集群化的和复制的,那么这种情况会有所缓解,因为有许多存储和应用程序系统可以对跨多个硬件节点的数据集进行校验和。一个坏节点不会一定破坏这些系统中的集群,因此在某种规模下,您可以减少每个节点的冗余和错误检查。不过,听起来情况并非如此。