10.3 mdadmによるコンプレックスRAID 10の作成

10.3.1 mdadm RAID10の理解

mdadmでは、RAID10レベルで、RAID 0(ストライピング)とRAID 1(ミラーリング)の両方の機能を組み合わせた単一の複雑なソフトウェアRAIDが作成されます。すべてのデータブロックの複数のコピーが、ストライピングの規則に従って、複数のドライブ上に配置されます。コンポーネントデバイスは、すべて同じサイズにする必要があります。

コンプレックスRAID10とネストしたRAID 10 (1+0)の比較

コンプレックスRAID ¯、ネストしたRAID 10 (1+0)と目的は同じですが、次の点で異なります。

表 10-5 コンプレックスRAID 10対ネストしたRAID 10

機能

mdadm RAID10オプション

ネストしたRAID 10(1+0)

デバイスの数

偶数個または奇数個のコンポーネントデバイス

偶数個のコンポーネントデバイス

コンポーネントデバイス

単一のRAIDデバイスとして管理されます。

ネストしたRAIDデバイスとして管理されます。

ストライピング

ストライピングは、コンポーネントデバイス上にnearレイアウトまたはfarレイアウトを生じます。

farレイアウトでは、RAID 1ペアの数でなく、ドライブ数で増減するシーケンシャルな読み込みスループットを提供します。

ストライピングは、連続的に、すべてのコンポーネントデバイスをまたぎます。

データの複数コピー

2からアレイ内のデバイス数まで

ミラーリングされたセグメントごとにコピー

ホットスペアデバイス

単一スペアですべてのコンポーネントデバイスに対応できます。

ベースをなすミラーリングされたアレイごとにスペアを設定したり、すべてのミラーに対応するスペアグループに対するスペアを設定できます。

mdadm RAID10のレプリカ数

mdadm RAID10アレイの設定時に、データブロックごとに必要なレプリカ数を指定する必要があります。デフォルトのレプリカ数は2ですが、2からアレイ内のデバイス数まで可能です。

mdadm RAID10のデバイス数

少なくとも、指定のレプリカ数と同数のコンポーネントデバイスを使用する必要があります。ただし、RAID10アレイのコンポーネントデバイス数は各データブロックのレプリカ数の倍数である必要はありません。有効なストレージサイズは、デバイス数をレプリカ数で割った数です。

たとえば、5個のコンポーネントデバイスで作成したアレイに2つのレプリカを指定した場合は、各ブロックのコピーが2つの異なるデバイスに保存されます。したがって、すべてのデータの1コピーの有効なストレージサイズは、5/2(つまり、コンポーネントデバイスのサイズの2.5倍)となります。

nearレイアウト

nearレイアウトでは、異なるコンポーネントデバイス上で、データブロックのコピーが互いに接近してストライプされます。つまり、あるデータブロックの複数のコピーが異なるデバイス内で同様にオフセットされます。nearは、RAID10のデフォルトレイアウトです。たとえば、奇数個のコンポーネントデバイスとデータの2コピーを使用する場合は、一部のコピーが、1チャンク分、デバイス内を前進します。

mdadm RAID 10のnearレイアウトは、半数のドライブ上のRAID 0と同様の読み書きパフォーマンスを提供します。

偶数個のディスクと2つのレプリカを使用したnearレイアウト

sda1 sdb1 sdc1 sde1
  0    0    1    1
  2    2    3    3
  4    4    5    5
  6    6    7    7
  8    8    9    9

奇数個のディスクと2つのレプリカを使用したnearレイアウト

sda1 sdb1 sdc1 sde1 sdf1
  0     0    1    1    2
  2     3    3    4    4
  5     5    6    6    7
  7     8    8    9    9
  10   10  11   11   12

farレイアウト

farレイアウトは、すべてのドライブの前半部分にデータをストライプし、次に、2つ目のデータコピーをすべてのドライブの後半部分にストライプして、ブロックのすべてのコピーが異なるドライブに配置されるようにします。値の2つ目のセットは、コンポーネントドライブの中ほどから開始します。

farレイアウトでは、mdadm RAID10の読み込みパフォーマンスは、すべてのドライブを使用したRAID 0と同様ですが、書き込みパフォーマンスは、ドライブヘッドのシーク回数が増えるので、RAID 0よりかなり遅くなります。このレイアウトは、 読み込み専用ファイルサーバなどの、読み込み集約型操作に最適です。

raid10の書き込み速度は、付近のレイアウトを使用しているraid1やraid0などの他のミラーリングRAIDの種類と同等です。これは、ファイルシステムのエレベータが生の書き込みよりも効率のよい書き込みのスケジュールを行うためです。Raid10をfarレイアウトで使用する方法は、ミラーリングによる書き込みアプリケーションに適しています。

偶数個のディスクと2つのレプリカを使用したfarレイアウト

sda1 sdb1 sdc1 sde1
  0    1    2    3
  3    5    6    7       
  . . .
  3    1    2    3
  7    4    5    6

奇数個のディスクと2つのレプリカを使用したfarレイアウト

sda1 sdb1 sdc1 sde1 sdf1
  0    1    2    3    4
  5    6    7    8    9
  . . .
  4    0    1    2    3
  9    5    6    7    8

10.3.2 mdadmによるRAID 10の作成

mdadmのRAID10オプションでは、ネストなしのRAID 10デバイスが作成されます。RAID10-については、「セクション 10.3, mdadmによるコンプレックスRAID 10の作成」を参照してください。

このセクションのプロシージャでは、次のテーブルに示すデバイス名を使用します。それらのデバイス名は、必ず、ご使用のデバイスの名前で変更してください。

表 10-6 mdadm RAID10オプションでRAID 10を作成するシナリオ

rawデバイス

RAID10(near/farストライピングスキーム)

/dev/sdf1

/dev/sdg1

/dev/sdh1

/dev/sdi1

/dev/md3

  1. YaSTで、RAIDで使用したいデバイス(/dev/sdf1/dev/sdg1/dev/sdh1/dev/sdi1など)に0xFD Linux RAIDパーティションを作成します。

  2. 端末コンソールを開いて、rootユーザまたは同等の権限で、ログインします。

  3. RAID 10 コマンドを作成します。コマンドプロンプトで、次のように入力します(すべて同じ行)。

    mdadm --create /dev/md3 --run --level=10 --chunk=4 --raid-devices=4 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1
    
  4. RAID 10デバイス /dev/md3上にReiserファイルシステムを作成します。コマンドプロンプトで、次のように入力します

    mkfs.reiserfs /dev/md3
    
  5. /etc/mdadm.confファイルを編集して、コンポーネントデバイスとRAIDデバイス/dev/md3のエントリを追加します。次に例を示します。

    DEVICE /dev/md3
    
  6. /etc/fstabファイルを編集して、RAID 10デバイス /dev/md3のエントリを追加します。

  7. サーバを再起動します。

    RAID 10デバイスが/raid10にマウントされます。