常時稼働する(GNU/LinuxまたはFreeBSDベースの)ストレージサーバーを構築したいと思います。データの破損を防ぐために(このような問題が発生したことがないため発生する可能性は低いですが、申し訳ありませんが安全です)、ECC RAMを使用します。
EDD(?)(これははるかに高価です)ほど良くなく、追加の保護を提供します。 ECCはシングルビットエラーのみを訂正するようです。
ECC登録済みRAMは、Intel XeonまたはAMD interlagos/magny-cours/valencia g34またはc32などのワークステーション/サーバーボードでのみ使用できます。
ECCアンバッファードは、AsusボードのIntel Xeon lga1155またはAMD AM3 +で使用できます。
2番目のオプションは、プロセッサとマザーボード側ではるかに安くなり、16 GB以上のRAM(バッファなしの4x4 GB ECCは、最も手頃な価格のスティックです)が必要になると思います)。
私が持っている疑問は(主にasus am3 +ボードに関するものです):ECCバッファなしRAM ECC登録済みRAM(安全性と信頼性の観点から)?それとも悪い選択でしょうか?私はスピードをあまり気にしません。
詳細:サーバーは最大24 x 3.5インチドライブのサーバーケースを使用し、消費量を可能な限り少なくする必要があります。その意味では、LGA1155は2倍の価格で他のデバイス(TW〜20-95W)よりも優れている(> 80W)ようです。どんな提案でも大歓迎です。アイドル状態で120W未満としましょう(24台中10台のハードディスクで)。
ECCはシングルビットエラーのみを訂正するようです。
正しい。より多くのエラーを修正するには、より多くのビットが必要になります。現状では、8ビットの情報を保存するためにすでに10ビットを使用しており、メモリチップの20%を「無駄」にして、1ビットの訂正と最大2ビットのエラー検出を可能にします。
次のように動作します。 0
または1
を想像してみてください。どちらかを読んだら、私は正しいことを読んでほしいと願うだけです。宇宙線または不良チップによって0が1に反転した場合、私にはわかりません。
過去には、それを平等に解決しようとしました。パリティは、格納されている8ビットごとに9番目のビットを追加していました。バイトに含まれるゼロの数と1の数を確認しました。 9番目は、それを偶数にするために設定されました。 (偶数パリティの場合)バイトを読み取り、その数が間違っていた場合、何かが間違っていることがわかりました。どのビットが間違っていたかはわかりません。
その上でECCが拡張されました。 10ビットと複雑なアルゴリズムを使用して、単一ビットが反転したことを検出します。また、元の値が何であったかを知っています。それがどのように行われるかを説明する非常に簡単な方法は次のとおりです:
すべての0
sを000
に置き換えます。すべての1
sを111
に置き換えます。
これで、6つの組み合わせを読み取ることができます。
000
001
010
100
101
111
何が最初に保存されたかは、100%確実ではありません。 000
を読み取った場合、それは予想していた000
であったか、3つのビットすべてが反転した可能性があります。後者はほとんどありません。それは起こりますが、ビットはランダムにフリップしません。いくつかの簡単な計算では10回に1回発生するとします(現実ははるかに少ないです)。これは、正しい値を読み取る次の可能性につながります。
000
-> 000
(99.9%確実)またはトリプルフリップ(1/1000チャンス)
001
->問題が発生していることがわかっています。しかし、それは000
で1ビットが反転した(1:10の確率)、または111
で2ビットが反転した(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ビット(1バイト)の場合、検出と修正に10ビットのみを使用します。
ECC登録済みRAMは、ワークステーション/サーバーボードでのみ使用できます。バッファなしのECCは、Asusボード上のIntel Xeon lga1155またはAMD AM3 +で使用できます。
ECC部分が何であるかについてはすでに説明しましたが、現在は登録済み部分とバッファーなし部分です。
最近のCPUでは、メモリコントローラーはCPUダイ上にあり、AMD Opteronチップではずっと前から、IntelではCore iシリーズで始まっています。ほとんどのデスクトップCPUは、RAMを保持するDIMMソケットと直接通信します。それは機能し、追加のロジックは必要ありません。これは安価に構築でき、メモリコントローラからRAMへの遅延がないため、高速です。
しかし、メモリコントローラは高速で限られた電流しか駆動できません。つまり、マザーボードに追加できるメモリソケットの数には制限があります。 (そして、それをより複雑にするために、DIMMが使用できる量になり、これはメモリランクにつながります。これはすでに長いので、スキップします)。
サーバーボードでは、デスクトップシステムよりも多くのメモリを使用することがよくあります。したがって、「レジスタ」バッファがメモリに追加されます。 DIMM上のチップからの読み取りは、最初にこのバッファーにコピーされます。クロックサイクル後、このバッファーはメモリコントローラーに接続してデータを転送します。
このバッファー/レジスターは遅延を引き起こし、メモリーを遅くします。これは望ましくないため、多くのメモリバンクを持つボードでのみ使用/必要です。ほとんどのコンシューマボードはこれを必要とせず、ほとんどのコンシューマCPUはこれをサポートしていません。
直接接続され、バッファリングされていないRAMとバッファリング/登録されているRAMは、一方が他方よりも優れている、または悪い場合ではありません。メモリスロットの数に関しては、異なるトレードオフがあります。登録されたRAMは、ある程度の速度(および場合によっては費用)を犠牲にしてRAMを増やすことができます。可能な限り多くのメモリを必要とするほとんどの場合、その余分なメモリはRAMがわずかに遅い速度で動作することを補償する以上のものです。
私が持っている疑問は(主にasus am3 +ボードに関する):(安全性と信頼性の観点から)ECCバッファなしRAMはECC登録RAMと同じくらい良いですか?またはそれは悪い選択です。スピードはあまり気にしません。**
安全性と安定性の観点から、ECC-unbufferedとECC-registeredは同じです。
詳細:サーバーは最大24 x 3½ ''ドライブのサーバーケースを使用し、消費量をできるだけ少なくする必要があります。
24台のドライブが大量の電力を消費します。どのくらいドライブに依存します。私の140GB 15K RPM SASドライブは、1TB SATA 7k2ディスクと同じように、アイドル時にわずか10ワットを消費しています。使用時には、両方をさらに引きます。
これを24倍します。アイドル時の24x10ワットは、ディスクのプラッターを回転させたまま240ワットを意味し、空気抵抗を克服します。使用中はそれを二重にしてください。
その意味では、LGA1155は2倍の価格で他のデバイス(TW〜20-95W)よりも優れている(> 80W)ようです。
Intelは、執筆時およびあなたが言及したCPUに対して、低電力CPUが優れています。
どんな提案でも大歓迎です。アイドル状態で120W未満としましょう(24台中10台のハードディスクで)。
FreeBSDに行くなら、ZFSをよく見てください。それは素晴らしいことです。より高度な機能の多く(重複排除や圧縮など)は、深刻なCPUパワーを使用し、十分なメモリを必要とします。 ZRAIDで基本的に使用するZFSは、前述のCPUセットと16 GBの両方で問題なく動作しますが、重複排除などの機能をオンにする場合は、ディスク容量に必要な推奨メモリを注意深く検討する必要があります。ストレージのTBあたり最大5GBを推奨 一部のガイド 。
さらに2つ:
2つの別々の問題。