web-dev-qa-db-ja.com

RAIDは一貫性のないデータをどのように処理できますか?

RAID1とRAID5(およびそれらの兄弟10と50)は、ミラーリングとパリティチェックによってそれぞれデータの冗長性を実現します。これにより、ディスク(またはディスク全体)上のセクターが読み取れなくなった場合でも、RAIDアレイはデータにアクセスできます。 RAID 6(または60)は、追加のチェックを使用して二重障害を許容します。

しかし、RAIDアレイは、完全に読み取り不可能ではなく、明らかに一貫性のないデータをどのように処理できるでしょうか。

F.e.などのエラーが発生した場合ストライプ上のデータはディスク上で変更されますが、変更が他のデータに伝播されない場合、ストライプ全体が不整合になります。ミラーリングされたセットで、ディスクが「このビットは0」で、もう一方のディスクが「このビットは1」である場合、RAIDコントローラーはどちらが正しいかをどのように知ることができますか?同じ理由がRAID-5ストライプにも当てはまりますが、複雑さが増し、whichセクターが実際にストライプで間違っていることが簡単にわかりません。また、RAID 6はダブルケックでこの問題を軽減しますか、それともデータが実際に読み取れるときにデータ破損からの回復に問題がありますが、特にRAID 6アレイには多くのディスクがある傾向があるため、どこかで間違っていますか?

これは理論的にはチェックサムで解決でき、whichデータ(またはパリティ)のコピーが正しいことを確認します。しかし、RAIDコントローラーは実際にこの種のチェックサムを実装していますか(もちろん追加のスペースを占有します)?または、ほとんどのファイルシステムがコンテンツをチェックサムできるOSレベルで処理する必要がありますか?この場合、RAIDコントローラーの一般的なアプローチがabstract /である場合、RAIDコントローラーに「ストライプZのディスクYのセクターXのデータが間違っている」とどのように伝えることができますか。基盤となるストレージレイヤーのOSを可能な限り?

8
Massimo
RAID VOLUMES WITH PARITY STRIPE

整合性チェック中に使用するArecaコントローラー(およびすべての最新のハードウェアRAIDコントローラー)では、コントローラーは、破損がパリティデータ、ディスク上の物理データ、またはその両方にあるかどうかを検出できます。ほとんどのコントローラーは、パリティデータとディスク上のデータの単純なチェックサムビットでこれを実現します。

パリティデータが破損している場合、整合性チェックを実行し、物理ディスクで正しいビットを再読み取りしてパリティストライプを再書き込みすると、コントローラは問題に気付きます。ユーザーはファイルを開くときにディスク上のデータを読み取っているので、問題は発生しません。破損したパリティストライプが再書き込みされる原因となるものをすべて保存すると、問題も修正されます。

逆のことが発生し、実際のディスク上のデータが少し反転した場合、コントローラーは整合性チェック中にパリティストライプを調べて、変更されているかどうかを確認します。この場合、コントローラーはディスク上のデータを上書きしてパリティデータと一致させます。これにより、変更されていない/良好であることが確認できます。整合性チェックが実行されてエラーが修正されるまで、ユーザーはデータの内容に応じてCRCエラーまたは破損したファイルを受け取ります。

特定のディスク上のデータのパリティデータが実際のデータと同じドライブに保存されることはないため、単一のドライブに障害が発生してもデータ破損の問題が発生することはありません。または、RAID6などの場合は2つのディスク。

整合性チェックにより、データが可能な限り正確に保たれます。破損したデータをボリュームに長時間置いておくと、パリティデータに書き込まれる可能性があります。つまり、ファイルは完全に破損しているため、バックアップから復元する必要があります。ドライブが整合性チェック中にエラーを示している事前障害状態にある場合は、コントローラーが障害としてマークするのを待つのではなく、すぐにドライブを交換してください。整合性チェックは、少量では毎日、大量では毎週実行されます。

RAID VOLUMES WITHOUT PARITY STRIPE (EX. RAID1)

ハードドライブコントローラ/ファームウェアが問題を修正できる場合があります。これが不可能な場合、RAIDコントローラーは問題を修正するのに非常に苦労します。この場合、データを回復するには、おそらくドライブを個別に読み取る必要があります。

GENERALLY SPEAKING

RAIDカード製造で推奨される間隔で整合性チェックを実行します。破損が本当に心配な場合は、RAIDボリューム上に復元力のあるファイルシステムをスタックすることもできます。最新の復元力のあるファイルシステムは、これらのデータ整合性の問題の多くを修正でき、復元力のあるFS over RAID6をスタックすると、破損することなく、優れたデータ稼働時間が得られます。また、2つの同時ドライブ障害が発生した場合でも、次のようになります。 FS破損したデータをユーザーに提示しないようにするために利用可能なパリティデータ。

3
Brian D.

1つのディスクがエラーを書き込む(または読み取る)状況を効果的に説明します。 RAIDコントローラーには、この状況から保護するための実用的な方法がありません(たとえば、書き込みと読み取りがパフォーマンスを低下させる)。この種のエラーを検出できるディスクに依存し、別のブロックを使用するか、ボリュームから救済する必要があります。これにより、RAIDが劣化します。

単一ディスクの状況について考える場合、一貫性のない書き込み(または読み取り)に対する唯一の保護はディスク自体です。 RAIDはその上に構築されていますが、追加の保護手段は導入されていません。

N.B.私は経験から、XFSがアレイ内のエラーのあるディスクに非常に敏感に反応することを知っています。したがって、少なくとも私の非ローエンドコントローラーとOSは、その不整合を認識しましたが、保護しませんでした(障害のあるディスクとして知られているものがボリュームに強制的に追加されました)。

2
Michael