web-dev-qa-db-ja.com

RAID 1は破損から保護しますか?

RAID 1はデータの破損を防ぎますか?たとえば、すべての重要なファイルをNAS、RAID 1で2つのディスクを使用)に保持しているとします。1つのハードドライブに何らかの内部問題があり、データが破損した場合、RAIDはこれを自動的に認識し、他の正常なディスクからのデータを使用して修正しますか?

どのコピーが良いものかさえ知ることができますか?

RAID 5は破損から保護しますか?

RAIDはバックアップソリューションではないことを私は知っています。破損したデータをバックアップしていないことを確認する方法を見つけようとしています!

14
Shaun

RAID-1は、2つのドライブのうちの1つの完全な障害から保護します。ドライブが故障としてマークされていない場合、その内容は正確であると見なされます。ただし、何らかの理由で2つのドライブのいずれかが一貫性のないデータを返していた場合、そのエラーはRAIDシステムによって検出されず、アプリケーションは不良データを取得します。

多くのコントローラーには定期的に実行される検証プロセスがありますが、これの目的は、データの整合性ではなく、ディスク障害をテストすることです。ハードドライブは、不良セクタを見つけるために使用する独自のデータ整合性テストとチェックサムを実装しますが、アルゴリズムは高速かつコンパクトに設計されており、完全ではないため、エラーが漏れる可能性があります。

データの破損は規則ではなく例外ですが、前代未聞でもありません。たとえば、ZFSチームのメンバーは、ZFSがそのファイルシステムレベルでチェックサムを実装しているという事実のおかげで、彼らが見つけたハイエンドRAID-5デバイスによって破損したデータが彼らに提供されているのを見たインタビューで報告しました。

13
tylerl

それは、破損がどこから発生したかによって異なります。 RAID 1ミラーのドライブがねじれていて意味のない書き込みをしている場合、RAIDミラーは劣化し、適切なドライブが使用され、適切なファイルが作成されます。 RAID 5の場合、これは2つのデータドライブとパリティドライブ(最も単純な形式)で実行され、3つのドライブの1つが適切なファイルの書き込みに失敗すると、失敗し、2つのデータが残ります。ドライブまたは1つのデータドライブとパリティドライブ。

次に、破損がウイルスまたはプログラムのバグによって引き起こされた場合に何が起こるかを見てみましょう。 RAID1およびRAID5では、ドライブが正しく書き込みを行っているため、ドライブがアウトオブサービスになることはありません。何も失敗していません。ただし、ウイルスまたはバグがジャンクを書き込んでいるため、ファイルは破棄され、RAID 1ミラーの両方のドライブと、RAID5システムの3つのドライブすべてに書き込まれます。

そのため、RAIDはバックアップではありません。これは、ディスク障害である可能性が最も高い障害を防ぎますが、他の多くのシナリオを考慮していません。

5
Joshua Levitsky

他の人が指摘しているように、raid1システムには、2つのセクターのどちらが悪いかを判断する方法がありません。

ハイエンドのRAIDシステムは、バックグラウンドでスクラブ操作を実行して、両方のコピーを比較し、違いにフラグを立てます。さらに良いのは、ドライブから両方のブロックを毎回読み取り、読み取り時にそれらを比較するシステムです。ただし、これらの違いを解決することは、RAIDコントローラーでは不可能です。

Mdadmを使用するUnixシステムでは、「sync_action」を使用してスクラブチェックを開始できます。

md配列は、デバイスのsysfsディレクトリにあるファイルmd/sync_actionにcheckまたはrepairを書き込むことでスクラブできます。

スクラブを要求すると、mdはアレイ内のすべてのデバイスのすべてのブロックを読み取り、データに一貫性があることを確認します。 RAID1とRAID10の場合、これはコピーが同一であることを確認することを意味します。 RAID4、RAID5、RAID6の場合、これは、パリティブロックが正しい(またはブロックが正しい)ことを確認することを意味します。

raid1は、ドライブ全体の突然の障害から保護するためのものです。腐敗に対する保護を他の場所で探してください。それを超えると、Raid1は「履歴」を提供しないため、人的またはソフトウェアのエラーから回復することはできません。破損から保護するために、ZFSのようなファイルシステムまたはHammerのような履歴保存ファイルシステムに注目してください。

5
Bryce

実際には、そうです。ハードドライブの障害の大部分は、すべてまたはまったく発生しません。 (a)ケーブルが抜かれているか、ドライブのマイクロコントローラーに障害が発生しているため、RAIDコントローラーがまったく応答しません。明らかにドライブに障害が発生しています。または(b)ケーブルとドライブのマイクロコントローラーは正常ですが、セクターを読み取ろうとすると、内部ECCチェックサムが失敗したため、内部ドライブのマイクロコントローラーがデータの破損を検出し、そのセクターの読み取りを繰り返し試行します(一時的な読み取りグリッチの場合) )最終的にタイムアウトになるため、RAIDコントローラーは丁寧な「申し訳ありません」応答を受け取ります-明らかに故障したドライブです。いずれにせよ、ドライブに障害が発生したことはRAID-1またはRAID-5コントローラーにとって明らかです。

原則としてありません。ハードドライブがナンセンスを書き込んでいるほどひどく問題が発生しているにもかかわらず、そのナンセンスの正しい内部ECCコードを書き込むのに十分に機能している場合、RAID-1はどのドライブが正しいかを判断できません。 RAID-1システムは、再同期時に正常なデータを破損したデータで上書きする可能性があります。 RAID-5は良くありません。アクティブ書き込み中の「RAID-5書き込みホール」の電源障害は、特にまれですが不可能ではありません。

私の知る限り、このような破損を回避する唯一の方法は、ファイルシステムの一部として自動的に(ZFSまたはBtrfs)、定期的または手動で(rsyncチェックサムを再計算して)、ファイルミラーリングに加えてエンドツーエンドのチェックサムを使用することです。簡単なファイル検証、Parchiveファイルセットなど);理想的には、SHA-256などの暗号化ハッシュを使用します。

3
David Cary