7 ソフトウェアRAIDの設定 #
RAID (Redundant Array of Independent Disks)の目的は、複数のハードディスクパーティションを1つの大きい仮想ハードディスクに結合し、パフォーマンスとデータのセキュリティを最適化することです。ほとんどのRAIDコントローラはSCSIプロトコルを使用します。これは、IDEプロトコルも効率的な方法で多数のハードディスクのアドレスを指定でき、コマンドのパラレル処理に適しているからです。一方、IDEまたはSATAハードディスクをサポートしているRAIDコントローラもあります。ソフトウェアRAIDは、ハードウェアRAIDコントローラ購入による追加コストなしで、RAIDシステムの利点を提供します。ただし、これにはいくらかのCPU時間を要し、高性能なコンピュータには適さないメモリ要件があります。
クラスタファイルシステムのソフトウェアRAIDはクラスタマルチデバイス(Cluster MD)を使用して設定する必要があります。https://documentation.suse.com/sle-ha-12/html/SLE-HA-all/cha-ha-cluster-md.htmlにある高可用性拡張機能のドキュメントを参照してください。
SUSE Linux Enterpriseには、いくつかのハードディスクを1つのソフトウェアRAIDシステムに統合するオプションがあります。RAIDには、それぞれが異なる目標、利点、および属性をもついくつかのハードディスクを1つのRAIDシステムに結合するためのいくつかの戦略が含まれています。これらは通常、RAIDレベルと呼ばれます。
7.1 RAIDレベルの理解 #
本項では、通常のRAIDレベル(0、1、2、3、4、5)とネストしたRAIDレベルについて説明します。
7.1.1 RAID 0 #
このレベルでは、各ファイルのブロックが複数のディスクに分散されるので、データアクセスのパフォーマンスが向上します。このレベルはデータのバックアップを提供しないため、実際にはRAIDではありませんが、この種のシステムではRAID 0という名前が一般的です。RAID 0では、2つ以上のハードディスクが互いにプールします。高いパフォーマンスが得られます。ただし、1つのハードディスクに障害が発生しただけで、RAIDシステムが破壊され、データは失われます。
7.1.2 RAID 1 #
このレベルでは、データが他のハードディスクに一対一でコピーされるため、データに対する適切なセキュリティが提供されます。これは、ハードディスクミラーリングとして知られています。ディスクが破壊された場合は、ディスクの内容のコピーをミラー先のもう1つのディスクで利用できます。したがって、1つのディスク以外のすべてのディスクが損なわれても、データを保全できます。ただし、損傷が検出されない場合は、正しいディスクに損傷したデータがミラーリングされる可能性があり、その場合はデータが壊れます。単一ディスクアクセスの使用時と比較すると、コピープロセスで書き込みのパフォーマンスが若干低下しますが(10~ 20%遅くなる)、読み取りアクセスは、通常の物理ハードディスクのどれと比べても、著しく高速です。これは、データが複製されているので、それらを並行してスキャンできるためです。RAID 1では、一般に、読み取りトランザクションの速度が単一ディスクのほぼ2倍、書き込みトランザクションの速度が単一ディスクと同じです。
7.1.3 RAID 2およびRAID 3 #
これらは、一般的なRAID実装ではありません。レベル2では、データは、ブロックレベルではなく、ビットレベルでストライプ化されます。レベル3は、専用パリティディスクによってバイトレベルのストライプ化を提供しますが、複数の要求を同時にサービスすることはできません。両レベルとも、まれにしか使用されません。
7.1.4 RAID 4 #
レベル 4は、専用パリティディスクと結合されたレベル 0と同様に、ブロックレベルのストライピングを提供します。データディスクがエラーになると、パリティデータで置き換え用のディスクが作成されます。ただし、パリティディスクは、書き込みアクセスにボトルネックを生成する可能性があります。にもかかわらず、レベル4は時々使用されます。
7.1.5 RAID 5 #
RAIDD 5は、レベル0とレベル1の間をパフォーマンスおよび冗長性の面で調整して、最適化したものです。ハードディスクスペースは、使用されるディスク数から1を引いたものに等しくなります。データは、RAIDD 0の場合のようにハードディスク間で分散されます。パーティションの1つで作成されたパリティブロックがあるのは、セキュリティ上の理由からです。各パーティションはXORによって互いにリンクされているので、システム障害の場合に、内容が対応するパリティブロックによって再構築されます。RAIDD 5の場合、同時に複数のハードディスクが障害を起こすことはありません。1つのハードディスクに障害がある場合は、可能であればそのハードディスクを交換して、データ消失の危険性をなくす必要があります。
7.1.6 RAID 6 #
RAID 6は、本来、RAID 5の拡張であり、2つ目の独立した分散パリティスキーム(デュアルパリティ)の使用により、耐障害性をさらに追加します。データ回復プロセスで、2つのハードディスクに障害が発生しても、システムは稼動し続け、データが失われることはありません。
RAID 6は、複数の同時ドライブエラーに耐えることで、非常に高いデータ耐障害性を提供します。RAID 6は、データを失うことなく、2つのデバイスの喪失を処理します。したがって、N個のドライブのデータを保存するには、N+2個のドライブが必要です。その結果、最低限4個のデバイスが必要となります。
通常モードおよび単一ディスク障害モードでは、RAID 5と比べ、RAID 6のパフォーマンスは若干低いですが、同程度です。デュアルディスク障害モードでは、RAID 6は非常に低速です。RAID 6設定では、書き込み操作のためにかなりのCPU時間とメモリが必要です。
機能 |
RAID 5 |
RAID 6 |
---|---|---|
デバイスの数 |
N+1(最小限3個) |
N+2(最小限4個) |
パリティ |
分散型、シングル |
分散型、デュアル |
パフォーマンス |
書き込みおよび再構築に中程度の影響 |
シーケンシャルな書き込みでは、RAID 5より影響大 |
耐障害性 |
1つのコンポーネントデバイスの障害 |
2つのコンポーネントデバイスの障害 |
7.1.7 ネストしたコンプレックスRAIDレベル #
他にもRAIDレベルが開発されています(RAIDn、RAID 10、RAID 0+1、RAID 30、RAID 50など)。これらの一部は、ハードウェアベンダーによって作成された専有インプリメンテーションです。RAID 10設定の作成例については、「第9章 「ソフトウェアRAID 10デバイスの作成」」を参照してください。
7.2 YaSTによるソフトウェアRAID設定 #
YaSTソフトRAID設定には、YaST Expert Partitionerからアクセスできます。このパーティション設定ツールを使用すると、既存のパーティションを編集および削除したり、ソフトウェアRAIDで使用する新規パーティションを作成したりすることもできます。これらの方法は、RAIDレベル0、1、5、および6の設定に適用されます。RAID 10の設定については、第9章 「ソフトウェアRAID 10デバイスの作成」で説明されています。
YaSTを起動して
を開きます。必要に応じて、RAID設定で使用するパーティションを作成します。パーティションをフォーマットしたり、パーティションタイプを12.1項 「YaSTのパーティショナの使用」を参照してください。
に設定したりしないでください。既存のパーティションを使用する場合、パーティションタイプを変更する必要はありません。YaSTによって自動的に変更されます。詳細については、ハードディスクのどれかに障害が発生した場合にデータを失うリスクを減らすため(RAID 1、RAID 5)、およびRAID 0のパフォーマンスを最適化するため、異なるハードディスクに保存されているパーティションを使用することを強くお勧めします。
RAID 0の場合は、少なくとも2つのパーティションが必要です。RAID 1に必要なパーティションは2つだけですが、RAID 5の場合は少なくとも3つのパーティションが必要です。RAID 6セットアップでは、少なくとも4つのパーティションが必要です。各セグメントは最小サイズのパーティションと同量のスペースしか提供できないので、同じサイズのパーティションだけを使用するようお勧めします。
左のパネルで、
を選択します。既存のRAID設定のリストが右のパネルに表示されます。
[RAID]ページの左下で、
をクリックします。オプションで、
でRAIDに名前を割り当てることができます。この名前は、/dev/md/NAME
として利用可能になります。詳細については、7.2.1項 「RAIDの名前」を参照してください。図 7.1: RAID 5設定の例 #https://raid.wiki.kernel.org/index.php/RAID_setup#Chunk_sizesを参照してください。パリティアルゴリズムの詳細については、
を選択し、該当する場合は を選択します。最適なチャンクサイズは、データのタイプとRAIDのタイプによって変わります。詳細については、--layout
オプションの検索時にman 8 mdadm
を使用して参照できます。わからない場合は、デフォルト値を使用してください。
7.2.1 RAIDの名前 #
デフォルトでは、ソフトウェアRAIDデバイスには、mdN
(N
は数字)というパターンに従った数字の名前が付いています。そのため、たとえば/dev/md127
としてデバイスにアクセスでき、/proc/mdstat
および/proc/partitions
にはmd127
としてリストされます。このような名前では作業しづらい場合があります。SUSE Linux Enterprise Serverでは、この問題を回避する方法を2つ提供しています。
- デバイスへの名前付きリンクを指定する
オプションで、YaSTでRAIDデバイスを作成する際、または
mdadm --create '/dev/md/
NAME'を使用してコマンドラインで、RAIDデバイスの名前を指定できます。デバイス名はmdN
のままですが、リンク/dev/md/NAME
が作成されます。tux >
ls -og /dev/md total 0 lrwxrwxrwx 1 8 Dec 9 15:11 myRAID -> ../md127デバイスは
/proc
には引き続きmd127
としてリストされます。- 名前付きデバイスを指定する
ご使用のセットアップでデバイスへの名前付きリンクでは不十分な場合、次のコマンドを実行して、
/etc/mdadm.conf
に「CREATE names=yes」という行を追加します。sudo echo "CREATE names=yes" >> /etc/mdadm.conf
これにより、
myRAID
のような名前が「実際の」デバイス名として使用されるようになります。このデバイスは/dev/myRAID
でアクセスできるだけでなく、/proc
にもmyRAID
としてリストされます。これは、設定ファイルの変更後に設定したRAIDにのみ適用される点に注意してください。アクティブなRAIDでは、停止して再アセンブルするまで引き続きmdN
形式の名前が使用されます。警告: 非互換のツール一部のツールは、名前付きRAIDデバイスをサポートしていません。ツールがRAIDデバイスに
mdN
形式の名前が付いていることを予期している場合、そのツールはデバイスを特定できません。
7.3 ソフトウェアRAIDのトラブルシューティング #
/proc/mdstat
ファイルをチェックして、RAIDパーティションが破損しているかどうかを調べます。ディスク障害が発生した場合は、Linuxシステムをシャットダウンして、問題のあるハードディスクを、同じ方法でパーティション分割されている新しいハードディスクで置き換えます。次に、システムを再起動して、mdadm /dev/mdX --add /dev/sdX
コマンドを入力します。「X」
を特定のデバイス識別子に置き換えてください。これにより、ハードディスクがRAIDシステムに自動的に統合され、そのRAIDシステムが完全に再構築されます(RAID 0を除くすべてのRAIDレベル)。
再構築中もすべてのデータにアクセスできますが、RAIDが完全に再構築されるまでは、パフォーマンスに問題が発生する場合があります。
7.3.1 ディスク障害復旧後の回復 #
RAIDアレイに含まれているディスクが障害を起こす理由はいくつかあります。最も一般的な理由を一覧にしました。
ディスクメディアに問題が発生
ディスクドライブコントローラに障害発生
ディスクへの接続に障害発生
ディスクメディアまたはディスクコントローラの障害の場合、デバイスを交換または修理する必要があります。RAID内でホットスペアが設定されていない場合、手動による介入作業が必要です。
最後の接続障害の場合、接続の修復後(自動的に修復する場合もあります)、mdadm
コマンドによって、障害が発生したデバイスは、自動的に再度追加されます。
md
/mdadm
は、ディスク障害の原因を正確に判断できないため、デバイスが正常であると明示的に指示されるまで、ディスクエラーを深刻なエラーと判断し、障害が発生しているデバイスを異常と見なします。
内部RAIDアレイを持つストレージデバイスなど、環境によっては、デバイス障害の原因の多くを接続の問題が占める場合があります。このような場合、mdadm
に対して、デバイスが表示されたら、そのデバイスを--re-add
によって自動的に再度追加しても問題ないと指示することができます。これには、以下の行を/etc/mdadm.conf
に追加します。
POLICY action=re-add
再表示されたらそのデバイスを自動的に再度追加できるのは、udev
ルールによって、mdadm -I DISK_DEVICE_NAME
が、自動的に表示されたあらゆるデバイスで実行されるように設定されている場合(デフォルトの動作)、およびwrite-intentビットマップが設定されている場合(デフォルトの設定)に限られることに注意してください。
このポリシーを特定のデバイスにのみ適用し、他には適用しない場合、path=
オプションを/etc/mdadm.conf
内のPOLICY
行に追加して、選択したデバイスにのみデフォルトでないアクションを限定することができます。ワイルドカードを使用して、デバイスのグループを指定することができます。詳しくは、man 5 mdadm.conf
を参照してください。
7.4 その他の情報 #
ソフトウェアRAIDの設定方法と詳細情報が、次のHowtoにあります。
Linux RAID wiki: https://raid.wiki.kernel.org/
The Software RAID HOWTO(
/usr/share/doc/packages/mdadm/Software-RAID.HOWTO.html
ファイル)
「linux-raid」(http://marc.info/?l=linux-raid)などのLinux RAIDメーリングリストもあります。