RAID 4
「RAID 4」は「RAID 0」のようにデータを分散して物理ボリュームに保存し、さらにパリティーによる冗長性を提供します。ただ「RAID 4」より、同様の特徴を持つ「RAID 5」の方が勝手が良いため、「RAID 4」はあまり使われません。
RAID 4の特徴
「RAID 4」の特徴です。冗長性と信頼性
「RAID 4」は冗長性を提供しているため、物理ボリュームが1つ故障しても復旧可能です。ただし、「RAID 1」ほど信頼性は高くありません。
物理ボリュームの使用効率
「RAID 1」ほど信頼性は高くないですが、HDDの使用効率は高いです。例えば、200GBの物理ボリュームを3台使用して「RAID 4」を構築した場合、400GB(200GB * 2)のHDDとして利用することができます。
残りの200GBは、パリティーが保存されます。
200GBの物理ボリューム10台で「RAID 4」を構築した場合、1800GB(200GB * 9)のHDDとして利用することができます。
残りの200GBは、パリティーが保存されます。
物理ボリュームは最低3つ必要
「RAID 4」を構築するには、最低でも3つ物理ボリュームが必要です。冗長性について
「RAID 4」の冗長性についてです。パリティー
「RAID 4」は冗長性を提供するために、パリティーを利用します。パリティーはデータを復旧するためのデータです。
パリティーは保存するデータから生成されます。
データブロックとパリティーブロック
物理ボリュームには、データとパリティーが保存されます。データとは、ユーザーやアプリが書き込んだデータのことです。
このデータが保存された物理ボリューム上のブロックを、データブロックと表現します。
一方、このデータから生成されたパリティーが保存された物理ボリューム上のブロックを、パリティーブロックと表現します。
パリティーのみからデータを復旧することはできない
パリティーのみからデータを復旧することはできません。ある物理ボリューム上のデータブロックを復旧するには、パリティーブロックとそれに対応したデータブロックが必要です。
物理ボリュームが1つ故障しても復旧可能
冗長性があるので、物理ボリュームが1つ故障しても復旧可能です。データブロックを復旧する場合は、残りのデータブロックとパリティーブロックからデータブロックを復旧します。
パリティーブロックを復旧する場合は、データブロックのデータからパリティーを生成します。
パリティーが保存される物理ボリューム
パリティーは、アレイを構成する物理ボリュームの中で最後の物理ボリュームに保存されます。データを書き込む際、パリティーを保存するために常にパリティー用の物理ボリュームにアクセスが発生します。
パリティー用の物理ボリュームにアクセスが集中するため、パフォーマンスが低下したり、故障率の上昇につながります。
CPUの使用率が向上する
パリティー生成時にパリティーの計算処理が必要になるため、CPUの使用率が上がります。データの復旧時も同様にパリティーの計算処理が必要になります。
RAID 4アレイを作成するコマンドの説明
「mdadm」コマンドの説明です。ショートオプションとロングオプションについて
モードやオプションの記述方法には、「ショートオプション」と「ロングオプション」の2種類があります。どちらを利用しても良いでのですが、ここでは意味が分かりやすい「ロングオプション」を使用します。
コマンドのフォーマット
「mdadm」コマンドのフォーマットは以下になります。mdadm <モード> <論理ボリューム> <オプション> <アレイを構成する物理ボリューム(スペアディスクも含む)>
モード
モードは、「mdadm」の動作モードを指定します。アレイの作成なので、以下のモードを指定します。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-C | --create | --create |
論理ボリューム
論理ボリュームのデバイスファイルを指定します。新規に論理ボリュームを作成するので、既存の論理ボリュームのデバイスファイルと重複しないデバイスファイルを指定します。
デバイスファイルのフォーマット
以下のフォーマットで指定すると良いでしょう。/dev/md/アレイの名称
記述例
- /dev/md/MyArray
- /dev/md/Data
- /dev/md/Backup
必須オプション
指定するオプションには、必須のオプションと任意のオプションがあります。必須オプションは必ず指定してください。
1.アレイの種類の指定
「RAID 4」のアレイを作成するので、以下の指定を行います。ショートオプション | ロングオプション | 記述例 |
---|---|---|
-l | --level | --level=raid4 |
2.アレイを構成する物理ボリューム数の指定
アレイを構成する物理ボリューム数を指定します。3つの物理ボリュームでアレイを構築するなら、「3」を指定します。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-n | --raid-devices | --raid-devices=3 |
任意のオプション(推奨)
任意のオプションは指定しなくてもよいですが、指定を検討したほうが良いオプションを紹介します。アレイの使い勝手に影響するオプションです。
1.チャンクサイズの指定
「チャンクサイズ」の指定を行います。チャンクは、データの分割単位です。
指定するチャンクサイズの単位は、「KiB」です。
このオプションを省略した場合は、「512」が指定されたものと見なされます。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-c | --chunk | --chunk=128 |
単位の指定
単位の指定を省略した場合は、上記でも記述した通り「KiB」が単位になります。以下のように単位を指定することも可能です。
単位の指定 | 単位 | 記述例 | 記述例の説明 |
---|---|---|---|
単位の指定なし(省略) | KiB | --chunk=32 | チャンクサイズに「32KiB」を指定する |
M | MiB | --chunk=1M | チャンクサイズに「1MiB」を指定する |
G | GiB | --chunk=1G | チャンクサイズに「1GiB」を指定する |
2.スペアディスク数の指定
「スペアディスク」数の指定を行います。「スペアディスク」となる物理ボリュームを1つ設定するなら、「1」を指定します。
このオプションを省略した場合は、「スペアディスク」なしになります。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-x | --spare-devices | --spare-devices=1 |
3.物理ボリュームのサイズの指定
各物理ボリュームでアレイに使用するサイズを指定します。指定するサイズの単位は、「KiB」です。
このオプションを省略した場合は、アレイを構成する物理ボリュームの中で最も容量の小さいサイズを使用します。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-z | --size | --size=32 |
単位の指定
単位の指定を省略した場合は、上記でも記述した通り「KiB」が単位になります。以下のように単位を指定することも可能です。
単位の指定 | 単位 | 記述例 | 記述例の説明 |
---|---|---|---|
単位の指定なし(省略) | KiB | --size=32 | 物理ボリュームのサイズに「32KiB」を指定する |
M | MiB | --size=1M | 物理ボリュームのサイズに「1MiB」を指定する |
G | GiB | --size=1G | 物理ボリュームのサイズに「1GiB」を指定する |
任意のオプション(ライトインテントビットマップ)
「ライトインテントビットマップ」に関するオプションです。1.ライトインテントビットマップの設定
ライトインテントビットマップの設定を行います。このオプションを省略した場合は、ライトインテントビットマップは無効です。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-b | --bitmap | --bitmap=internal |
内部ビットマップを有効にする
「internal」を指定すると、内部ビットマップが有効になります。外部ビットマップを有効にする
ファイルを指定すると、外部ビットマップが有効になります。ファイルはパス付きで指定してください。
最低でもパス区切り記号である「/」が一つ含まれている必要があります。
また、指定されたファイルがすでに存在していないようにしてください。
2.ビットマップのチャンクサイズを指定する
「ライトインテントビットマップ」のチャンクサイズを指定します。このオプションを省略した場合は、自動的にチャンクサイズが決定されます。
指定するサイズの単位は、「KiB」です。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
なし | --bitmap-chunk | --bitmap-chunk=65536 |
単位の指定
単位の指定を省略した場合は、上記でも記述した通り「KiB」が単位になります。以下のように単位を指定することも可能です。
単位の指定 | 単位 | 記述例 | 記述例の説明 |
---|---|---|---|
単位の指定なし(省略) | KiB | --bitmap-chunk=32 | チャンクサイズに「32KiB」を指定する |
M | MiB | --bitmap-chunk=1M | チャンクサイズに「1MiB」を指定する |
G | GiB | --bitmap-chunk=1G | チャンクサイズに「1GiB」を指定する |
任意のオプション
指定しなくても良いオプションです。1.アレイ名の指定
「アレイの名称」を指定します。このオプションを省略した場合、論理ボリュームのデバイスファイル名からアレイの名称が生成されます。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-N | --name | --name=RAID4Array |
2.追加情報の表示
「mdadm」実行時に、追加情報を表示します。ショートオプション | ロングオプション | 記述例 |
---|---|---|
-v | --verbose | --verbose |
3.メタデータフォーマットの指定
「メタデータ」(スーパーブロック)のフォーマットを指定します。このオプションを省略した場合、デフォルト値が指定されたものとして扱われます。
Ubuntu 13.10では、デフォルト値は「1.2」です。
ショートオプション | ロングオプション | 記述例 |
---|---|---|
-e | --metadata | --metadata=default |
指定できる値は以下のとおりです。
メタデータのバージョン | 記述例 |
---|---|
0.90 | --metadata=0.90 |
1.0 | --metadata=1.0 |
1.1 | --metadata=1.1 |
1.2 | --metadata=1.2 |
デフォルト値 | --metadata=default |
4.ホームホストの指定
アレイの「ホームホスト」を指定します。ショートオプション | ロングオプション | 記述例 |
---|---|---|
なし | --homehost | --homehost=myHost |
アレイを構成する物理ボリューム
アレイを構成する物理ボリュームを指定します。各物理ボリュームは、スペースで区切ります。
/dev/sdd3 /dev/sde3 /dev/sdf3
glob
物理ボリュームの指定は、globに対応しています。例えば上記の記述は、以下のように記述することもできます。
/dev/sd[d-f]3
/dev/sd[def]3
スペアディスクについて
オプションで「スペアディスク」数を指定している場合は、後ろに記述した物理ボリュームが「スペアディスク」になります。例えば以下のコマンドでは、赤字の箇所が「スペアディスク」になります。
sudo mdadm --create /dev/md/RAID4Array --level=raid4 --raid-devices=3 --spare-devices=2 --verbose /dev/sdd3 /dev/sde3 /dev/sdf3 /dev/sdg3 /dev/sdh3
従って「スペアディスク」を指定する場合は、物理ボリュームの記述順に注意してください。