15.3 ソフトウェアRAID設定

RAID (Redundant Array of Independent Disks)の目的は、複数のハードディスクパーティションを1つの大きい仮想ハードディスクに結合し、パフォーマンスとデータのセキュリティを最適化することです。ほとんどのRAIDコントローラはSCSIプロトコルを使用します。 これは、IDEプロトコルも効率的な方法で多数のハードディスクのアドレスを指定でき、コマンドのパラレル処理に適しているからです。一方、IDEまたはSATAハードディスクをサポートしているRAIDコントローラもあります。ソフトウェアRAIDは、ハードウェアRAIDコントローラの追加購入することなく、RAIDシステムの利点を提供します。ただし、これにはいくらかのCPU時間を要し、高性能なコンピュータには適さないメモリ要件があります。

SUSE® Linux Enterprise Serverには、数個のハードディスクを、1つのソフトウェアRAIDシステムに統合するオプションがあります。RAIDには、それぞれが異なる目標、利点、および属性を持ついくつかのハードディスクを1つのRAIDシステムに結合するためのいくつかの戦略が含まれています。これらは通常、RAIDレベルと呼ばれます。

一般的なRAIDレベルは次のとおりです。

RAID 0

このレベルでは、各ファイルのブロックが複数のディスクドライブに分散されるので、データアクセスのパフォーマンスが向上します。このレベルはデータのバックアップを提供しないため、実際にはRAIDではありませんが、この種のシステムではRAID  0という名前が一般的です。RAID 0では、2つ以上のハードディスクが互いにプールします。高いパフォーマンスが得られます。 ただし、1つのハードディスクに障害が発生しただけで、RAIDシステムが破壊され、データは失われます。

RAID 1

このレベルでは、データが他のハードディスクに一対一でコピーされるため、データに対する適切なセキュリティが提供されます。 これは、ハードディスクミラーリングとして知られています。一方のディスクが破壊された場合、そのディスク内容のコピーが他方のディスク上で利用できます。一方のディスクが破壊されても、データが危険にさらされることはありません。ただし、破壊が検出されない場合、破損したデータが適切なディスクにミラーされ、そのようにデータ破損が発生することもあります。単一ディスクアクセスを使用した場合を比較すると、コピー処理において書き込みのパフォーマンスが若干、低下しますが(10~20%遅くなる)、読み取りアクセスは通常の物理ハードディスクに比べ、大幅に速くなります。 これは、データが複製されており、並列にスキャンできるためです。一般的に、レベル1は、単一ディスクのほぼ2倍の読み取りトランザクション速度と、単一ディスクとほぼ同じ書き込みトランザクション速度を提供します。

RAID 2およびRAID 3

これらは、一般的なRAID実装ではありません。レベル2では、データは、ブロックレベルではなく、ビットレベルでストライプ化されます。レベル3は、専用パリティディスクによってバイトレベルのストライプ化を提供しますが、複数の要求を同時にサービスすることはできません。両方のレベルとも、使用されることはまれです。

RAID 4

レベル4は、専用パリティディスクと結合されたレベル0と同様に、ブロックレベルのストライプ化を提供します。データディスク障害の場合、交換用ディスクを作成するために、パリティデータが使用されます。ただし、パリティディスクは、書き込みアクセスの場合に障害となる可能性があります。にもかかわらず、レベル4は時々使用されます。

RAID 5

RAIDD 5は、レベル0とレベル1の間をパフォーマンスおよび冗長性の面で調整して、最適化したものです。ハードディスクスペースは、使用されるディスク数から1を引いたものに等しくなります。データは、RAIDD 0の場合のようにハードディスク間で分散されます。パーティションの1つで作成されたパリティブロックがあるのは、セキュリティ上の理由からです。各パーティションはXORによって互いにリンクされているので、システム障害の場合に、内容が対応するパリティブロックによって再構築されます。RAIDD 5の場合、同時に複数のハードディスクが障害を起こすことはありません。1つのハードディスクに障害がある場合は、そのハードディスクをできるだけ早く交換して、データ消失の危険性をなくす必要があります。

