web-dev-qa-db-ja.com

Linux mdadmソフトウェアRAID 6-ビット破損の回復をサポートしていますか?

ウィキペディアは、「RAID 2は、RAID 6の一部の実装を除いて、データの単一ビットの破損から正確なデータを自動的に回復できる唯一の標準RAIDレベルです。」と述べています。

LinuxでのRAID 6 mdadm実装が、シングルビットデータの破損を自動的に検出して回復できるそのような実装の1つであるかどうか、誰か知っていますか。他のバージョンと異なる場合、これはCentOS/Red Hat 6に関係します。オンラインで検索してみましたが、うまくいきませんでした。

SATAエラー率は1E14ビットに1つであり、1.6E13ビットを含む2TB SATAディスクの場合、これは特にデータ破損の防止に関連しています。

編集2015年6月17日

これは私が最初に考えた問題ではないと思います-参照 ハードディスク/ SSD-エラーの検出と処理-サイレントデータ破損は確実に防止されますか? 詳細について

15
sa289

LinuxソフトウェアRAIDはビット破損からあなたを保護するつもりはなく、サイレントデータ破損はよく知られた問題です。実際、カーネルが1つのディスクからデータを読み取ることができる場合、それが悪いことを知ることはありません。 RAIDは、データの読み取り時にI/Oエラーが発生した場合にのみ起動します。

データの整合性が心配な場合は、 Btrfs または [〜#〜] zfs [〜#〜] のようなファイルシステムの使用を検討してください。チェックサム。これらのファイルシステムはRAID機能も処理するので、この方法で行ってもカーネルソフトウェアRAIDは必要ありません。

15
chutz

RAID5とRAID6は、ドライブ全体のパリティを検証すると、ビット破損を検出し、通常は修正できます。これは「スクラビング」または「パリティチェック」と呼ばれ、通常、ほとんどの運用RAIDシステムでは24〜48時間かかります。その間、パフォーマンスが大幅に低下する可能性があります。 (一部のシステムでは、オペレーターは読み取り/書き込みアクセスよりもスクラブを優先することができます。)RAID6は、2つのドライブ障害が発生した場合に修正できるため、RAID5は1つのドライブ障害しか処理できないため、修正できる可能性が高くなります。ドライブの障害は、アクティビティの増加のためにスクラブしているときに発生する可能性が高くなります。

3
vy32

上記のすべての答えはRAID 6の機能に関して正しくありません。RAID6アルゴリズムは、RAID 5と同様にバイト単位で動作し、いずれかのドライブの1バイトが破損している場合、ドライブにエラーが示されていなくても、検出され、修正されます。そうするためのアルゴリズムは完全に説明されています

https://mirrors.Edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf

このチェックを実行するには、パリティPおよびQドライブもデータドライブと一緒に読み取る必要があります。計算されたパリティP 'とQ'が異なり、ドライブエラーがない場合、分析により、どのドライブが正しくないかを特定し、データを修正できます。

さらに、ドライブIDが存在しないドライブに対するものである場合(ドライブが15しかない場合はドライブ137など)、複数のドライブが破損したデータをTHAT BYTEに提供しており、修正不可能なエラーエラーを通知します。セット内のドライブ数が256をはるかに下回る場合、これはバイトごとに高い確率で検出されます。また、ブロック内には多くのバイトがあるため、ブロックごとに非常に高い確率で検出されます。 RAIDブロック内のすべてのバイトでドライブIDが一貫していない場合も、複数のドライブが破損したデータを提供しており、通常は条件を拒否する可能性がありますが、すべてのドライブIDが有効である限り、ブロックは必ずしも必要ではありません拒否されます。

この修正を実行するには、通常の検証時間よりも時間がかかりますが、シンドローム(PおよびQ)の計算でエラーが発生した場合にのみ実行する必要があります。

ただし、これについてはmdadmコードを調べて、シングルバイトの破損が処理されているかどうかを確認していません。 mdadmが毎月のスキャンでRAID6シンドロームエラーを報告していることを知っていますが、エラーメッセージから、それらが修正されているかどうかは不明です。ドライブアレイを停止したり、メッセージ内の特定のドライブを識別したりすることはありません。

2
Cafe Hunk

私はこれをコメントとして追加したでしょうが、十分な評判がありません。明確にしたかったのですが、RAID5はビットの破損を検出できますが、読み取りエラーがなければ、どのドライブに破損があるのか​​わかりません。その結果、スクラブは読み取りエラーなしではこれを修正できませんでした。ログを記録し、一致するようにパリティビットを更新するだけです。 RAID6のアルゴリズムは位置に依存するため、どのドライブにエラーが含まれているかを検出し、ビットの破損を修正できます。

2
sbingner