RAID5アレイを実行していて、昨日セットアップしたraid1も実行しています。 RAID5はパリティを計算するため、1つのディスクでサイレントデータの破損を検出できるはずです。ただし、RAID1の場合、ディスクは単なるミラーです。考えれば考えるほど、RAID1は実際にはかなり危険だと思います。確かにそれは私をディスク障害から救うでしょうが、ディスク上のデータを保護することに関してはそれほど良くないかもしれません(私にとって実際にはもっと重要です)。
RAID1が実際にデータ保護を提供しておらず、ディスク保護を提供している場合、mdadmを使用して2つのディスクの「RAID5のような」セットアップを作成するためのトリックはありますか?例えば。容量は緩いですが、データの冗長性も維持していますか?
実際の質問に焦点を当てて...
RAID 5でさえ、サイレントビットの腐敗を修正することはできませんが、データスクラブ中にそれを検出することはできます。ただし、ディスクによって回復不能な読み取りエラー(URE)があると報告された単一のブロックを修正することはできます。 RAID5ストライプ内のすべてのドライブが通常のデータ読み取りのために読み取られるわけではないため、未使用ディスクのストライプにエラーが存在する場合、データスクラブを実行するまでエラーは検出されないことに注意してください。標準RAIDでのサイレントビット腐敗検出は、データスクラビング中にのみ発生します。 RAID 5は、障害が発生したディスクの再構築中にこれを実行することもできません。これが、最近のRAID5で最も懸念されていることです。
これが、ほとんどのビット腐敗がディスクシステムからmdadmに修正不可能な読み取りエラー(URE)として報告される理由です。ただし、データにはまだリスクがあり、ディスクによってエラーが報告されることはありません。
およびServerFaultページ で説明されているような他のタイプのエラーハードドライブのビット腐敗は本当の問題ですか?それについて何ができるでしょうか?
少なくとも3つのディスクを備えたRAID6およびRAID1アレイは、個々のディスクによってエラーとして報告されないいくつかの形式のサイレントビット腐敗を検出および修正できる可能性がある唯一の標準RAIDレベルですmdadmがこれに必要なコードを実装しているかどうかはわかりません。 前方誤り訂正 スタイルの投票システムを使用する。
参考までに、Synology DS1813 +デバイスはデータパーティションとシステムパーティションの両方にmdadmを使用し、システムパーティションの8つのディスクすべてでRAID1を使用していることに気付きました。
お気づきかもしれませんが、これはディスクが不良データをエラーとして報告できることに大きく依存しています。誰もがこの問題を解決するためにZFSを使用すると言っていますが。 ZFSの主なデータ整合性の改善は、読み取りごとにミラー/パリティをチェックするため、より頻繁なデータスクラビングを提供し、独立したブロックレベルのパリティ(つまり、サイレントに破損した多くのブロックがサイレントではなくなり、可能であれば修正されることを意味します)とそれmayは、サイレントデータ破損のために上記のロジックを実装します。
特定のシステムがサイレントデータの破損を検出および/または修正できるかどうかをテストするには、Linux ddコマンドを使用して、アレイ内のパーティションの1つにランダムデータを書き込み、データがアレイ上でまだ良好かどうかをテストします。警告システムがテストに失敗する可能性があるため、保持したいデータがあるシステムではこのテストを実行しないでください。標準RAIDレベルの場合、破損とテスト読み取りの間にデータスクラブを実行する必要があります。
RAID5は、ディスク上のサイレントデータ破損をキャッチしません。これを防ぐには、ブロックレベルのチェックサムを備えたZFSやBTRFSなどのファイルシステムが必要です。 RAID5は、パリティ計算のため、RAID1ほどのパフォーマンスも発揮しません。どのタイプのパリティRAIDでも、 RAID5書き込みホール に対処するように注意する必要があります。これにより、たとえば停電が発生した場合にデータが破損する可能性があります。
LinuxソフトウェアRAID1には、必要な数のミラーを作成できるという興味深い利点があります。したがって、稼働時間が最優先事項である場合は、7つの冗長コピーを維持する8ディスクRAID1を構成できます。
RAID1を使用した場合のデータ破損の可能性は、単一のディスク(RAIDなし)を使用した場合とほぼ同じです。
データの破損が本当に心配な場合は、チェックサムファイルシステムを使用するか、変更されていないデータをいくつかのバックアップと定期的に比較する必要があります。人気のあるZFSのサクセスストーリーは、コンピューターが静かにデータを破壊していて、ZFSを使い始めるまでそれを知らなかった人の話です。少しトラブルシューティングを行った後、彼は原因が電源の故障であることに気づきました。
また、データが破損する可能性があるのはハードドライブだけではないことも考慮する必要があります。たとえば、ECC RAM(および互換性があるだけでなくECCを有効にするエンタープライズグレードのマザーボード)を使用していない場合、宇宙線はメモリ内で少し反転する可能性があります。私たちが話しているデータの種類については、それは問題ではないかもしれません。それがビデオまたは音楽ファイルである場合、ファイルを再生するときにビットフリップが見過ごされます。
問題の核心に迫るとき、サイレントデータの破損はすべて確率に関するものです。データが破損する可能性はそれほど高くありません。そうしないと、データが再び破損していることを常に罵倒することになります。 (コンピュータが1つの適切なコピーを保持することを信頼しないため、誰もがおそらく複数のバックアップとすべてのハードコピーを保持します。)データの破損に気付く可能性はさらに低くなります。ほとんどの人はサイレントデータ破損の概念に完全に気づいておらず、うまくやっています。また、多くのエンタープライズグレードのディスクストレージシステムでさえ、ファイルシステムレベルでのサイレントデータ破損から保護されていないことにも注意してください。ただし、ギャンブルをする人ではない場合は、エンタープライズグレードのハードウェア(ECC RAM、バッテリバックアップ式ディスクコントローラなど)にお金をかけ、ZFSまたはBTRFSの使用に切り替えることをお勧めします。
Raid5はパリティを計算するため、1つのディスクでサイレントデータの破損を検出できるはずです。
いいえ。ランダムなデータでセクターを完全に破壊する可能性があり、RAID5はまつげを打つことはありません。 RAID1にも同じ問題があります。
一般に、RAIDはリアルタイムのデータ整合性チェックを提供しません。それが提供するのは、1つ(またはいくつかのRAIDレベルでは複数)のドライブ障害に直面した場合のフォールトトレランスです。これらは2つの非常に異なるものです。
ファイルの破損を検出するための何かを探している場合は、ファイルシステムのサポートが必要です。 RAIDはそれを行いません。少なくとも、それだけではありません。
特定の質問に答えるには:
RAID1は、2つ(またはそれ以上)の同一のミラーとして単純に実装されます。ミラーがセクターの内容に同意しない場合、破損が発生しています。重要なのは、RAIDシステムは、特定のセクターを取得するように要求されたときに通常すべてのミラーを読み取るわけではないため、これを認識する位置にないことがよくあります。効率を上げるために、1つのディスクをスケジュールして読み取るようにします(できれば、現在ヘッドが最も近いディスク)。
「スクラビング」操作中に、RAIDシステムがすべてのデータの整合性を検証するように明示的に要求されたときに、不整合が検出されたとします。この不整合をどのように解決するかという問題には、簡単な答えはありません。この問題は、RAID1や他のRAIDレベルと同様にRAID5にも同様に影響することに注意してください。
RAID1では、不整合は、異なるデータを含む2つのミラーセクターとして表示されます。 RAIDシステムは、どのセクターが正しいデータを表すかをどのように決定しますか?それは実装の詳細であり、Linuxシステムがどのように正確に実装されているかは正直わかりません。しかし、問題は根本的なものです。ミラーリングされたセクターは異なり、なぜそれらがそのようになったのかについての兆候がない可能性があります。したがって、RAIDシステムが実行できる最善の方法は、コインを投げることです。「正しい」データになるようにランダムに1つを選択します。
3ディスクRAID5では、パリティセクターが正しくないセクターのトリプルの形で不整合が発生します。問題は、3つのセクターのどれが間違っているのかということです。繰り返しますが、明確な答えはありません。 3つのうちのいずれかが破損している可能性があり、おそらく知る方法はありません。他の2つから再計算するセクターを1つ選択する必要がある場合、実際に破損したセクターを選択する可能性は3分の1です。これは、この意味で、RAID1が実際にはRAID5よりも「安全」であることを示しています。 RAID1は50%の確率で間違ったセクターを選択しますが、RAID5は67%の確率で間違った選択をします。
要約すると、RAIDは、発生したディスクエラーをキャッチするようには設計されていません。 RAIDは、ドライブ全体の障害に直面してもフォールトトレランスを提供します。これ以上何もない。
破損がハードディスクによって行われた場合、raid1もraid5もサイレントビット破損からユーザーを保護しません。
考えてみてください。raid1とraid5の両方を使用すると、データが破損していることを簡単に検出できますが、どちらのディスクが良いデータを取得し、どちらが悪いデータを取得したかを判断する方法はありません。
ただし、覚えておいてください。ハードディスクでのサイレントビットの破損はほとんど発生しません(ハードディスクはすべてのブロックで独自の内部チェックサムを取得します)。RAIDによってバックアップが不要になるわけではありません。
サイレントディスクの破損に耐える必要がある場合は、raid6のようなもの、またはすべてのファイルをチェックサムするファイルシステムを使用してください。