その他のRAIDレベル

他のRAIDレベル(RAIDn、RAID 10、RAID 0+1、RAID 30、RAID 50など)が開発されていますが、そのうちのいくつかはハードウェアベンダによって独自規格で作成される実装となります。これらのレベルは、広く使用されてはいないため、ここでの説明は省略します。

15.3.1 YaSTによるソフトウェアRAID設定

YaSTの[RAID]設定は、YaST Expert Partitioner (セクション 15.1, YaSTパーティション分割ツールの使用参照)からアクセスできます。このパーティション設定ツールを使用すると、既存のパーティションを編集および削除したり、ソフトウェアRAIDで使用する新規パーティションを作成できます。RAIDパーティションは、次の手順で作成します。

  1. [ハードディスク]からハードディスクを選択します。

  2. [パーティション]タブに変更します。

  3. [追加]をクリックし、このディスクでのRAIDパーティションのサイズを入力します。

  4. [Do not Format the Partition]を使用し、[ファイルシステムID][0xFD Linux RAID]に変更します。このパーティションはマウントしないでください。

  5. 利用可能なディスクで目的のすべての物理ボリュームを定義するまで、この手順を繰り返します。

RAID 0およびRAID 1の場合、少なくとも2つのパーティションが必要です。RAID 1の場合、パーティションは2つだけです。RAID 5を使用する場合、少なくとも3つのパーティションが必要です。同じサイズのパーティションだけを使用するようにお勧めします。ハードディスクのどれかに障害が発生した場合にデータを失うリスクを減らしたり(RAID 1、RAID 5)、RAID 0のパフォーマンスを最適化するには、RAIDパーティションを異なる複数のハードディスクに配置する必要があります。RAIDで使用するパーティションをすべて作成したら、[RAID] > [Add RAID]の順に選択して、RAIDの設定を開始します。

次のダイアログでは、RAIDレベル 0、1、5のどれかを選択します。次に、RAIDシステムで使用するLinux RAIDタイプまたはLinuxネイティブタイプどちらかのパーティションをすべて選択します。スワップパーティションまたはDOSパーティションは表示されません。

図 15-5 RAIDパーティション

前に割り当てを解除したパーティションを、選択したRAIDボリュームに追加するには、そのパーティションをクリックしてから、[追加]をクリックします。すべてのパーティションをRAID用の予約パーティションとして割り当てます。すべてのパーティションを割り当てないと、パーティションのスペースが未使用のまま残ります。パーティションをすべて割り当てたら、[次へ]をクリックして、利用可能な[RAID Options]を選択します。

最後のステップでは、使用するファイルシステムのほか、暗号化とRAIDボリュームのマウントポイントを設定します。[完了]をクリックして設定を完了した後、エキスパートパーティショナ内のRAIDとマークされた/dev/md0デバイスと他のデバイスを観察してください。

15.3.2 トラブルシューティング

/proc/mdstatsファイルをチェックして、RAIDパーティションが破壊されているかどうかを調べます。システム障害が発生した場合は、Linuxシステムをシャットダウンして、問題のあるハードディスクを、同じ方法でパーティション分割されている新しいハードディスクで置き換えます。次に、システムを再起動して、mdadm /dev/mdX --add /dev/sdXコマンドを入力します。「X」を使用しているデバイス識別子に置き換えてください。これにより、ハードディスクがRAIDシステムに自動的に統合され、そのRAIDシステムが完全に再構築されます。

再構築中もすべてのデータにアクセスできますが、RAIDが完全に再構築されるまでは、パフォーマンス上の問題が発生する可能性があります。

15.3.3 詳細情報

ソフトウェアRAIDの設定方法と詳細情報が、次のHOWTOにあります。

Linux RAIDメーリングリストも使用できます。たとえば、http://marc.theaimsgroup.com/?l=linux-raidなどがあります。