自動ディスクエラーとLinuxスワッピングの安定性

自動ディスクエラーとLinuxスワッピングの安定性

私が理解しているように、ハードドライブとSSDはドライブ内にいくつかの基本的なエラー修正機能を実装しています。決定します。ただし、これは保存されたエラー診断が100%正しいかどうかによって異なります。これは事実ではなく、2台のドライブRAID-1ミラーなどの一般的な構成は脆弱です。あるドライブの一部のビットが自動的に破損し、ドライブが読み取りエラーを報告しないとします。したがって、btrfsやZFSなどのファイルシステムは、故障したドライブファームウェア、故障したSATAケーブルなどを信頼しないように独自のチェックサムを実装します。

同様に、RAMにも信頼性の問題がある可能性があるため、この問題を解決するためにECC RAMがあります。

私の問題はこれです:2ディスク構成(メインラインカーネルドライバなど)でドライブファームウェアが捕捉できない自動破損/ビット破損からLinuxスワップファイルを保護する標準的な方法は何ですか?私の考えでは、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があります。
  • 交換はありますか? ? ? <---これは私の問題です

ベストアンサー1

我々は、交換から取得されたデータの整合性を信頼します。ストレージハードウェアチェックサム、CRCなどがあります。

上記のコメントの1つで、次のように言われました。

はい、しかし、ディスク自体の外側のビットフリップは防止できません。

ここで、「It」はディスクのチェックサムを表す。

これは本当ですが、SATAは32ビットCRCを使用します。コマンドとデータに使用されます。したがって、ディスクとSATAコントローラ間のデータが検出されずに破損する可能性は40億分の1です。つまり、継続的なエラーソースは送信された125MiBごとにエラーを引き起こす可能性がありますが、宇宙船などのまれなランダムエラーソースは非常に低い割合で検出できないエラーを引き起こす可能性があります。

また、ソースから送信された125MiBあたりの1つのエラーに近い割合で検出されなかったエラーが発生した場合、パフォーマンスが低下することに注意してください。悪い数が多いから検出済み再送信が必要なエラーです。モニタリングとロギングにより、タイムリーな問題を警告し、検出されない損傷を防ぐことができます。

ストレージメディアのチェックサムに関して、すべてのSATA(およびそれ以前のPATA)ディスクは一種のセクタ固有のチェックサムを使用します。 「エンタープライズ」ハードドライブの特徴の1つは、保護されているセクターが大きいことです。追加データ整合性機能、検出されないエラーが発生する可能性が大幅に減少します。

これらのアクションがなければ意味がありません。スペアセクタプールすべてのハードドライブ:ドライブ自体は不良セクタを検出できないため、新しいセクタを交換できません。

他のコメントでは、次のように質問しました。

SATAがそんなに信頼できるのなら、なぜZFS、btrfs、ReFSなどのようなチェックサムファイルシステムがありますか?

一般的に、長期保存データの交換は必要ありません。スワップ記憶容量制限はシステム全体に適用されます。稼働時間、システムの仮想メモリシステムを通過するほとんどのデータは寿命の短いプロセスに属するため、スワップ内のほとんどのデータは長く持続しません。

さらに、コアとコアの実行頻度が増加するにつれて、稼働時間は一般に長年にわたって減少しました。libcアップデート、仮想化、クラウドアーキテクチャなど

さらに、スワップ内のほとんどのデータは基本RAM自体を消費しないため、よく管理されたシステムでは本質的に使用されません。そのようなシステムで交換で終わる唯一のことページこのプログラムはほとんど使用されません。これはあなたが思うよりも一般的です。プログラムがリンクするほとんどの動的ライブラリには、プログラムで使用されていないルーチンが含まれています。動的リンカー。オペレーティングシステムは、ライブラリ内のプログラムテキストの一部を使用していないことを発見したら、それを置き換えてプログラムコードとデータのスペースを解放します。はい使用。このように交換されたメモリページが破損した場合、誰が知っていますか?

ZFSとは異なり、データがシステムの現在の稼働時間以降だけでなく、ストレージシステムを構成する個々のストレージデバイスの寿命を超えて持続するようにデータを継続的に保存したいと考えています。 ZFS解決などの問題は、交換で解決された問題よりも約2倍長い時間スケールを持ちます。したがって、ZFSの損傷検出要件は、Linuxスワップ領域よりもはるかに高いです。

ZFSなどは別の主な方法でスワップとは異なります。スワップファイルシステムを一緒にRAIDしません。いつマルチスイッチングデバイス機械に使用され、JBODRAID-0以降とは異なり、スキームです。 (例えば、macOSのチェーン交換ファイルスキーム、Linuxswaponなど)スワップデバイスは独立しており、RAIDのように互いに依存しないため、多くのチェックサムは必要ありません。これは、スワップデバイスを交換するときに、交換デバイスで実行する必要があるデータに対して他の相互依存スワップデバイスを見つける必要がないためです。デバイス。 ZFS 用語では、他のストレージデバイスの重複コピーからスワップデバイスを再同期しません。

これらすべては、安定したスイッチングデバイスを使用する必要があることを意味します。私は一度失敗したZFSプールを救うために20ドルの外部USB HDDエンクロージャを使用したことがあります。 ZFSの強力なチェックサムが私を救ってくれました。ファイルを交換すると、記憶媒体をそのように粗く扱うことができない。スワップデバイスが寿命を延ばし、125MiB転送ごとに検出できないエラーが注入される最悪のシナリオに近づく場合は、できるだけ早く交換してください。

この質問に対する編集証の全体的な感覚は、例えば説明される。ビザンチン将軍問題。注意深く読んで、コンピュータサイエンスコミュニティに問題を説明する学術論文の1982年の日付を考慮し、2019年に問題についての新しい考えがあるかどうか決定しなさい。そうでなければ、おそらくそうです。使用この技術は、ビザンチン将軍の問題を理解している30人のコンピュータサイエンスの卒業生によって設計されています。

これは陳腐な表現です。コンピュータサイエンスジャーナルで取り上げられていないアイデア、反対、解決策は思い浮かばないかもしれません。

SATAは確かに完全に信頼できませんが、学界やカーネル開発チームに参加する予定がなければ、既存の技術に実質的な貢献をすることはできません。すでに知っているように、これらの問題はすでに非常によく解決されています。 ZFS、btrfs、ReFS...オペレーティングシステムのユーザーとして、オペレーティングシステムの作成者がこれらの問題を解決していることを信頼する必要があります。ビザンチン将軍について学びます。

これは現在は実用的ではありませんスワップファイルをZFSまたはBtrfsに入れます。しかし、上記の内容で安心できない場合は、少なくともxfsまたはext4に入れることができます。これは専用のスワップパーティションを使用するよりも優れています。

おすすめ記事