古いハードウェアRAID5アレイをLinuxソフトウェアRAID1アレイに交換しようとしています。私は友人と話していましたが、彼はRAID5はRAID1よりも堅牢であると主張しました。
彼の主張は、RAID5では、すべてのドライブが正しいデータを返していることを確認するために、読み取り時にパリティデータが読み取られたというものでした。彼はさらに、RAID1ではそのようなチェックが行われないため、ドライブで発生するRAID1エラーは見過ごされると主張しました。
このがどのようにに当てはまるかはわかりますが、問題のRAIDシステムの実装方法にすべて依存していることもわかります。確かに、RAID5システムには読み取りのパリティデータを読み取ってチェックする持っていないであり、RAID1システムはから簡単に読み取ることができます読み取り中のすべてのドライブは、すべて同じデータを保持していることを確認するため、同じレベルの堅牢性を実現します(対応するパフォーマンスの低下を伴います)。
だから問題は、現実の世界のRAID5/RAID1システムは実際に何をしているのかということです。 RAID5システムは読み取り時にパリティデータをチェックしますか?すべてのドライブから読み取り、読み取り時にデータを比較するRAID1システムはありますか?
RAID-5はフォールトトレランスソリューションであり、データ整合性ソリューションではありません。
RAIDはRedundantArray of InexpensiveDisksの略であることに注意してください。ディスクは冗長性のアトミックユニットです。RAIDは実際にはデータを気にしません。データの冗長性と整合性に対処するために、WAFLやZFSなどのファイルシステムを採用するソリューションを購入します。
RAIDコントローラー(ハードウェアまたはソフトウェア)は、読み取り時にブロックのパリティを検証しません。これは、RAID-5を実行する主なリスクです。ドライブで部分的なメディア障害が発生した場合(不良ブロックが「不良」とマークされていない状況)、データがサイレントに送信されている状況になります。破損しています。
SunのRAID-Z/ZFS 実際にはエンドツーエンドのデータ整合性を提供します 、CPUで使用可能なコアの数が増え続けるにつれて、他のファイルシステムやRAIDシステムが将来この機能を提供すると思います。
私の意見では、RAID-5を使用している場合は、安価です。 RAID 1は、パフォーマンスが向上し、保護が強化され、ドライブに障害が発生しても生産に影響を与えませんが、わずかなコスト差があります。
答えはコントローラー/ソフトウェアに依存すると思います。たとえば、ミラーリングシステムがペアから1つのディスクのみを読み取ることは非常に一般的であるため、間違ったデータを配信する可能性があります。結果がそのデータに依存している場合、データが両方のディスクに書き込まれると、両方のディスクで破損することに注意してください。
SATAssure(tm)PlusのPDFから:
「革新的なSATAssureテクノロジーは、大容量で安価なSATAディスクドライブを使用してエンタープライズクラスのデータ保護と信頼性を提供します。SATAssureはすべての読み取り操作で動作し、データの整合性を確保し、問題をリアルタイムで自動的に修正します。従来のパフォーマンスや容量のペナルティはありません。ストレージシステム。個々のドライブの電源を入れ直す新しい機能により、ドライブのRMAを削減します。」
一部のメーカー 常にパリティを計算しているという事実に大騒ぎしているのは興味深いことです。これにより、ハードウェアコントローラーでは比較的珍しいと思います。 ZFSやWAFL(netapp)などのシステムは、読み取りごとにパリティ計算を行うことにも注意してください。
RAID-5では、パリティは通常、アレイの再構築時にのみ読み取られ、一般的な読み取りでは読み取られません。これにより、読み取りがよりランダムかつ高速になります(アレイから1Kのデータが必要になるたびに、ストライプ全体のパリティを読み取って計算する必要がないため)。
RAID-1では、通常、読み取りパフォーマンスを向上させるために、可能な場合は常に読み取りがドライブ間でステップ実行されます。お気づきのように、RAIDサブシステムが両方のドライブを読み取ろうとして、それらが異なる場合、サブシステムはどちらのドライブが間違っているかを知る方法がありません。
ほとんどのRAIDサブシステムは、ドライブが故障したときにコントローラーまたはコンピューターに通知するためにドライブに依存しています。
では、RAID-5は「より堅牢」ですか?答えは、状況によって異なります。 RAID-5を使用すると、RAID-1よりも特定の数のディスクに対してより効果的なストレージを取得できます。 1つのディスクを超えて効果的なストレージを提供するには、RAID-1をRAID-1アレイのストライプとして、または2つのRAID-0ストライプにまたがるRAID-1としてRAID-0と組み合わせる必要があります。
(前者の方が好きです。単一のドライブに障害が発生すると、単一のRAID-1要素が削除されるため、再構築が必要になるのは単一のドライブのみです。後者の場合、単一のドライブに障害が発生すると、RAID-0要素が強制終了されます。ドライブが交換されると、ディスクが再構築に関与します。)
これは、ドライブの電子機器によって書き込みが成功したと報告される「ファントム書き込み」の議論にもつながりますが、何らかの理由で書き込みがディスクに到達することはありません。これは起こります。 RAID-5アレイの場合、ドライブに障害が発生した場合、アレイは回復するために、存続しているすべてのドライブのすべてのセクターを完全に読み取る必要があることを考慮してください。 NetAppは、ドライブのサイズとRAIDグループのサイズが大きいということは、場合によっては、再構築中に失敗する可能性が10分の1に達する可能性があることを意味すると主張しています。したがって、大規模なRAIDグループ内の大容量ディスクはデュアルパリティを使用することを推奨しています(これはRAID-6に関連していると思います)。
これは、数人のエンジニアによるNetAppの技術的なディスカッションで学びました。
通常、一般的なRAID実装では、データアクセスのパリティをチェックしません。見たことがない。一部のRAID5実装は、ストリーミング読み取りのパリティデータを読み取って、不要なシークを防止します(ドライブにn番目のブロックごとにシークさせるよりもn番目ごとのブロックを破棄する方が安い)。 RAID1実装は、パフォーマンスについて両方のディスクから読み取るため、チェックできません(RAID1実装の大部分では、いくつか選択できます。これは、一方のディスクが他方よりもはるかに遅く、書き込みが集中しない場合に役立ちます。負荷。)
一部は、背景の「スクラブ」でチェックします。その場合、RAID6はデータを回復できるため勝ち、RAID5とRAID1は同じ状況にあり、識別はできますが修正はできません。 (ドライブが不良CRCを検出し、エラーを返し、パリティからブロックを書き換えることができるため、これは厳密には当てはまりません。これは非常に一般的に発生します)。
データの整合性が必要な場合は、すべてのブロック(またはレコード、または分割されている)のハッシュをアプリケーション層に保存します。 SybaseとOracleはこれを行い(私はページレベルで信じています)、巨大なデータベースを保存することを何度も見ました。 (たとえば、コントローラーが不良データを返し始め、sybaseが明確なエラーでクラッシュするため、データベースが一貫性のない状態の障害のあるハードウェアで実行されている場合、書き込みは行われませんでした)。
唯一のファイルシステムソリューションであり、これを実行する唯一のRAIDソリューションはZFSです。
RAID-1は両方のドライブを同時に読み取るため、RAID-5よりも読み取りの方が高速である必要があるという主張について少し考えていました。
さて、アレイを再構築する必要がない限り、パリティはRAID-5で読み取られないので、読み取りに関しては実際にはRAID-0アレイと同じですが、正しいですか?
RAID-0は、一般的に最速レベルと見なされています(ただし、冗長性がまったくないため、「AID」という名前にする必要があります)。 :-D
LinuxソフトウェアRAIDと言えば、hdparmを使用した簡単なテストでこの理論が確認されます。RAID-5アレイは常にRAID-1アレイよりも速い読み取り速度を示します。
しかし、劣化したアレイは、通常の実行中のアレイよりもパフォーマンスがはるかに遅いようです。 4 WD 1 TB異なるRAIDレベルのドライブで実行されているFedora9でこれをテストしました。結果は次のとおりです。
劣化したRAID-5:読み取り速度43MB /秒通常のRAID-5:読み取り速度240MB /秒(!)RAID-1:読み取り速度88MB /秒
許容されるディスクの損失はRAID-1とRAID-5(つまり1つ)で同じであるため、RAID-5はあらゆる面でRAID-1よりもパフォーマンスが優れているはずです-アレイで使用されるディスクの数と同じでより多くの容量を提供しますフォールトトレランス。これは、RAID-6が他のすべてのRAIDレベルよりも優れているという結論につながります。これは、通常の読み取りではRAID-0と同じくらい高速であり(2つのパリティディスクからのパリティ読み取りがない)、損失が発生した場合でもフォールトトレラントであるためです。アレイメンバー。 ;-)
あなたの友人は、ディスクに書き込まれるデータのいくつかの RAIDレベル または チェックサム に関係するパリティビットについて話しているのですか?
それらがほぼパリティ上にある場合、RAID1にはパリティビットがありません-同じデータの2つのコピーがあります。ディスクに書き込まれたものがネットワークから来たものと一致することを確認するために、ディスクによって実行されるチェックサムが必要です。
RAID5にはパリティビットがあります。これは、RAIDセット内のディスクを失い、何も起こらなかったかのように続行できることを意味します。それでも、ディスクに書き込まれたデータのチェックサムを実行して、データがネットワークに送信されたものと一致することを確認する必要があります
この場合、チェックサムはRAIDから完全に独立しており、一連のディスクで実行される場合と実行されない場合があります。
編集して追加:ハードウェアRAIDからソフトウェアRAIDへの移行についておっしゃいました。ソフトウェアRAIDよりもハードウェアRAIDが優先されます。実装したいRAIDレベルを実現するために必要なハードウェアを購入できる場合は、それを購入することをお勧めします。これにより、すべてのパリティ計算をホストではなくRAIDカードで実行できるようになります。したがって、ホスト上のリソースを解放します。他の利点は間違いありませんが、現時点では私を逃れています
古いハードウェアRAID5アレイをLinuxソフトウェアRAID1アレイに交換しようとしています。私は友人と話していましたが、彼はRAID5はRAID1よりも堅牢であると主張しました。
これは、レイドの実装タイプ(hw/sw)、ディスク、レイドコントローラー(存在する場合)、およびその機能によって異なります。
彼の主張は、RAID5では、すべてのドライブが正しいデータを返していることを確認するために、読み取り時にパリティデータが読み取られたというものでした。彼はさらに、RAID1ではそのようなチェックが行われないため、ドライブで発生するRAID1エラーは見過ごされると主張しました。
少し意味がありますが、実際にはそうではありません:)間違ったデータが書き込まれると、ミラー上で両方のドライブに送信され、raid5パリティで生成されてドライブ全体に分散されます。データの読み取り/書き込みチェックはディスクとコントローラーのファームウェアによって行われ、RAIDレベルとは関係ありません。
So the question is, what do RAID5/RAID1 systems in the real world
実際に? RAID5システムは読み取り時にパリティデータをチェックしますか?すべてのドライブから読み取り、読み取り時にデータを比較するRAID1システムはありますか?
私が言ったように、チェックはレイドアルゴリズムの一部ではありませんが、一部のコントローラーには追加の実装がある場合があります。
アレイの堅牢性はドライブの品質に依存します(2.5 "ドライブはRVレートが低下するため、3.5"よりも長持ちする傾向があります。私の経験ではmaxtor SCSI/SASドライブを購入しないでください。ファームウェアの不具合がひどいです)、環境(温度と湿度の制御)、コントローラー自体(BBUがありますか?ファームウェアは最新ですか?それは実際のレイドまたはフェイクレイドですか?)、サーバー内のPSUの量、UPSの品質など。
RAID5システムは読み取り時にパリティデータをチェックしますか?
それは本当に意味がありません。パリティの不一致を見つけたらどうしますか? (どのブロックが間違っているかをどうやって知るのですか?)
ランダム読み取りの場合、パリティのチェックにはコストがかかります。通常、単一のディスクを調べるだけでランダム読み取りを処理できますが、パリティを確認する場合は、読み取りごとにすべてのディスクを読み取る必要があります。 (それについて何かできることがあれば、それでも意味があるかもしれません!)
RAID-1にもこの問題があることに注意してください。これは、RAID-1を2ディスクRAID-5と見なす場合に意味があります。
私はしません知っていますこれですが、そうなる可能性は低いようです。パリティを計算するには、RAIDセット内のすべてのドライブからブロックを読み取り、計算を行って正確さを判断する必要がありますが、そうでない場合は、1つのドライブの読み取りを行うだけです。
また、読み取りが1ブロック未満の場合、パリティチェック読み取りはそれを完全なブロックに拡張する必要がありますが、通常の読み取りは拡張しません。 (もちろん、RAIDブロックがディスクのブロックよりも大きいと仮定します。Ithinkディスクからの読み取りは完全なブロックである必要があります。そうでない場合、私のポイントはさらに有効です。)
ですから、私の観点からは、そうですcouldそうしますが、そうすると非効率になり、そのように実装されているとは思えません。
繰り返しになりますが、実際の実装についての個人的な知識はありません。