9 ソフトウェアRAID 10デバイスの作成 #
本項では、ネストしたコンプレックスRAID 10デバイスの設定方法について説明します。RAID 10デバイスは、ネストしたRAID 1 (ミラーリング)アレイとRAID 0 (ストライピング)アレイで構成されます。ネストしたRAIDは、ストライピングミラー(RAID 1+0)またはミラーリングされたストライプ(RAID 0+1)のいずれかとして設定できます。コンプレックスRAID 10のセットアップは、ミラーとストライプを組み合わせ、より高いデータ冗長性レベルをサポートすることによってデータのセキュリティを強化します。
9.1 mdadm
によるネストしたRAID 10デバイスの作成 #
ネストしたRAIDデバイスは、物理ディスクを使用する代わりに、その基本エレメントとして別のRAIDアレイを使用するRAIDアレイで構成されます。この構成の目的は、RAIDのパフォーマンスと耐障害性を向上することです。ネストしたRAIDレベルの設定はYaSTではサポートされていませんが、mdadm
コマンドラインツールを使用して実行できます。
ネストの順序に基づいて、2つの異なるネストしたRAIDを設定できます。このマニュアルでは、次の用語を使用します。
RAID 1+0: まず、RAID 1(ミラー)アレイが構築され、次に、それらのアレイが組み合わされてRAID 0 (ストライプ)アレイを構成します。
RAID 0+1: まず、RAID 0(ストライプ)アレイが構築され、次に、それらのアレイが組み合わされてRAID 1(ミラー)アレイを構成します。
次の表では、RAID 10ネスティングの欠点と利点を、1+0対0+1という形式で説明します。使用するストレージオブジェクトは、それぞれが専用のI/Oをもつ別々のディスクに常駐すると想定しています。
RAIDレベル |
説明 |
パフォーマンスと耐障害性 |
---|---|---|
10 (1+0) |
RAID 1(ミラー)アレイで構築されたRAID (ストライプ) |
RAID 1+0は、高レベルのI/Oパフォーマンス、データ冗長性、およびディスク耐障害性を提供します。RAIDの各メンバーデバイスは個々にミラーリングされるので、エラーになったディスクのミラー先が異なる限り、複数ディスクの障害を許容し、データを使用することができます。 オプションとして、ベースをなすミラーリングされたアレイごとにスペアを設定したり、すべてのミラーに対するスペアグループに対応するスペアを設定できます。 |
10 (0+1) |
RAID 0(ストライプ)アレイで構築されたRAID 1(ミラー) |
RAID 0+1は、高レベルのI/Oパフォーマンスとデータ冗長性を提供しますが、耐障害性が1+0より若干低くなります。ミラーの一方のサイドで複数のディスクがエラーになると、もう一方のミラーが使用可能になります。ただし、ミラーの両サイドで同時にディスクが失われると、すべてのデータが喪失します。 このソリューションは1+0ソリューションより耐障害性が低いですが、別のサイトで保守を実行したり、ミラーを保持する必要がある場合、ミラーのサイド全体をオフラインにしても、完全に機能するストレージデバイスを保持することができます。また、2つのサイト間の接続が失われた場合は、どちらかのサイトがもう一方のサイトから独立して稼動します。ミラーリングされたセグメントをストライプする場合はこうなりません。ミラーが低レベルで管理されているからです。 デバイスがエラーになると、RAID 0には耐障害性がないので、そのサイドのミラーがエラーになります。新しいRAID 0を作成して、エラーになったサイドに置き換え、次に、ミラーを再同期してください。 |
9.1.1 mdadmによるネストしたRAID 10 (1+0)デバイスの作成 #
ネストしたRAID 1+0は、2つ以上のRAID 1(ミラー)デバイスを作成し、それらのRAID 1デバイスをRAID 0のコンポーネントデバイスとして使用することで構築します。
デバイスに対する複数の接続を管理する必要がある場合は、マルチパスI/Oを設定してから、RAIDデバイスを設定する必要があります。詳細については、「第18章 「デバイスのマルチパスI/Oの管理」」を参照してください。
本項の手順では、次の表に示すデバイス名を使用します。それらのデバイス名は、必ず、ご使用のデバイスの名前で変更してください。
rawデバイス |
RAID 1(ミラー) |
RAID 1+0(ストライピングミラー) | ||
---|---|---|---|---|
|
|
| ||
|
|
端末コンソールを開きます。
必要に応じて、partedなどのディスクパーティショナを使用して、同じサイズの0xFD Linux RAIDパーティションを4つ作成します。
1デバイスごとに2つの異なるデバイスを使用して、2つのソフトウェアRAID 1デバイスを作成します。コマンドプロンプトで、次の2つのコマンドを入力します。
>
sudo
mdadm --create /dev/md0 --run --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 sudo mdadm --create /dev/md1 --run --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1ネストしたRAID 1+0デバイスを作成します。コマンドプロンプトで、前の手順で作成したソフトウェアRAID 1デバイスを使用して、次のコマンドを入力します。
>
sudo
mdadm --create /dev/md2 --run --level=0 --chunk=64 \ --raid-devices=2 /dev/md0 /dev/md1デフォルトのチャンクサイズは 64KBです。
RAID 1+0デバイス
/dev/md2
上でファイルシステム(XFSファイルシステムなど)を作成します。>
sudo
mkfs.xfs /dev/md2これとは別のファイルシステムを使用するには、コマンドを変更します。
/etc/mdadm.conf
ファイルを編集するか、ファイルがまだ存在しない場合は作成します(たとえば、sudo vi /etc/mdadm.conf
を実行します)。次の行を追加します(ファイルが既に存在する場合、最初の行は記述済みの可能性があります)。DEVICE containers partitions ARRAY /dev/md0 UUID=UUID ARRAY /dev/md1 UUID=UUID ARRAY /dev/md2 UUID=UUID
各デバイスのUUIDは次のコマンドで取得できます。
>
sudo
mdadm -D /dev/DEVICE | grep UUID/etc/fstab
ファイルを編集して、RAID 1+0デバイス/dev/md2
のエントリを追加します。次の例は、XFSファイルシステム、およびマウントポイントとして/data
を使用するRAIDデバイスのエントリを示しています。/dev/md2 /data xfs defaults 1 2
RAIDデバイスをマウントします。
>
sudo
mount /data
9.1.2 mdadmによるネストしたRAID 10 (0+1)デバイスの作成 #
ネストしたRAID 0+1は、2個から4個のRAID 0(ストライプ)デバイスで構築され、それらのRAID 0デバイスをミラーリングしてRAID 1のコンポーネントデバイスとします。
デバイスに対する複数の接続を管理する必要がある場合は、マルチパスI/Oを設定してから、RAIDデバイスを設定する必要があります。詳細については、「第18章 「デバイスのマルチパスI/Oの管理」」を参照してください。
この構成では、RAID 0がデバイスの喪失に耐えられないので、ベースのRAID 0デバイスにスペアデバイスを指定できません。デバイスがミラーの1つのサイドでエラーになった場合は、置き換え用のRAID 0デバイスを作成して、ミラーに追加します。
本項の手順では、次の表に示すデバイス名を使用します。それらのデバイス名は、必ず、ご使用のデバイスの名前で変更してください。
rawデバイス |
RAID 0 (ストライプ) |
RAID 0+1 (ミラー化ストライピング) | ||
---|---|---|---|---|
|
|
| ||
|
|
端末コンソールを開きます。
必要に応じて、partedなどのディスクパーティショナを使用して、同じサイズの0xFD Linux RAIDパーティションを4つ作成します。
RAID 0デバイスごとに2つの異なるデバイスを使用して、2つのソフトウェアRAID 0デバイスを作成します。コマンドプロンプトで、次の2つのコマンドを入力します。
>
sudo
mdadm --create /dev/md0 --run --level=0 --chunk=64 \ --raid-devices=2 /dev/sdb1 /dev/sdc1 sudo mdadm --create /dev/md1 --run --level=0 --chunk=64 \ --raid-devices=2 /dev/sdd1 /dev/sde1デフォルトのチャンクサイズは 64KBです。
ネストしたRAID 0+1デバイスの作成コマンドプロンプトで、前の手順で作成したソフトウェアRAID 0デバイスを使用して、次のコマンドを入力します。
>
sudo
mdadm --create /dev/md2 --run --level=1 --raid-devices=2 /dev/md0 /dev/md1RAID 1+0デバイス
/dev/md2
上でファイルシステム(XFSファイルシステムなど)を作成します。>
sudo
mkfs.xfs /dev/md2これとは別のファイルシステムを使用するには、コマンドを変更します。
/etc/mdadm.conf
ファイルを編集するか、ファイルがまだ存在しない場合は作成します(たとえば、sudo vi /etc/mdadm.conf
を実行します)。次の行を追加します(ここでも、ファイルが既に存在する場合、最初の行は記述済みの可能性があります)。DEVICE containers partitions ARRAY /dev/md0 UUID=UUID ARRAY /dev/md1 UUID=UUID ARRAY /dev/md2 UUID=UUID
各デバイスのUUIDは次のコマンドで取得できます。
>
sudo
mdadm -D /dev/DEVICE | grep UUID/etc/fstab
ファイルを編集して、RAID 1+0デバイス/dev/md2
のエントリを追加します。次の例は、XFSファイルシステム、およびマウントポイントとして/data
を使用するRAIDデバイスのエントリを示しています。/dev/md2 /data xfs defaults 1 2
RAIDデバイスをマウントします。
>
sudo
mount /data
9.2 コンプレックスRAID 10の作成 #
YaST(およびmdadm
と--level=10
オプション)では、RAID 0(ストライピング)およびRAID 1(ミラーリング)の両方の機能を組み合わせた単一のコンプレックスソフトウェアRAID 10デバイスが作成されます。すべてのデータブロックの複数のコピーが、ストライピングの規則に従って、複数のドライブ上に配置されます。コンポーネントデバイスは、すべて同じサイズにする必要があります。
コンプレックスRAIDは、ネストしたRAID 10 (1+0)と目的は同じですが、次の点で異なります。
機能 |
コンプレックスRAID 10 |
ネストしたRAID 10 (1+0) |
---|---|---|
デバイス数 |
偶数個または奇数個のコンポーネントデバイス |
偶数個のコンポーネントデバイス |
コンポーネントデバイス |
単一のRAIDデバイスとして管理されます。 |
ネストしたRAIDデバイスとして管理されます。 |
ストライピング |
ストライピングは、コンポーネントデバイス上にnearレイアウトまたはfarレイアウトを生じます。 farレイアウトでは、RAID 1ペアの数でなく、ドライブ数で増減するシーケンシャルな読み込みスループットを提供します。 |
ストライピングは、連続的に、すべてのコンポーネントデバイスをまたぎます。 |
データの複数コピー |
2からアレイ内のデバイス数まで |
ミラーリングされたセグメントごとにコピー |
ホットスペアデバイス |
単一スペアですべてのコンポーネントデバイスに対応できます。 |
ベースをなすミラーリングされたアレイごとにスペアを設定したり、すべてのミラーに対応するスペアグループに対するスペアを設定できます。 |
9.2.1 コンプレックスRAID 10のデバイスおよびレプリカの数 #
コンプレックスRAID 10アレイの設定時に、データブロックごとに必要なレプリカ数を指定する必要があります。デフォルトのレプリカ数は2ですが、2からアレイ内のデバイス数まで可能です。
少なくとも、指定のレプリカ数と同数のコンポーネントデバイスを使用する必要があります。ただし、RAID 10アレイのコンポーネントデバイス数は各データブロックのレプリカ数の倍数である必要はありません。有効なストレージサイズは、デバイス数をレプリカ数で割った数です。
たとえば、5個のコンポーネントデバイスで作成したアレイに2つのレプリカを指定した場合は、各ブロックのコピーが2つの異なるデバイスに保存されます。したがって、すべてのデータの1コピーの有効なストレージサイズは、5/2(つまり、コンポーネントデバイスのサイズの2.5倍)となります。
9.2.2 レイアウト #
コンプレックスRAID 10のセットアップでは、ディスクにデータブロックを配置する方法を定義するレイアウトが3つサポートされています。利用可能なレイアウトは、near (デフォルト)、far、およびoffsetです。各レイアウトはパフォーマンス特性が異なるため、ワークロードに適したレイアウトを選択することが重要です。
9.2.2.1 nearレイアウト #
nearレイアウトでは、異なるコンポーネントデバイス上で、データブロックのコピーが互いに接近してストライプされます。つまり、あるデータブロックの複数のコピーが異なるデバイス内で同様にオフセットされます。nearは、RAID 10のデフォルトレイアウトです。たとえば、奇数個のコンポーネントデバイスとデータの2コピーを使用する場合は、一部のコピーが、1チャンク分、デバイス内を前進します。
コンプレックス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
9.2.2.2 farレイアウト #
farレイアウトは、すべてのドライブの前半部分にデータをストライプし、次に、2つ目のデータコピーをすべてのドライブの後半部分にストライプして、ブロックのすべてのコピーが異なるドライブに配置されるようにします。値の2つ目のセットは、コンポーネントドライブの中ほどから開始します。
farレイアウトでは、コンプレックスRAID 10の読み込みパフォーマンスは、すべてのドライブを使用したRAID 0と同様ですが、書き込みパフォーマンスは、ドライブヘッドのシーク回数が増えるので、RAID 0よりかなり遅くなります。このレイアウトは、 読み込み専用ファイルサーバなどの、読み込み集約型操作に最適です。
RAID 10の書き込み速度は、nearレイアウトを使用しているRAID 1やRAID 10などの他のミラーリングRAIDの種類と同等です。これは、ファイルシステムのエレベータが生の書き込みよりも効率のよい書き込みのスケジュールを行うためです。RAID 10をfarレイアウトで使用する方法は、ミラーリングによる書き込みアプリケーションに適しています。
偶数個のディスクと2つのレプリカを使用したfarレイアウト
sda1 sdb1 sdc1 sde1 0 1 2 3 4 5 6 7 . . . 3 0 1 2 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
9.2.2.3 offsetレイアウト #
offsetレイアウトでは、あるチャンクの複数のコピーが連続したドライブ上で連続したオフセットにレイアウトされるよう、ストライプが複製されます。実際は、それぞれのストライプが複製され、コピーが1つのデバイスでオフセットされます。これにより、適度な大きさのチャンクサイズを使用している場合は、farレイアウトと同様の読み込み特性が得られますが、書き込みのシーク回数は少なくなります。
偶数個のディスクと2つのレプリカを使用したoffsetレイアウト
sda1 sdb1 sdc1 sde1 0 1 2 3 3 0 1 2 4 5 6 7 7 4 5 6 8 9 10 11 11 8 9 10
奇数個のディスクと2つのレプリカを使用したoffsetレイアウト
sda1 sdb1 sdc1 sde1 sdf1 0 1 2 3 4 4 0 1 2 3 5 6 7 8 9 9 5 6 7 8 10 11 12 13 14 14 10 11 12 13
9.2.2.4 YaSTおよびmdadmによるレプリカ数とレイアウトの指定 #
レプリカ数とレイアウトは、YaSTでは--layout
パラメータで指定します。使用できる値は次のとおりです。
nN
nearレイアウトの場合、
n
を指定し、Nをレプリカ数で置き換えます。レイアウトおよびレプリカ数を設定しない場合、デフォルトでn2
が使用されます。fN
farレイアウトの場合、
f
を指定し、Nをレプリカ数で置き換えます。oN
offsetレイアウトの場合、
o
を指定し、Nをレプリカ数で置き換えます。
YaSTでは、
パラメータに設定可能なすべての値が自動的に表示されます。9.2.3 YaSTパーティショナによるコンプレックスRAID 10の作成 #
YaSTを起動してパーティショナを開きます。
必要に応じて、RAID設定で使用するパーティションを作成します。パーティションをフォーマットしたり、パーティションタイプを10.1項 「を参照してください。 の使用」
に設定したりしないでください。既存のパーティションを使用する場合、パーティションタイプを変更する必要はありません。YaSTによって自動的に変更されます。詳細については、RAID 10の場合は、少なくとも4つのパーティションが必要です。ハードディスクのどれかに障害が発生した場合にデータを失うリスクを減らすため、異なるハードディスクに保存されているパーティションを使用することを強くお勧めします。各セグメントは最小サイズのパーティションと同量のスペースしか提供できないので、同じサイズのパーティションだけを使用するようお勧めします。
左のパネルで、
を選択します。既存のRAID設定のリストが右のパネルに表示されます。
[RAID]ページの左下で、
をクリックします。オプションで、
でRAIDに名前を割り当てることができます。この名前は、/dev/md/NAME
として利用可能になります。詳細については、7.2.1項 「RAIDの名前」を参照してください。(オプション)
をクリックして、RAIDアレイ内でのディスクの好みの順番を指定します。RAID 10など、追加したディスクの順序が重要なRAIDタイプでは、デバイスの使用順序を指定できます。これにより、アレイの半数を特定のディスクサブシステムに配置し、もう半数を別のディスクサブシステムに配置できます。たとえば、1つのディスクサブシステムに障害が発生した場合、システムは2番目のディスクサブシステムから稼働し続けます。
各ディスクを順番に選択して、
ボタンのいずれかをクリックします。ここで、Xは、そのディスクに割り当てる文字です。用意されているクラスはA、B、C、DおよびEですが、多くの場合必要なクラスはそれより少なくなります(たとえばAとBのみ)。このようにして、すべての利用可能なRAIDディスクを割り当てます。複数のデバイスを選択するには、CtrlキーまたはShiftキーを押します。選択したデバイスを右クリックして、コンテキストメニューから適切なクラスを選択することもできます。
次のソートオプションのいずれかを選択して、デバイスの順序を指定します。
クラスAのすべてのデバイスを、クラスBのすべてのデバイスより前に、というように並べます。例: :
AABBCC
。クラスAの最初のデバイス、次にクラスBの最初のデバイス、次にデバイスが割り当てられたすべての後続のクラスの順に、デバイスを並べます。次にクラスAの2番目のデバイス、クラスBの2番目のデバイス、というように続きます。クラスを持たないデバイスはすべて、デバイスリストの最後に並べられます。たとえば、 :
ABCABC
のようになります。Pattern File: それぞれが正規表現とクラス名である、複数の行を含む既存のファイルを選択します(
"sda.* A"
).その正規表現に合致するすべてのデバイスが、その行に指定されたクラスに割り当てられます。正規表現は、カーネル名(/dev/sda1
)、udevパス名(/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0-part1
)、次にudev ID (/dev/disk/by-id/ata-ST3500418AS_9VMN8X8L-part1
)に対して照合されます。デバイスの名前が、2つ以上の正規表現に合致する場合は、最初に合致したものでクラスが決定されます。ダイアログの下で、
をクリックして、順番を確定します。
RAID 10の場合、パリティオプションは、n (near)、f (far)、およびo (offset)です。数字は、必要となる各データブロックのレプリカの数を示します。2がデフォルトの設定です。詳細については、「9.2.2項 「レイアウト」」を参照してください。
ファイルシステムとマウントオプションをRAIDデバイスに追加して、
をクリックします。変更する内容を確認して、
をクリックすると、RAIDが作成されます。
9.2.4 mdadmによるコンプレックスRAID 10の作成 #
本項の手順では、次の表に示すデバイス名を使用します。それらのデバイス名は、必ず、ご使用のデバイスの名前で変更してください。
rawデバイス |
RAID 10 |
---|---|
|
|
端末コンソールを開きます。
必要に応じて、partedなどのディスクパーティショナを使用して、同じサイズの0xFD Linux RAIDパーティションを少なくとも4つ作成します。
次のコマンドを入力してRAID 10を作成します。
>
sudo
mdadm --create /dev/md3 --run --level=10 --chunk=32 --raid-devices=4 \ /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1--raid-devices
の値とパーティションのリストは、ご使用のセットアップに応じて調整してください。ここに示すコマンドでは、nearレイアウトを使用し、2つのレプリカを持つアレイが作成されます。これら2つの値を変更するには、
--layout
を使用します。9.2.2.4項 「YaSTおよびmdadmによるレプリカ数とレイアウトの指定」を参照してください。RAID 10デバイス
/dev/md3
上でファイルシステム(XFSファイルシステムなど)を作成します。>
sudo
mkfs.xfs /dev/md3これとは別のファイルシステムを使用するには、コマンドを変更します。
/etc/mdadm.conf
ファイルを編集するか、ファイルがまだ存在しない場合は作成します(たとえば、sudo vi /etc/mdadm.conf
を実行します)。次の行を追加します(ここでも、ファイルが既に存在する場合、最初の行は記述済みの可能性があります)。DEVICE containers partitions ARRAY /dev/md3 UUID=UUID
デバイスのUUIDは次のコマンドで取得できます。
>
sudo
mdadm -D /dev/md3 | grep UUID/etc/fstab
ファイルを編集して、RAID 10デバイス/dev/md3
のエントリを追加します。次の例は、XFSファイルシステム、およびマウントポイントとして/data
を使用するRAIDデバイスのエントリを示しています。/dev/md3 /data xfs defaults 1 2
RAIDデバイスをマウントします。
>
sudo
mount /data