私の理解では、ハードドライブとSSDはドライブ内にいくつかの基本的なエラー修正を実装しており、ほとんどのRAID構成(例:mdadm)はこれに依存して、ドライブがエラーを修正できず、オフラインにする必要がある時期を決定します。ただし、これは、ストレージのエラー診断が100%正確であることによって異なります。そうではなく、2ドライブのRAID-1ミラーのような一般的な構成は脆弱です。1つのドライブの一部のビットが警告なしで破損し、ドライブが読み取りエラーを報告しないとします。したがって、btrfsやZFSのようなファイルシステムは、バグのあるドライブファームウェアや問題のあるSATAケーブルなどを信頼しないように、独自のチェックサムを実装します。
同様に、RAMにも信頼性の問題があるため、この問題を解決するためのECC RAMがあります。
私の質問はこれです:Linuxスワップファイルを2つのディスク構成のドライブファームウェア(つまりメインラインカーネルドライバーを使用して)でキャッチされないサイレント破損/ビット腐敗から保護する正規の方法は何ですか?ここでエンドツーエンドの保護が不足している構成(btrfsによって提供される構成など)は、ECC RAMによってもたらされる安心感を多少打ち消しているように思えます。しかし、私は良い方法を考えることができません:
- btrfsはスワップファイルをまったくサポートしていません。あなたはbtrfsファイルからループデバイスをセットアップし、それをスワップすることができます。しかし、それには問題があります:
- ランダム書き込みはうまく機能しません:https : //btrfs.wiki.kernel.org/index.php/Gotchas#Fragmentation
- コピーオンライトを無効にする提案があると、チェックサムも無効になるため、この演習の全体のポイントは無効になります。彼らの前提は、データファイルには独自の内部保護があるということです。
- :LinuxでのZFSは、私は仕事ができると思いスワップ、としてZVOLを使用可能にhttp://zfsonlinux.org/faq.html#CanIUseaZVOLforSwapしかし、私の読書から、ZFSは、通常、メモリに要求している、そしてそれは、スワップで働い取得します- -のみのアプリケーションは、それを理解するいくつかの仕事のように聞こえます。これは私の最初の選択ではないと思います。信頼できるスワップを行うためだけにツリー外のカーネルモジュールを使用する必要がある理由は、私を超えています-今日の時代のほとんどの最新のLinuxディストリビューション/カーネルでこれを実現する方法は確かにありますか?
- 私はこの質問に議論正確な理由のために、メモリマネージャ自体の中にチェックサムを有効にするには、パッチが適用されたLinuxカーネルのメーリングリストのスレッド、実際にありました: http://thread.gmane.org/gmane.linux.kernel/989246は -残念ながら、私の知る限りでは、パッチは停止し、私には知られていない理由により、アップストリームに到達しませんでした。残念ながら、それは素晴らしい機能のように思えました。一方、RAID-1にスワップを配置する場合-破損がチェックサムの修復能力を超えている場合、パニックまたは何かの前に、メモリマネージャーが他のドライブから読み取ろうとする必要があります。おそらく、メモリマネージャが行うべきことの範囲外です。
要約すれば:
- RAMにはECCがあり、エラーを修正します
- 永続ストレージ上のファイルには、エラーを修正するためのbtrfsがあります
- スワップには??? <---これは私の質問です