Solstice DiskSuite 4.2.1 リファレンス

ストライプに関するトレードオフ

要約すると、ストライプは大規模な順次入出力と不均一な入出力分散のパフォーマンスを向上させますが、データの冗長性は提供しないということです。

書き込みの多いアプリケーション:

RAID5 は「読み取り−修正−書き込み」という性質を持っていますので、書き込みが 20% を超えるアプリケーションでは、RAID5 を使用しない方がよいでしょう。データの保護が必要であれば、ミラー化を使用します。

RAID5 は、ミラーより書き込みパフォーマンスが低くなりますので、当然のことながら、データを保護しないメタデバイスより低くなります。SPARCstorage Array に搭載されている NVRAM キャッシュにより、RAID5 とミラーのギャップはなくなります。

ストライプ幅単位の書き込み:

RAID5 は、 (ディスク障害が発生して低パフォーマンスモードで動作している場合を除いて) 高い読み取りパフォーマンスを提供しますが、「読み取り−修正−書き込み」という性質のため、書き込みパフォーマンスは低くなります。

特に、書き込みサイズがストライプ幅より小さい場合、つまりストライプと整合がとれていない場合には、複数の入出力 (読み取り−修正−書き込みシーケンス) が必要になります。最初にデータとパリティをバッファに読み込み、次にパリティを修正して (データとパリティの排他的論理和を取ってから新しいパリティを計算して) 新しいパリティとデータをログに書き込み、最後に新しいパリティとデータをデータストライプユニットに書き込みます (この場合、排他的論理和とは古いデータをパリティから論理的に差し引いてから新しいデータをパリティに論理的に加えることをさします)。

ストライプ幅単位の書き込みでは、読み込み−修正−書き込みシーケンスが必要ないため、パフォーマンスはさほど低下しません。この場合には、新しいすべてのデータストライプの排他的論理和を取ってパリティを生成し、新しいデータとパリティをログに書き込んでから、新しいデータとパリティを 1 回の操作でストライプユニットに書き込みます。

ストライプ幅単位の書き込みは、入出力要求がストライプと整合がとれていて、入出力サイズが正確に一致している場合に使用されます。

interlace_size * (num_of_columns -1)

たとえば、RAID5 構成を 4 つのコラムでストライプ化した場合、各ストライプでは、3 つのチャンクにデータが格納され、残りの 1 つのチャンクにパリティが書き込まれます。この例では、入出力要求がストライプの先頭から始まっていて、入出力サイズが stripe_unit_size * 3 に等しければ、ストライプ幅単位の書き込みが使用されます。ストライプユニットサイズが 16 K バイトで、整列している入出力要求のサイズが 48 K バイトであれば、ストライプ幅単位の書き込みが使用されます。

パフォーマンス低下モード:

RAID5 メタデバイスのスライスが故障すると、パリティを使用してデータが再構築されます。この操作では、RAID5 メタデバイスの各カラムからの読み取りを行います。RAID5 メタデバイスに割り当てられているスライス数が多いほど、故障したデバイスに向けられた入出力 (RAID5 メタデバイスの再同期を含む) に掛かる時間が長くなります。