この章では、Solaris ボリュームマネージャの RAID 5 ボリュームの概念について説明します。 関連する作業の実行手順については、第15章「RAID 5 ボリューム (作業)」を参照してください。
この章の内容は、次のとおりです。
RAID レベル 5 はストライプ方式に似ていますが、パリティデータがすべてのコンポーネント (ディスクまたは論理ボリューム) に分散されている点が異なります。 コンポーネントに障害が発生した場合には、障害が発生したコンポーネント上のデータを、他のコンポーネント上に分散されているデータとパリティ情報から再構築することができます。 Solaris ボリュームマネージャでは、「RAID 5 ボリューム」は RAID レベル 5 をサポートするボリュームを意味します。
RAID 5 ボリュームは、そのボリュームの 1 つのコンポーネントに相当する記憶領域を使って、RAID 5 ボリュームの他のコンポーネントに格納されているユーザーデータの冗長情報 (パリティ) を保持します。 つまり、3 つのコンポーネントがあれば、1 つのコンポーネントに相当する領域がパリティ情報に使用されます。 同じように、5 つのコンポーネントがある場合にも、1 つのコンポーネントに相当する領域がパリティ情報に使用されます。 パリティは、ボリューム内のすべてのコンポーネントに分散されます。 ミラーと同様に、RAID 5 ボリュームではデータの可用性が向上しますが、ハードウェアのコストは最小限に抑えることができます。書き込み性能に対する影響は中程度です。 ただし、RAID 5 ボリュームを ルート (/)、 /usr、および swap、あるいは既存のファイルシステムに対して使用することはできません。
既存のコンポーネントを置き換えると、Solaris ボリュームマネージャは自動的に RAID 5 ボリュームを再同期します。 また、Solaris ボリュームマネージャは、システム障害やパニックが発生した場合、再起動時に、RAID 5 ボリュームを再同期します。
図 141 に、RAID 5 ボリューム d40 を示します。
最初に 3 つのデータチャンクがディスク A から C に書き込まれ、次にパリティチャンクがディスクD に書き込まれます。パリティチャンクは、最初の 3 つのチャンクの排他的論理和を取ったものです。 データチャンクとパリティチャンクをこのように書き込むことによって、データとパリティの両方が、RAID 5 ボリュームを構成するすべてのディスクに分散されます。 各ドライブは個別に読み取ることができます。 パリティ情報により、いずれか 1 つのディスクが故障しても、データの安全性が保証されます。 この例の場合、各ディスクの容量が 2G バイトであれば、d40 の合計容量は 6G バイトになります (ディスク 1 つ分の領域がパリティ用に割り当てられます) 。
次の図に、4 つのディスク (コンポーネント) から構成される RAID 5 ボリューム に 5 つ目のディスクを動的に連結して拡張した例を示します。
パリティ領域は、RAID 5 ボリュームの作成時に割り当てられます。 パリティには 1 つのコンポーネントに相当する領域が割り当てられますが、実際のパリティブロックは、入出力を分散するためにすべてのオリジナルコンポーネントに分散されます。 RAID 5 ボリュームにコンポーネントを連結すると、新しい領域はデータにのみ使用され、 新しいパリティブロックは割り当てられません。 ただし、連結されたコンポーネントのデータはパリティ計算の対象になるため、単一のデバイス障害からは保護されます。
連結した RAID 5 ボリュームは長期間の使用には適しません。 このような RAID 5 ボリュームは、これよりも大規模な RAID 5 ボリュームを再構成し、そのボリュームにデータをコピーできるようになるまでの一時的な手段として使用します。
RAID 5 ボリュームに新しいコンポーネントを追加すると、Solaris ボリュームマネージャは、そのコンポーネントのすべてのデータブロックを「ゼロ」にします。 この処理は、パリティ情報によって新しいデータを保護するために実行されます。 つまり、データが新しい領域に書き込まれると、Solaris ボリュームマネージャはそのデータをパリティ計算の対象とします。
RAID 5 ボリュームを使用するときは、「RAID 5 ボリュームの要件」と 「RAID 5 ボリュームの指針」を考慮してください。 また、RAID 5 ボリュームの構成には、ストライプ化に関する指針の多くが適用されます。 「RAID 0 ボリュームの要件」を参照してください。
RAID 5 ボリュームは、少なくても 3 つのコンポーネントから構成されていなければなりません。 ただし、RAID 5 ボリュームのコンポーネントの数が多くなればなるほど、いずれかのコンポーネントに障害が発生したときの読み取りおよび書き込み時間は長くなります。
RAID 5 ボリュームをストライプ化、連結、ミラー化することはできません。
既存のファイルシステムが格納されているコンポーネントから RAID 5 ボリュームを作成しないようにします。 作成すると、RAID 5 の初期化時にデータが消去されます。
RAID 5 ボリュームを作成するときには飛び越し値を定義できます。 設定しないと、デフォルト値の 16K バイトが使用されます。 この値は、ほとんどのアプリケーションにとって妥当な値です。
RAID 5 ボリューム (ホットスペアなし) は、1 つのコンポーネントの障害にしか対応できません。
RAID 5 ボリュームを作成するときは、別個のコントローラにあるコンポーネントを使用してください。これは、コントローラとそれに接続しているケーブルがディスクよりも故障する確率が高いためです。
同じサイズのコンポーネントを使用するようにします。 サイズが異なるコンポーネントから RAID 5 ボリュームを作成すると、ディスク容量がむだになります。
RAID 5 ボリュームでは複雑なパリティ計算が必要なため、書き込みの割合が 20 パーセントを超えるボリュームには、RAID 5 ボリュームを使用しないようにします。 書き込みが頻繁に発生するボリュームでデータの冗長性を確保したい場合は、ミラーの使用を検討してください。
RAID 5 ボリューム内の各コンポーネントが異なるコントローラ上にあり、ボリュームへのアクセスが主に大容量の順次アクセスである場合は、飛び越し値を 32 K バイトに設定すると、性能が向上することがあります。
RAID 5 ボリュームにコンポーネントを連結することによってボリュームを拡張できます。 ただし、既存の RAID 5 ボリュームに新しいコンポーネントを連結すると、ボリュームの全体的な性能が低下します。これは、連結されたコンポーネント上のデータが順次処理されるためです。 つまり、データは、すべてのコンポーネントにストライプ化されるわけではありません。 ボリュームの元のコンポーネントのデータとパリティは、すべてのコンポーネントについてストライプ化されますが、 このストライプ化は連結されたコンポーネントには適用されません。ただし、コンポーネントの入出力中はパリティが使用されますので、エラーが発生してもデータは復元されます。 新しいコンポーネントが連結された RAID 5 ボリュームも 1 つのコンポーネントの障害にのみ対応できます。
連結されたコンポーネントは、それ自体のどの領域でもパリティがストライプ化されないという点で元のコンポーネントとは違います。 連結されたコンポーネントでは、全内容がデータに使用されます。
コンポーネントを連結すると、大規模な書き込みや順次書き込みにおける性能上の利点は失われます。
データブロックをゼロで初期化しなくても、RAID 5 ボリュームを作成することができます。 そのためには、次のどちらかの方法を使用します。
metainit コマンドに -k オプションを指定します。 -k オプションを指定すると、RAID 5 ボリュームが初期化なしで作成し直され、ディスクブロックが「正常 (Okay)」状態に設定されます。 -k は、潜在的に危険なオプションです。ボリューム内のディスクブロックにエラーがあると、不正なデータの生成など、Solaris ボリュームマネージャが予期せぬ動作を起こすことがあります。
デバイスを初期化し、テープからデータを復元します。 詳細は、metainit(1M) のマニュアルページを参照してください。
RAID 5 ボリュームのエラーに対処する場合は、おそらくスライスの状態がもっとも重要な情報となります。 RAID 5 の状態は、「正常 (Okay)」や「保守が必要 (Needs Maintenance)」などの一般的な状態情報を提供するだけです。 RAID 5 の状態が「保守が必要 (Needs Maintenance)」の場合は、スライスの状態を参照する必要があります。 スライスの状態が「保守 (Maintenance)」の場合と「最後にエラー (Last Erred)」の場合では、障害から回復するための処置が異なります。 「保守 (Maintenance)」状態のスライスが 1 つだけ存在する場合は、データを失うことなくスライスを修理できます。 「保守 (Maintenance)」状態のスライスと「最後にエラー (Last Erred)」状態のスライスが 1 つずつある場合は、おそらくデータは破壊されています。 この場合には、「保守」状態のスライスを修理してから「最後にエラー」状態のスライスを修理する必要があります。
次の表に、RAID 5 ボリュームの状態を示します。
表 141 RAID 5 の状態
状態 |
意味 |
---|---|
初期化中 (Initializing) |
スライスは、ディスクブロックをゼロで初期化しています。 この処理は、データとパリティを飛び越し方式でストライプ化する RAID 5 ボリュームの特性上、必要になるものです。 状態が「正常」になったら、初期化が完了しており、デバイスを開くことができます。 この状態になるまで、アプリケーションはエラーメッセージを受け取ります。 |
正常 (Okay) |
デバイスにはエラーはなく、使用可能な状態です。 |
保守 (Maintenance) |
読み取りまたは書き込み操作で入出力エラーかオープンエラーが発生したため、1 つのスライスがエラー状態になっています。 |
次の表に、RAID 5 ボリュームのスライス状態と実行可能な処置を示します。
表 142 RAID 5 のスライスの状態
状態 |
意味 |
処置 |
---|---|---|
初期化中 (Initializing) |
スライスは、ディスクブロックをゼロで初期化しています。 この処理は、データとパリティを飛び越し方式でストライプ化する RAID 5 ボリュームの特性上、必要になるものです。 |
通常は必要ありません。 この間に入出力エラーが発生すると、デバイスの状態は「保守」に変わります。 初期化に失敗すると、このボリュームの状態は「初期化失敗」に、スライスの状態は「保守」になります。 この場合には、ボリュームを削除してから作成し直す必要があります。 |
正常 (Okay) |
デバイスにはエラーはなく、使用可能な状態です。 |
必要ありません。 必要に応じて、スライスを追加および交換に使用できます。 |
再同期中 (Resyncing) |
スライスの再同期処理が進行しています。 エラーが発生したが、すでに訂正され、スライスが有効になっているか、あるいは、新しいスライスが追加された後です。 |
必要であれば、再同期が終了するまで RAID 5 ボリュームの状態を監視します。 |
保守 (Maintenance) |
読み取りまたは書き込み操作で入出力エラーかオープンエラーが発生したため、1 つのスライスがエラー状態となっています。 |
障害が発生したスライスを有効にするか、交換します。 「RAID 5 ボリューム内のコンポーネントを有効にするには」または 「RAID 5 ボリューム内のコンポーネントを置き換えるには」を参照してください。 metastat コマンドを実行すると、metareplace コマンドを使用して行うべき処置を示す invoke 回復メッセージが表示されます。 |
保守/最後にエラー (Maintenance/ Last Erred) |
複数のスライスでエラーが発生しました。 エラーが発生したスライスの状態は「保守」か「最後にエラー」です。 この状態の場合、「保守」状態のスライスには入出力は実行されません が、「最後にエラー」状態のスライスには実行されます。この結果、入出力要求の状態は、全体的に「最後にエラー」となります。 |
障害が発生したスライスを有効にするか、交換します。 「RAID 5 ボリューム内のコンポーネントを有効にするには」または 「RAID 5 ボリューム内のコンポーネントを置き換えるには」を参照してください。 metastat コマンドを実行すると、(-f フラグを指定した) metareplace コマンドを使用して行うべき処置を示す invoke 回復メッセージが表示されます。 この状態は、複数のスライスに障害が発生したため、不正なデータが生成された可能性があることを示しています。 |
Solaris ボリュームマネージャには、ミラーおよび RAID 5 ボリューム内のコンポーネントを置き換えたり、有効にしたりする機能があります。 この機能についての問題点と要件は、ミラーおよび RAID 5 ボリュームに関するものと同じです。 詳細については、「RAID 1 および RAID 5 ボリューム内のコンポーネントの交換と有効化の概要」を参照してください。
RAID 5 ボリュームでは、RAID 1 ボリュームよりも少ないオーバーヘッドで記憶領域の冗長性を達成できます (RAID 1 ボリュームでデータの冗長性を得るには、合計記憶領域の 2 倍の領域が必要)。 RAID 5 ボリュームを設定すると、同じ数のディスクコンポーネントを使用して、RAID 1 ボリュームよりも大きい容量をもつ冗長記憶領域を構成できます。さらにホットスペアを使用すると、RAID 1 とほぼ同じレベルの安全性を得られます (第16章「ホットスペア集合 (概要)」の特に 「ホットスペアの仕組み」を参照)。短所としては、書き込み時間の増加とコンポーネント障害時の大幅な性能低下が挙げられますが、多くの場合、このようなトレードオフが問題になることはありません。 次の例では、第5章「Solaris ボリュームマネージャの構成と使用」のサンプルシステムを使用して、RAID 5 ボリュームで追加の記憶容量を提供する方法を示します。
RAID 0 と RAID 1 ボリュームでは、2 つのコントローラに分散した 6 つのディスク上の 6 つのスライス (c1t1d0、c1t2d0、c1t3d0、c2t1d0、c2t2d0、c2t3d0) によって、27G バイトの冗長記憶領域が得られます。 しかし、RAID 5 構成では、同じスライスを使用することによって 45G バイトの冗長記憶領域が得られる上、1 つのコンポーネントに障害が発生しても、データが失われたり、アクセスが中断されることはありません。 さらに、RAID 5 ボリュームにホットスペアを追加すれば、複数のコンポーネントに障害が発生しても対応できます。 このアプローチの最大の短所は、コントローラに障害が発生すると、RAID 5 ボリュームのデータが失われる点です。RAID 1 ボリュームでは、この問題は起こりません (「シナリオ RAID 1 ボリューム (ミラー)」を参照)。