ECC 注册与 ECC 无缓冲

use*_*166 23 memory ecc file-server

我想建立一个存储服务器(基于 GNU/Linux 或 FreeBSD),它将一直运行。为了防止数据损坏(这不太可能发生,因为我从来没有遇到过这样的问题,但最好是安全而不是抱歉)我想使用 ECC RAM。

虽然不如 EDD (?)(它更贵)并提供额外的保护。ECC 似乎只能纠正单个位错误。

ECC 注册 RAM 仅可用于工作站/服务器主板,例如 Intel Xeon 或 AMD interlagos/magny-cours/valencia g34 或 c32。

ECC 无缓冲可在华硕主板上的 Intel Xeon lga1155 或 AMD AM3+ 上使用。

第二种选择在处理器和主板方面要便宜得多,我怀疑我是否需要超过 16GB 的 RAM(4x4 GB ECC 无缓冲是最大的经济实惠的棒)。

我的疑问是(主要是关于华硕 am3+ 板):ECC 无缓冲 RAM 和 ECC 注册 RAM 一样好(从安全性和可靠性的角度来看)?或者这是一个更糟糕的选择。我不太在意速度。

更多详细信息:服务器将使用最多配备 24 个 3.5 英寸驱动器的服务器机箱,并且应尽可能少地消耗。从这个意义上说,LGA1155 似乎是更好的选择(TDP ~ 20-95W),而其他产品(>80W)的价格是后者的两倍。欢迎任何建议。假设空闲时低于 120W(~ 24 个硬盘中有 10 个)。

Hen*_*nes 57

ECC 似乎只能纠正单个位错误。

正确的。纠正更多错误需要更多位。实际上,您已经使用 10 位来存储 8 位信息,“浪费”了 20% 的内存芯片以允许进行一位纠正和多达两位的错误检测。

它的工作原理如下。想象一个0或一个1。如果我阅读其中任何一个,那么我只希望我阅读正确的内容。如果 0 被某些宇宙辐射或坏芯片翻转为 1,那么我永远不会知道。

过去,我们试图通过平价来解决这个问题。奇偶校验是每存储 8 位添加第九位。我们检查了字节中有多少个零和多少个 1。第九个设置为偶数。(偶校验)如果你读过一个字节并且数字是错误的,那么你就知道有问题。你不知道哪一点是错的。

ECC 对此进行了扩展。它使用 10 位和复杂的算法来发现单个位何时翻转。它还知道原始值是什么。一个非常简单的方法来解释它是如何做到的:

将所有0s替换为000。将所有1s替换为111

现在您可以阅读六种组合:
000
001
010
100
101
111

我们永远无法 100% 确定最初存储的内容。如果我们阅读,000那么这可能000正是我们所期望的,或者所有三个位都可能翻转。后者可能性很小。位不会随机翻转,尽管它确实发生了。假设对于一些简单的计算,这种情况会发生十分之一(现实情况要少得多)。计算出以下读取正确值的机会:

000-> 要么000(99.9% 确定),要么三次翻转(1/1000 几率)

001-> 我们知道出了点问题。但它要么 000翻转了一位(1:10 的几率),要么 111翻转了两位(1:100 的几率)。因此,让我们将其视为读取000但记录错误。

010 -> 同上。

100 -> 同上。

011 -> 同上,但假设它是一个 111

101 -> 同上,但假设它是一个 111

110 -> 同上,但假设它是一个 111

111-> 要么111(99.9% 确定),要么三次翻转(1/1000 几率)

111-> 要么000(99.9% 确定),要么三次翻转(1/1000 几率)

ECC 有类似的技巧,但效率更高。对于 8 位(一个字节),他们只使用 10 位来检测和纠正。


ECC 注册 RAM 仅可用于工作站/服务器主板 ECC 无缓冲可用于 Intel Xeon lga1155 或华硕主板上的 AMD AM3+。

我已经提到了 ECC 部分是什么,现在是注册部分与未缓冲部分。

在现代 CPU 中,内存控制器位于 CPU 芯片上,从很久以前开始用于 AMD Opteron 芯片和用于英特尔的 Core i 系列。大多数台式机 CPU 然后直接与装有 RAM 的 DIMM 插槽通信。它有效,不需要额外的逻辑。这很便宜,而且速度很高,因为从内存控制器到 RAM 没有延迟。

但是内存控制器只能在高速下驱动有限的电流。这意味着可以在主板上添加多少个内存插槽是有限制的。(更复杂的是,DIMM 可以使用多少,这会导致内存列。我将跳过它,因为这已经很长了)。

在服务器主板上,您通常希望使用比台式机系统更多的内存。因此,一个“寄存器”缓冲区被添加到内存中。从 DIMM 上的芯片读取的内容首先被复制到此缓冲区。一个时钟周期后,该缓冲区连接到内存控制器以传输数据。

这个缓冲区/寄存器会延迟事情,使内存变慢。这是不可取的,因此它仅在具有大量存储库的板上使用/需要。大多数消费类主板不需要这个,大多数消费类 CPU 不支持它。

直接连接的、无缓冲的 RAM 与缓冲/注册的 RAM 并不是一个比另一个更好或更差的情况。它们只是在您可以拥有多少个内存插槽方面有不同的权衡。注册 RAM 允许更多的 RAM,但代价是一些速度(可能还有费用)。在大多数情况下,您需要尽可能多的内存,额外的内存足以补偿以稍慢速度运行的 RAM。

