7 ソフトウェアRAIDの設定 #
RAID (Redundant Array of Independent Disks)の目的は、複数のハードディスクパーティションを1つの大きい仮想ハードディスクに結合し、パフォーマンスとデータのセキュリティを最適化することです。ほとんどのRAIDコントローラはSCSIプロトコルを使用します。これは、IDEプロトコルよりも効率的な方法で多数のハードディスクのアドレスを指定でき、コマンドのパラレル処理に適しているからです。一方、IDEハードディスクやSATAハードディスクをサポートしているRAIDコントローラもあります。ソフトウェアRAIDは、ハードウェアRAIDコントローラ購入による追加コストなしで、RAIDシステムの利点を提供します。ただし、これにはいくらかのCPU時間を要し、高性能なコンピュータには適さないメモリ要件があります。
クラスタファイルシステムのソフトウェアRAIDはクラスタマルチデバイス(Cluster MD)を使用して設定する必要があります。を参照してください。 Administration Guide for SUSE Linux Enterprise High Availability
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にコピーされるため、データに十分なセキュリティを提供します。これは「ハードディスクミラーリング」と呼ばれます。ディスクが破壊された場合は、ディスクの内容のコピーをミラー先のもう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を減算した台数分に等しくなります。データは、RAID 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のパフォーマンスは若干低いですが、同程度です。2台のディスクに障害が発生すると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設定で使用するパーティションを作成します。パーティションをフォーマットしたり、パーティションタイプを11.1項 「を参照してください。 の使用」
に設定したりしないでください。既存のパーティションを使用する場合、パーティションタイプを変更する必要はありません。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
を使用して参照できます。わからない場合は、デフォルト値を使用してください。
パーティショナはパーティションの代わりにディスクの上にRAIDを作成することを可能にしますが、いくつかの理由のため、このアプローチは推奨されません。このようなRAIDにブートローダをインストールすることはサポートされていないため、ブート用に別のデバイスを使用する必要があります。fdiskやpartedなどのツールは当該RAIDでは適切に機能しないため、RAIDの特定のセットアップを知らない人によって誤った診断やアクションが行われる可能性があります。
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
が作成されます。>
ls -og /dev/md total 0 lrwxrwxrwx 1 8 Dec 9 15:11 myRAID -> ../md127デバイスは
/proc
には引き続きmd127
としてリストされます。- 名前付きデバイスを指定する
ご使用のセットアップでデバイスへの名前付きリンクでは不十分な場合、次のコマンドを実行して、
/etc/mdadm.conf
にCREATE names=yes
という行を追加します。>
echo "CREATE names=yes" | sudo tee -a /etc/mdadm.confこれにより、
myRAID
のような名前が「実際の」デバイス名として使用されるようになります。このデバイスは/dev/myRAID
でアクセスできるだけでなく、/proc
にもmyRAID
としてリストされます。これは、設定ファイルの変更後に設定したRAIDにのみ適用される点に注意してください。アクティブなRAIDでは、停止して再アセンブルするまで引き続きmdN
形式の名前が使用されます。警告: 非互換のツール一部のツールは、名前付きRAIDデバイスをサポートしていません。ツールがRAIDデバイスに
mdN
形式の名前が付いていることを予期している場合、そのツールはデバイスを特定できません。
7.3 AArch64のRAID 5のストライプサイズの設定 #
デフォルトでは、ストライプサイズは4KBに設定されています。デフォルトのストライプサイズを変更する必要がある場合、たとえば、AArch64の一般的なページサイズの64KBに合わせるには、CLIを使用してストライプサイズを手動で設定できます。
>
sudo
echo 16384 > /sys/block/md1/md/stripe_size
上記のコマンドを実行すると、ストライプサイズは16KBに設定されます。4096、8192など他の値を設定できますが、値は2のべき乗である必要があります。
7.4 ソフトウェアRAIDの監視 #
monitor
モードでデーモンとしてmdadm
を実行し、ソフトウェアRAIDを監視することができます。monitor
モードでは、mdadm
はアレイのディスク障害を定期的に確認します。障害が発生した場合、mdadm
は管理者に電子メールを送信します。チェックの時間間隔を定義するには、次のコマンドを実行します。
mdadm --monitor --mail=root@localhost --delay=1800 /dev/md2
先に示したコマンドは1800秒間隔で/dev/md2
アレイの監視をオンにします。障害が発生した場合、電子メールがroot@localhost
に送信されます。
デフォルトでは、RAIDチェックが有効化されています。各チェックの間隔が十分な長さではなく、警告が表示される場合があります。このように、delay
オプションでより高い値を設定することにより、間隔を増やすことができます。
7.5 詳細情報 #
ソフトウェアRAIDの設定方法と詳細情報が、次のHOWTOにあります。
The Linux RAID wiki: https://raid.wiki.kernel.org/
The Software RAID HOWTO(
/usr/share/doc/packages/mdadm/Software-RAID.HOWTO.html
ファイル)
「linux-raid」(https://marc.info/?l=linux-raid)などのLinux RAIDメーリングリストもあります。