コンテンツへスキップ
Home » アンレイド・パリティ・システムはどのように機能するのか?- アンレイド・パリティの説明

アンレイド・パリティ・システムはどのように機能するのか?- アンレイド・パリティの説明

Advertisements

Some of the links shared in this post are affiliate links. If you click on the link and make a purchase, we will receive an affiliate commission at no additional cost to you.


パリティは、データ損失から保護するためにunRAIDで使用される。アレイのドライブが故障した場合、他のドライブのデータをパリティデータと組み合わせて、欠落したデータを再構築することができる。

なぜパリティなのか?なぜなら、世界には2種類のハードディスクしかないからだ:

  • すでに故障したハードディスク。
  • まだ故障していないが、故障するまでにもう少し時間が必要なハードディスク。

パリティの仕組み

一般に、パリティ・プロセスは、付加ビットの値を設定することで、特定のビット・セットにおける1ビットの変化を認識し、そのビット・セットの和を既知の値に強制するように設計されている。追加されたビットはパリティ・ビットと呼ばれる。

unRAIDでは、パリティビットはデータドライブから独立したパリティドライブに格納される。このパリティビットは、各ドライブ上の同じ相対ビット位置のビットセットを介して機能する。したがって、パリティ・ドライブの57ビット目は、すべてのデータ・ドライブの57ビット目のパリティ・ビットとなる。したがって、57番目のビット位置のパリティ・チェックは、パリティ・ドライブを含むすべてのドライブの57番目のビットをすべて加算し、その合計がEVEN数であるかどうかをチェックする。返された値がEVENでない場合、パリティ・チェックがEVEN数を返すようにパリティ・ビットが切り替えられる。

unRAIDは「偶数パリティ」を使用する。これは単純に、このビットセットに対する合計処理(「排他的論理和」または「XOR」と呼ばれる数学的演算を使用)は、偶数である値を返さなければならないことを意味する。

デジタル・データは1または0として保存される:

ビット値が1,1,1,1のドライブが4台ある場合、パリティは0(1+1+1+0=偶数)である。ビット値が1,0,0,0の場合、パリティは1(1+0+0+0+1=偶数)となる。

ドライブがパリティ保護されたunRAIDアレイに追加された場合、まずこのドライブの全セクタの全ビットにゼロを書き込むことで削除される。ゼロ値はパリティに影響しない。新しいドライブがゼロで一杯になると、unRAIDはパリティを復元することなく、簡単にアレイに挿入することができる。このようにして、複数のハードドライブを同時に追加することができる。

データの再構築

unRAIDのパリティ・データがデータの再構築に使われる状況は2つしかない:

  • データキャリアが再構築されるとき、および
  • 不良セクタが検出された場合

このとき、ターゲットディスクに書き込むデータを再構築するために、(パリティを含む) すべてのディスクが読み込まれる。ビットの合計は常に偶数であるため、unRAID は、他の要素が正しい限り、欠落しているデータ要素 (パリティまたはデータディスク) を 1 つでも再構築することができる。

上の2つの例では、2.

  • 1+x+1+1+0=偶数、xは1に等しくなければならない
  • 1+x+0+0+1=偶数、xは0に等しくなければならない

パリティはデータ再構築にとって非常に重要であるため、定期的にパリティチェックを行い、パリティが正しいことを確認すべきである。

アレイから1枚のディスクを物理的に取り外しても、そのディスクへの読み書きは可能である。これは、他のすべてのデータディスクとパリティを読み込むことでシミュレートされる。同様に、パリティディスクは、シミュレートされたディスクに書き込む際に必要に応じて更新される。今、交換用のディスクをインストールすると、パリティと他のすべてのデータ・ドライブに基づいて新しく再構築されたコンテンツを使用して、ディスクを完全に再構築することができる。

パリティ・チェック

パリティ同期中、システムはすべてのデータ・ディスクを読み込み、計算されたパリティをパリティ・ディスクに書き込む。

パリティ・チェック中、システムはすべてのデータ・ディスクとパリティ・ディスクを読み取り、計算されたパリティと保存されているパリティを比較する。この操作にはフラグがある:

