RAID (Redundant Array of Independent Disks)の目的は、複数のハードディスクパーティションを1つの大きい仮想ハードディスクに結合し、パフォーマンスとデータのセキュリティを最適化することです。ほとんどのRAIDコントローラはSCSIプロトコルを使用します。 これは、IDEプロトコルも効率的な方法で多数のハードディスクのアドレスを指定でき、コマンドのパラレル処理に適しているからです。一方、IDEまたはSATAハードディスクをサポートしているRAIDコントローラもあります。ソフトウェアRAIDは、ハードウェアRAIDコントローラの追加購入することなく、RAIDシステムの利点を提供します。ただし、これにはいくらかのCPU時間を要し、高性能なコンピュータには適さないメモリ要件があります。
SUSE® Linux Enterpriseでは、YaSTを使用することにより、複数のハードディスクを1つのソフトウェアRAIDシステムに結合するオプションを提供します。これは、非常にリーズナブルな、ハードウェアRAIDの代替機能です。RAIDには、それぞれが異なる目標、利点、および属性を持ついくつかのハードディスクを1つのRAIDシステムに結合するためのいくつかの戦略が含まれています。これらは通常、RAIDレベルと呼ばれます。
一般的なRAIDレベルは次のとおりです。
このレベルでは、各ファイルのブロックが複数のディスクドライブに分散されるので、データアクセスのパフォーマンスが向上します。このレベルはデータのバックアップを提供しないため、実際にはRAIDではありませんが、この種のシステムではRAID 0という名前が一般的です。RAID 0では、2つ以上のハードディスクが互いにプールします。高いパフォーマンスが得られます。 ただし、1つのハードディスクに障害が発生しただけで、RAIDシステムが破壊され、データは失われます。
このレベルでは、データが他のハードディスクに一対一でコピーされるため、データに対する適切なセキュリティが提供されます。 これは、ハードディスクミラーリングとして知られています。一方のディスクが破壊された場合、そのディスク内容のコピーが他方のディスク上で利用できます。一方のディスクが破壊されても、データが危険にさらされることはありません。ただし、破壊が検出されない場合、破損したデータが適切なディスクにミラーされ、そのようにデータ破損が発生することもあります。単一ディスクアクセスを使用した場合を比較すると、コピー処理において書き込みのパフォーマンスが若干、低下しますが(10~20%遅くなる)、読み取りアクセスは通常の物理ハードディスクに比べ、大幅に速くなります。 これは、データが複製されており、並列にスキャンできるためです。一般的に、レベル1は、単一ディスクのほぼ2倍の読み取りトランザクション速度と、単一ディスクとほぼ同じ書き込みトランザクション速度を提供します。
これらは、一般的なRAID実装ではありません。レベル2では、データは、ブロックレベルではなく、ビットレベルでストライプ化されます。レベル3は、専用パリティディスクによってバイトレベルのストライプ化を提供しますが、複数の要求を同時にサービスすることはできません。両方のレベルとも、使用されることはまれです。
レベル4は、専用パリティディスクと結合されたレベル0と同様に、ブロックレベルのストライプ化を提供します。データディスク障害の場合、交換用ディスクを作成するために、パリティデータが使用されます。ただし、パリティディスクは、書き込みアクセスの場合に障害となる可能性があります。にもかかわらず、レベル4は時々使用されます。
RAIDD 5は、レベル0とレベル1の間をパフォーマンスおよび冗長性の面で調整して、最適化したものです。ハードディスクスペースは、使用されるディスク数から1を引いたものに等しくなります。データは、RAIDD 0の場合のようにハードディスク間で分散されます。パーティションの1つで作成されたパリティブロックがあるのは、セキュリティ上の理由からです。各パーティションはXORによって互いにリンクされているので、システム障害の場合に、内容が対応するパリティブロックによって再構築されます。RAIDD 5の場合、同時に複数のハードディスクが障害を起こすことはありません。1つのハードディスクに障害がある場合は、そのハードディスクをできるだけ早く交換して、データ消失の危険性をなくす必要があります。
他のRAIDレベル(RAIDn、RAID 10、RAID 0+1、RAID 30、RAID 50など)が開発されていますが、そのうちのいくつかはハードウェアベンダによって独自規格で作成される実装となります。これらのレベルは、広く使用されてはいないため、ここでの説明は省略します。
YaSTソフトウェアRAID設定には、YaST Expert Partitioner (8.5.7項 「YaSTパーティション分割ツールの使用」を参照)からアクセスできます。このパーティション設定ツールを使用すると、既存のパーティションを編集および削除したり、ソフトウェアRAIDで使用する新規パーティションを作成できます。ここでは、RAIDパーティションを作成します。最初に+の順にクリックし、次にパーティション識別子としてを選択します。RAID 0およびRAID 1の場合、少なくとも2つのパーティションが必要です。RAID 1の場合、パーティションは2つだけです。RAID 5を使用する場合、少なくとも3つのパーティションが必要です。同じサイズのパーティションだけを使用するようにお勧めします。RAIDパーティションを異なるハードディスクに保存すると、 1つが損傷した場合のデータ消失のリスクが削減され(RAID 1と5)、またRAID 0のパフォーマンスを最適化できます。RAIDで使用するすべてのパーティションを作成したら、+
次のダイアログでは、RAIDレベル 0、 1、および 5の間で選択します。詳細については、「7.2.1項 「RAIDレベル」」を参照してください。をクリックすると、次のダイアログにタイプが「Linux RAID」または「Linux Native」であるすべてのパーティションのリストが表示されます(図 7.6. 「RAIDパーティション」を参照)。スワップパーティションまたはDOSパーティションは表示されません。パーティションがRAIDボリュームにすでに割り当てられている場合は、RAIDデバイスの名前(たとえば/dev/md0)がリストに表示されます。割り当てられていないパーティションは、「--」で示されます。
前に割り当てを解除したパーティションを、選択したRAIDボリュームに追加するには、そのパーティションをクリックしてから、[]をクリックします。この時点で、そのRAIDデバイスの名前が選択したパーティションの隣に入力されます。すべてのパーティションをRAID用の予約パーティションとして割り当てます。すべてのパーティションを割り当てないと、パーティションのスペースが未使用のまま残ります。すべてのパーティションを割り当てたら、[]をクリックして、設定ダイアログに進みます。このダイアログではパフォーマンスを微調整できます(図 7.7. 「ファイルシステム設定」を参照)。
従来のパーティションの場合と同様の設定以外だけでなく、暗号化とRAIDボリュームのマウントポイントを使用するように、ファイルシステムを設定します。をクリックして設定を完了した後、エキスパートパーティショナ内のRAIDとマークされた/dev/md0デバイスと他のデバイスを観察してください。
/proc/mdstatsファイルを調べて、RAIDパーティションが破壊されているかどうかを調べます。システム障害が発生した場合は、Linuxシステムをシャットダウンして、問題のあるハードディスクを、同じ方法でパーティション分割されている新しいハードディスクで置き換えます。次に、システムを再起動して、mdadm /dev/mdX --add /dev/sdXコマンドを入力します。「X」を使用しているデバイス識別子に置き換えてください。これにより、ハードディスクがRAIDシステムに自動的に統合され、そのRAIDシステムが完全に再構築されます。
ソフトウェアRAIDの設定方法と詳細情報が、次のHOWTOにあります。
http://www.novell.com/documentation/sles10/stor_evms/data/bookinfo.html
/usr/share/doc/packages/mdadm/Software-RAID.HOWTO.html
Linux RAIDメーリングリストも使用できます。たとえば、http://marc.theaimsgroup.com/?l=linux-raid&r=1&w=2などがあります。