この章では、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 ボリュームを再同期します。
図 14–1 に、4 つのディスク (コンポーネント) からなる RAID-5 ボリュームを示します。
最初の 3 つのデータセグメントは、コンポーネント A (飛び越し値 1)、コンポーネント B (飛び越し値 2)、およびコンポーネント C (飛び越し値 3) に書き込まれます。次のデータセグメントは、パリティーセグメントに書き込まれます。このパリティーセグメントは、コンポーネント D (P 1–3) に書き込まれます。このセグメントは、最初の 3 つのデータセグメントの排他的論理和からなります。次の 3 つのデータセグメントは、コンポーネント A (飛び越し値 4)、コンポーネント B (飛び越し値 5)、およびコンポーネント D (飛び越し値 6) に書き込まれます。次に、別のパリティーセグメントが、コンポーネント C (P 4–6) に書き込まれます。
データセグメントとパリティーセグメントをこのように書き込むことによって、データとパリティーの両方が、RAID-5 ボリュームを構成するすべてのディスクに分散されます。各ドライブは個別に読み取ることができます。パリティー情報により、いずれか 1 つのディスクが故障しても、データの安全性が保証されます。この例のディスクがそれぞれ 2G バイトだとすると、RAID-5 ボリュームの総容量は 6G バイトになります。ディスク 1 つ分の領域がパリティー用に割り当てられます。
次の図に、当初 4 つのディスク (コンポーネント) から構成されていた RAID-5 ボリュームの例を示します。5 つ目のディスクがボリュームに動的に連結され、RAID-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 ボリュームを作成すると、使用されないディスク容量が発生します。
パリティー計算は複雑なので、書き込み率が 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 ボリュームのエラーに対処する場合は、スライスの状態からもっとも具体的な情報が得られます。RAID-5 ボリュームの状態からわかるのは、「正常 (Okay)」、「保守 (Maintenance)」といった総合的な状態情報だけです。
RAID-5 ボリュームの状態が「保守 (Maintenance)」になっている場合は、スライスの状態を確認します。スライスの状態は、スライスが「保守 (Maintenance)」状態なのか、それとも「最後にエラー (Last Erred)」状態なのかを具体的に示します。スライスが「保守 (Maintenance)」状態なのか「最後にエラー (Last Erred)」状態なのかによって、異なる回復処置を実行します。「保守 (Maintenance)」状態のスライスが 1 つだけ存在する場合は、データを失うことなくスライスを修理できます。「保守 (Maintenance)」状態のスライスと「最後にエラー (Last Erred)」状態のスライスが 1 つずつある場合は、おそらくデータは破壊されています。この場合には、「保守」状態のスライスを修理してから「最後にエラー」状態のスライスを修理する必要があります。
次の表に、RAID-5 ボリュームの状態を示します。
表 14–1 RAID-5 ボリュームの状態
状態 |
意味 |
---|---|
初期化中 (Initializing) |
スライスは、ディスクブロックをゼロで初期化しています。この処理は、データとパリティーを飛び越し方式でストライプ化する RAID-5 ボリュームの特性上、必要になるものです。 状態が「正常 (Okay)」になったら、初期化が完了しており、デバイスを開くことができます。この状態になるまで、アプリケーションはエラーメッセージを受け取ります。 |
正常 (Okay) |
デバイスにはエラーはなく、使用可能な状態です。 |
保守 (Maintenance) |
入出力エラーまたはオープンエラーが原因で、スライスが障害扱いになっています。このようなエラーが発生するのは、読み取り操作または書き込み操作時です。 |
次の表に、RAID-5 ボリュームのスライス状態と実行可能な処置を示します。
表 14–2 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 コマンドを実行すると、metareplace コマンドを使用して行うべき処置を示す invoke 回復メッセージが表示されます。このコマンドは、-f フラグを指定して実行する必要があります。この状態は、複数のスライスに障害が発生したため、不正なデータが生成された可能性があることを示しています。 |
Solaris ボリュームマネージャには、ミラーおよび RAID-5 ボリューム内でコンポーネントの「置き換え」と「有効化」を行う機能があります。この機能についての問題点と要件は、ミラーおよび RAID-5 ボリュームに関するものと同じです。詳細については、「RAID-1 および RAID-5 ボリューム内のコンポーネントの交換と有効化の概要」を参照してください。
RAID-5 ボリュームでは、RAID-1 ボリュームよりも少ないオーバーヘッドで記憶領域の冗長性を達成できます (RAID-1 ボリュームでデータの冗長性を得るには、合計記憶領域の 2 倍の領域が必要)。RAID-5 ボリュームを設定すると、同じ数のディスクコンポーネントでも、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 ボリューム (ミラー)」を参照してください。