この章では、Solaris ボリュームマネージャの RAID 5 ボリュームの概念について説明します。関連する作業については、第 14 章「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 ボリュームを再同期します。
図 13–1 に、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 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) のマニュアルページを参照してください。
Solaris ボリュームマネージャには、ミラーおよび RAID 5 ボリューム内のコンポーネントを置き換えたり、有効にしたりする機能があります。この機能についての問題点と要件は、ミラーおよび RAID 5 ボリュームに関するものと同じです。詳細は、RAID 1 および RAID 5 ボリューム内のコンポーネントの交換と有効化の概要を参照してください。
RAID 5 ボリュームでは、RAID 1 ボリュームよりも少ないオーバーヘッドで記憶領域の冗長性を達成できます (RAID 1 ボリュームでデータの冗長性を得るには、合計記憶領域の 2 倍の領域が必要)。RAID 5 ボリュームでは、同じ数のディスクコンポーネントを使って RAID 1 ボリュームよりも大きい容量をもつ冗長記憶域を構成できます。さらに、ホットスペア (第 15 章「ホットスペア集合 (概要)」 の特に ホットスペアの仕組みを参照) を使用すれば、RAID 1 とほぼ同じレベルの安全性が得られます。短所としては、書き込み時間の増加とコンポーネント障害時の大幅な性能低下が挙げられますが、多くの場合、このようなトレードオフが問題になることはありません。第 4 章「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 ボリューム (ミラー)を参照してください。