我的疑问是(主要是关于华硕 am3+ 板):ECC 无缓冲 RAM 和 ECC 注册 RAM 一样好(从安全性和可靠性的角度来看)?或者这是一个更糟糕的选择。我不太在意速度。**

从安全性和稳定性的角度来看,ECC-unbuffered 和 ECC-registered 是一样的。


更多详细信息:服务器将使用最多配备 24 x 3 ½'' 驱动器的服务器机箱,并且应尽可能少地消耗。

24 个驱动器将消耗大量电力。多少取决于驱动器。我的 140GB 15K RPM SAS 驱动器在空闲时仅消耗 10 瓦,与 1TB SATA 7k2 磁盘相同。在使用时都绘制更多。

将其乘以 24。24x10 瓦在空闲时意味着 240 瓦只是保持磁盘盘片旋转,克服空气阻力。双重使用中。


从这个意义上说,LGA1155 似乎是更好的选择(TDP ~ 20-95W),而其他产品(>80W)的价格是后者的两倍。

英特尔在低功耗 CPU 方面做得更好,在撰写本文时以及您提到的 CPU 方面。

欢迎任何建议。假设空闲时低于 120W(~ 24 个硬盘中有 10 个)。

如果您选择 FreeBSD,请仔细研究 ZFS。它可以很棒。它的许多更高级的功能(例如重复数据删除和/或压缩)使用严重的 CPU 能力,并且需要大量内存。ZFS 用于 ZRAID 的基本用途在您提到的两个 CPU 集和 16 GB 上都可以正常工作,但是如果您打开重复数据删除等功能,您应该仔细查看磁盘容量所需的推荐内存;一些指南建议每 TB 存储高达 5GB 。

还有两件事:

  1. 我没有看到任何有关连接驱动器的信息。某些主板可能多达 10 个 SATA 端口。但除此之外,您还需要附加卡。如果您考虑硬件 RAID,那么最好从一开始就计划好。
  2. 驱动器故障:如果您使用SATA 端口倍增器,请仔细查看它们在 SATA 驱动器发生故障时的行为。它往往不漂亮。对于家庭设置来说不是大问题,但非常不是企业级问题。您可能还需要考虑单个驱动器如何处理错误。某些驱动器被标记为用于“NAS”或“RAID”的原因是它们处理错误的方式与常规驱动器不同。在没有 RAID 的情况下,您希望驱动器尽可能多地重试。使用 RAID,您希望驱动器快速失效,以便您可以从另一个副本中读取。

  • 赞成,因为这实际上回答了问题,而另一个则是更实用/轶事的建议。我们将忽略它在进入寄存器与未缓冲部分之前有点曲折;) (5认同)
  • 这是一个很好的答案,它不能更短,并且仍然可以很好地解决所有问题。我刚刚做了一个适度的编辑,清理了你的文字,一旦应用就会有所帮助。甚至删除了你的道歉以修剪两行——这里接受的答案并不是很有帮助。当我在那里时,我确实简要介绍了 ZFS 重复数据删除问题和驱动器错误处理。决定不进入振动状态,即使 24 个驱动器也会出现这种问题。 (2认同)

小智 5

两个不同的问题。

ECC 与非 ECC

  • 在正常运行时间很重要的地方使用 ECC
  • 成本更高——需要(倍数)9 个芯片而不是 8 个
  • 主板必须支持才能使用

注册与无缓冲:

  • 可以使用 Registered DIMM 安装(更多)总 RAM
    • 内存控制器接口上的电气应力更小
  • 但是所有安装的 DIMM 都必须注册或不注册
    • 如果升级到注册,必须删除无缓冲的 DIMM
  • 也更贵,而且访问周期更慢
    • 如果这很重要,无缓冲的延迟略低
    • 无论如何,所有随机访问都需要许多周期
    • 请注意,相对于 PC 中 DRAM 使用的历史,绝对访问延迟(以纳秒为单位的时间)并没有太大改善
      • 成本、容量和带宽大大提高了
      • 无论如何,内存缓存隐藏了大多数内存访问的延迟
    • 更长的延迟对单线程“实时”性能的影响最大
      • 通常不会对“服务器”用例产生太大影响
    • 带宽和整体性能没有/最小差异
      • 顺序访问带宽不受影响
      • L2/L3 缓存意味着实际访问模式大多一次替换缓存中的行,因此无论如何通常都是“突发”访问


inf*_*inf -13

好吧,如果您只使用 16GB RAM(这不是服务器 RAM 范围),您就可以使用相当标准的任何桌面 RAM/系统。

如果只是存储服务器,甚至不需要那么高的CPU性能。

就像你说的,选择 Sandy Bridge,它会给你一个很酷、高性能和可靠的系统。

说到 16GB RAM 范围,您不必担心 ECC 问题。

  • 它是事实上的标准这一事实并不一定意味着它足够可靠。已经在互联网上阅读过一些案例,其中磁盘上的所有数据在 HDD 上损坏不是因为 SATA 控制器,而是因为坏(非 ecc)RAM。 (4认同)
  • @user51166 告诉说这句话的人,非 ECC 绝对不是他的问题。 (2认同)
  • “注册 ECC > 无缓冲 ECC” 否/有时。无缓冲/未注册的 ECC 实际上会更快。缓冲/注册 ECC 至少会慢一个寄存器操作,但您可以向内存通道添加更多 DIMM。 (更多的内存**可以**使您的系统更快,即使延迟增加)。因此,正确的答案是“视情况而定”,而不是硬性的“是/否”。 (2认同)