CORRECT - パリティの不一致が発生した場合、計算されたパリティでパリティ・ディスクを書き込み、syslogで報告する。
 NOCORRECT - syslogで報告する。

最初の100個のパリティチェックエラーだけが報告される。(システムログのメッセージは、不正なパリティ一致が発生した各セクタアドレスに対して生成される。したがって、有効なパリティを持たないアレイに対してパリティチェックを実行すると、システムログはすぐに非常に大きくなってしまう。)

これらのパリティエラーは「同期エラー」または「パリティ同期エラー」と呼ばれる。これは、計算されたパリティが保存されたパリティと「同期」していない(つまり一致し ていない)ブロックアドレスがいくつ見つかったかを示す。(ブロック」は4096バイトで構成される。これはLinuxのPAGEサイズ(I/Oの基本単位)でもある)。

有効なパリティ・ディスクとは、パリティ・ディスクが存在し、過去のある時点でエラー(またはアボート)なしにパリティ同期が完了したことを意味する。パリティ同期が完了すると、パリティ・ディスクは常に「有効」(緑色の点がある)となる。この意味での「有効」とは、故障したデータ・ディスクの再構築に使用できることを意味する。

(実際には、「有効」はデータディスクとパリティディスクの両方を含むすべてのアレイディスクに適用されるステータスである)。1台を除くすべてのアレイディスクが有効な場合、無効なディスクは他のディスクのデータで再構築できることを意味する)。

パリティ検査/修正でエラーが発生した場合、なぜパリティ・ディスクは「有効」とマークされるのか?一握りのパリティエラーのためにシステムがパリティディスクを「無効」とマークし、その後別のディスクが故障した場合、この別のディスクはもはや再構築できない(アレイに無効なディスクが2つ存在することになるため)。したがって、検出されたパリティ・エラーのためにパリティ・ディスク全体が無効とマークされることはない。もちろん、ユーザーはパリティの割り当てをキャンセルすることで、いつでもパリティの無効を宣言できる。

一度パリティが計算されれば、パリティチェックエラーが発生する可能性は2つしかないはずだ:

  • 不潔なシャットダウン、すなわち突然の停電やシステムリセット。この場合、パリティ・ディスクおよび/またはデータ・ディスクへの書き込み操作が保留されたまま完了しないことがあり、対応するストライプのパリティが不一致になる。
  • 認識できないハードウェアエラー(サイレントメモリ破壊など)。

Unraidのパリティ・ハードディスク・ドライブ

サイズ

パリティ・ディスクのサイズは、最大のデータ・ドライブと同じかそれ以上でなければならない。

パフォーマンス

データを保護するためにパリティを使用すると、アレイにデータを書き込むときのパフォーマ ンスにどうしても影響が出る。データディスクが書き込まれるたびに、パリティディスクも更新されなければならない。パリティで保護された UnRAID データディスクへの各書き込み操作は、4 つのディスク操作になる:パリティの読み取りと書き込み、データの読み取りと書き込みである。各ディスクのプラッタは、読み出し後、ディスクヘッドを書き込まれるセクタの上に再配置するために、一回転しなければならない。

アンRAIDアレイへの書き込みも、関係するドライブの中で最も遅い(回転速度の)ドライブによって制限される。パリティドライブだけが7200 rpmドライブであっても、データドライブの速度によって制限される。複数の低速データドライブが同時に書き込まれ、より高速な7200rpmパリティドライブが両方に追いつこうとしない限り、書き込み速度の改善は見られない。

デュアルパリティ

大容量アレイでは、「デュアルパリティ」、つまり2台目のパリティ・ハードディスク・ドライブを持つオプションは、単に1台目のミラーリングではない。これにより、データを失うことなく、2つのドライブの同時故障が可能になる。

P + Q 冗長システム(RAID-6 システムのような)では、通常の XOR パリティである「P」と、 リードソロモンコードである「Q」の 2 つの冗長ディスクがある。これにより、unRAID はパフォーマンスへの影響を最小限に抑えながら、2 つのディスク障害から回復することができる。(これが実際に使用されることを明確にする必要がある)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Mastodon