RAID 1 に 2 つの異なるファイル バージョンが含まれている場合はどうなりますか?

RAID 1 に 2 つの異なるファイル バージョンが含まれている場合はどうなりますか?

ハードウェアを例に挙げましょうRAID 1ディスク付きコントローラそしてBオフラインになり、両方のディスクに存在するファイルがディスク上で変更されましたB(すべてオフライン状態です)。RAID コントローラが再びオンになり、ユーザーが変更されたファイルを要求すると、何が起きるでしょうか? ほとんどの RAID 1 コントローラは、そのファイルからの読み取りを試行するまでエラーを検出しないものと想定しています。

  1. RAID コントローラは、ファイル サイズ/日付/署名の違いを識別してエラーを報告しますか、それとも、変更を認識せずに、そのファイルの 2 つのディスクのいずれかのコンテンツを渡すのでしょうか?

  2. オペレーティング システムはエラーを検出しますか?

  3. ソフトウェア RAID 1 コントローラは動作が異なりますか?

  4. そして最後に、RAID 1アレイではいいえディスクのうち、OSやコントローラが実際に読み取るディスクはどれですか?すべてNですか?一部のRAIDコントローラは常にディスク 0、ランダムにディスクを選択するのでしょうか、それともファイルシステムにアクセスして整合性をチェックするのでしょうか (ディスクが暗号化されている場合でも)?

答え1

「ファイルシステムにアクセスして整合性をチェックできますか(ディスクが暗号化されている場合でも)」?いいえ。RAIDコントローラファイルについて知らない– ディスクコントローラのふりをし、ブロック(セクター)のみを扱います。両方のディスクの個々のセクターが正しく書き込まれているため、ブロックレベルでエラーは検出されません。

ハードウェアRAIDコントローラがミラーの不一致をどのように処理するかについての情報があるかどうかはわかりません。しかし、Linuxの長年の保守者であるNeilBrownは、ムドレイドソフトウェアRAID機能 – 投稿しましたこのLWNコメントmdraid がこれをどのように処理するかを説明します。

[...] RAID1 内の 2 つのデバイスに同一のデータが含まれていない場合、または RAID4/5/6 内のデータの合計がパリティ ブロックと一致しない場合、これは不整合であり、破損ではありません。
最も可能性の高い説明は、アレイ内の複数のデバイスに書き込みが行われていたときに、何か問題 (電源喪失など) が発生し、一部の書き込みは成功し、他の書き込みは失敗したというものです。どれが成功してどれが失敗したかは問題ではありません。

この場合、どちらのブロックも間違っていません。もう一度言います。両方のブロックは正しいです。単に異なる時点で正しいだけです。
ここでは破損はなく、不一致があるだけです。
各ブロックには新しいデータまたは古いデータのいずれかが含まれ、どちらもある意味では正しいです。
(ブロックがデバイスに半分書き込まれた場合、デバイスのコンデンサが十分に大きくない場合に発生する可能性がありますが、CRC が正しくないため読み取りエラーが発生します。CRC エラーが発生すると、md/raid はデータが間違っていることを認識しますが、とにかくデータを読み取ることさえできません)。

RAID1 の場合、どのデバイスを使用するか、どのデバイスのデータが置き換えられるかは、まったく問題ではありません。md はデバイス リストの最も古いデバイスを任意に選択します。
パリティ アレイの場合、パリティを使用しても他のどのデバイスと不整合があるかはわからないため、データを使用してパリティを無視するのが合理的です。(パリティがデータと整合していない可能性があると考える理由があり、データ ブロックの 1 つが欠落している場合 (デバイスに障害がある場合)、データもパリティも使用できず、「書き込みホール」が発生します)。


では、オペレーティング システムはエラーを検出するのでしょうか? それは、ディスクで使用されているファイル システムと、不整合のあるセクターがファイルに属していたか、ファイル システム自身のメタデータに属していたかによって異なります。メタデータ セクターに不整合があった場合は、検出される可能性が高くなりますが、ほとんどの場合、RAID の不整合ではなく、一般的なファイル システムの破損として報告されます。

ファイルの場合は、ほとんどのファイルシステムがファイルの内容のチェックサムをまったく行わないため、ディスクから読み取った内容がそのままファイルの内容になる可能性が低くなります。チェックサムを実行する Btrfs、ZFS、ReFS などの例外はごくわずかです。

これらのうちいくつか(Btrfs、ZFS)は、実際に独自のディスクミラーリング機能を備えており、ファイルシステムがハードウェアRAIDよりも優れているという点で、知っているどのディスクに不良データがあるかを判断し、他のディスクから読み取ってファイルを自動的に修復できます。ただし、ハードウェア RAID では、RAID コントローラに「他のバージョン」を要求する方法がないため、修復は不可能になります。


ソフトウェア RAID 1 コントローラの動作は異なるでしょうか? そうなる可能性はあります (上記の LWN コメントを参照) が、もう 1 つ重要な違いもあります。

ソフトウェア RAID (およびファイルシステムのミラーリング) では、ディスク自体にミラー セットに属しているかどうかに関する情報が保持されます。そのため、1 つのディスクを別の場所に移動しても、そのディスクは不完全な RAID 1 アレイの一部として認識され、通常、ソフトウェアはそもそもそのディスクへの書き込みを許可しません。つまり、ミラーを分割しない限り、読み取り専用のままになります。

関連情報