このページでは自宅サーバーに、RAID構成パーティションを設置するためのmdadmによる設定について初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
OSにRAIDデバイスを追加

RAIDを新たに作成する

ハードディスクの追加

RAID構築モデルについて

ハードディスクの領域確保

mdadmによるRAIDの作成

RAIDデバイスのマウント

ハードディスクが壊れたら

mdadmによるRAIDの修復

mdadmによるディスクの交換

mdadmによるRAIDの解除

Ubuntu 10.04 LTS デスクトップ版のススメへようこそ

mdadmコマンドによるRAIDデバイスの構築

"mdadm" RAID デバイスを作成するときは、 "raidtools" raidtoolsについて のときのように予め設定ファイルなどにRAIDを記述しておく必要はありません。通常は "mdadm" コマンド に必要なオプションスイッチをつけて実行するだけです mdadmについて

ただし、予め記述しておくべき設定の内容をすべて一つのコマンドラインで記述しなければなりませんから、 "raidtools" よりも手軽に操作できるということでもありません。

むしろ、 "/etc/raidtab" が一種の フールプルーフ フールプルーフについて になっている "raidtools" と比べると、 "mdadm" コマンド操作をミスしてもそのまま実行されてしまう可能性が高いといえます。

従って、 "mdadm" でRAIDデバイスを操作するときは書式やパーティション名、デバイス名を丁寧に確認しながら慎重に行うように心がけてください。

ところで、RAIDデバイスを新規に作成する場合は ユニーク なデバイス名として "/dev/md?" を設定する必要があります。

ところがもしも ホスト機 上に ソフトウェア RAIDが既に存在している場合は、RAIDデバイスを示す "/dev/md?" がいくつか使用されているはずですから、それ以外のRAIDデバイス名を指定しなければなりませんので注意してください。

使用されているデバイス名がよくわからないときは、 "/proc/partitions" の内容を表示して、既存のパーティションを一覧してチェックしてみてください。

[root@web1 ~]# cat /proc/partitions Enter
major minor #blocks name

  3   0  19931184 hda
  3   1   120456 hda1
  3   2  2096482 hda2
  3   3  17711662 hda3
  3  64 156290904 hdb
  3  65  58605088 hdb1
  3  66  97225380 hdb2
 22   0 156290904 hdc
 22   1  58605088 hdc1
 22   2  97225380 hdc2
 22  64 156290904 hdd
 22  65  58605088 hdd1
 22  66  97225380 hdd2
[root@web1 ~]#

もしも既にRAIDデバイスが存在する場合には、

  ?   ?  [確保容量] md1
  ?   ?  [確保容量] md0

のような記述がみつかるはずですので、これらのデバイス名を避けて設定するようにします。

さて、今回は既存のRAIDデバイスがありませんから、新規に作成するRAIDデバイスを

"/dev/hdb1" "/dev/hdc1" から構成され、スペアパーティションとして "/dev/hdd1" を有する RAIDレベル1 "/dev/md0"

"/dev/hdb2" "/dev/hdc2" "/dev/hdd2" から構成される RAIDレベル5 "/dev/md1"

の二つとします。

それぞれを構築するためのコマンドは次のようになります。

コマンドは "root" アカウント から 実行します。

[root@web1 ~]# mdadm -C /dev/md0 -l1 -n2 -x1 /dev/hdb1 /dev/hdc1
/dev/hdd1
Enter
mdadm: array /dev/md0 started.
[root@web1 ~]# mdadm -C /dev/md1 -l5 -n3 /dev/hdb2 /dev/hdc2
/dev/hdd2
Enter
mdadm: array /dev/md1 started.
[root@web1 ~]#

RAIDの構成に用いられる各パーティションに既にファイルシステムが存在している場合、あるいはスーパーブロック スーパーブロックについて が残っている場合には、コマンドを実行したときに確認のメッセージが出て、 "Continue creating array?" と問いかけてきますから、続行してよれれば "y Enter " とタイプします。

Continue creating array? yEnter

以下、オプションスイッチについて説明します。

LinuxのRAIDの解説書
オススメです

最初の "-C" "mdadm" Createモード 、すなわちRAID作成モードで実行させるという指定です。他にもいくつかのモードがありますが、ここでは新しいRAIDデバイスを作成するのでこのモードを指定します。

次に作成するRAIDデバイス名 "/dev/md?" を記述し、続いてRAIDデバイスの作成条件を列挙します。

"-l" はRAIDレベルの指定です。スペースを空けずにRAIDレベルを数字で記述します。以後、数字はスペースを空けずに記述します。

"-n" はRAID構成に用いるパーティション数の指定です。スペアパーティションは含めずに指定します。

"-x" はスペアパーティションの数の指定です。

そして最後にRAID構築に用いるパーティションをスペースで区切って順に記述します。 "-x" でスペアパーティションの使用を指示した場合は、後に記述したものがスペアパーティションとみなされます。

作成するRAIDパーティションの容量やホスト機の性能にもよりますが、今回のケースくらいの規模なら1〜3時間程度でRAIDの構築は終了します。

関連セクションへ 関連セクション・ OSをRAID構成でインストール

このページの先頭へ↑

RAID構築の状況チェックなど

実際にRAIDデバイスの構築が開始されると、 プロンプト 上には次のようなメッセージが表示されます。

これを確認したらRAIDデバイスの状況表示仮想ファイル "/proc/mdstat" cat コマンドなどで表示させてみて、構築の進行状況を確認してみましょう。

[root@web1 ~]# mdadm -C /dev/md0 -l1 -n2 -x1 /dev/hdb1 /dev/hdc1
/dev/hdd1
Enter
mdadm: array /dev/md0 started.
[root@web1 ~]# mdadm -C /dev/md1 -l5 -n3 /dev/hdb2 /dev/hdc2
/dev/hdd2
Enter
mdadm: array /dev/md1 started.
[root@web1 ~]# cat /proc/mdstatEnter
Personalities : [raid1] [raid5]
md0 : active raid1 hdd1[2] hdc1[1] hdb1[0]
   58604992 blocks [2/2] [UU]
   [>....................] resync = 3.6% (2124672/58604992) finish=28.1min speed=33392K/sec
md1 : active raid5 hdd2[2] hdc2[1] hdb2[0]
   194450560 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
    resync=DELAYED
unused devices: <none>
[root@web1 ~]#

なお、 "mdadm" によるRAIDデバイスの構築はバックグラウンド の プロセス で順々に行われますので、 "/dev/md0" の構築中でも "/dev/md1" を構築するコマンドを実行しておいて構いません。 "/dev/md0" の構築が終了すると同時に "/dev/md1" の構築が自動的に開始します。

"/proc/mdstat" が次のようになればRAIDデバイスの構築は終了です。

[root@web1 ~]# cat /proc/mdstatEnter
Personalities : [raid1] [raid5]
md0 : active raid1 hdd1[2] hdc1[1] hdb1[0]
   58604992 blocks [2/2] [UU]

md1 : active raid5 hdd2[2] hdc2[1] hdb2[0]
   194450560 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
[root@web1 ~]#

この "/proc/mdstat" は動作チェックだけではなく、故障したハードディスクを交換してRAIDを再構築するときにとても重要な情報源となります。

印刷しておくと、よりベターです。

そこでRAIDを構築して稼動を始めたら、この正常に稼動している状態の "/proc/mdstat" をファイルとして保存しておくと後々役に立ちます。

[root@web1 ~]# cp /proc/mdstat .Enter cpコマンドについて  ホームディレクトリにコピー
[root@web1 ~]#

これで正常稼動時の "/proc/mdstat" "/root/mdstat" として保存されました。

関連セクションへ 関連セクション・ OSをRAID構成でインストール

NEC「得選街」
このページの先頭へ↑

設定ファイル"/etc/mdadm.conf"を作成する

"mdadm" は基本的に設定ファイルを必要としない アプリケーション ですが、必要なときは設定ファイルのパラメータを参照してRAIDの再構築を行うことができるようになっています。

そこで安全な運用のために "mdadm" の設定ファイル "/etc/mdadm.conf" を作成しておきましょう。

WBEL3,CentOS3の場合

WBEL3 CentOS3 では最初から "/etc/mdadm.conf" が存在します。

ただし nanoエディタ などで開いてみると解りますが、その内容はほとんどすべて先頭が "#" で無効化された、だたの 記述方法の解説 になっています。

WBEL3やCentOS3の場合 OS インストール をRAID構成でスタートしても "raidtools" が使用されますので WBEL3とCentOS3のraidtoolsについて 、この "/etc/mdadm.conf" には何も追加記述はされていないはずです。

さて、この設定ファイルの中で有効になっている設定は次の一行だけです。

MAILADDR root

これは、 RAID を構成する パーティション に異常が発生したときのレポートメールの宛先の設定ですから、これはこのままにしておきます。

更に次の行を追加してください。

DEVICE partitions

これはRAID構成に用いるパーティションを記述しておく ディレクティブ なので、今回のモデルケースでは本来、

DEVICE /dev/hdb1 /dev/hdb2 /dev/hdc1 /dev/hdc2 /dev/hdd1 /dev/hdd2

のように記述します。この場合はRAIDを構成するパーティションが変わればその都度書き換えを行わなければなりませんので面倒です。

ところがこれを "DEVICE partitions" と設定しておけば、有効なパーティションをリスト表示する仮想設定ファイル "/proc/partitions" の内容、

[root@web1 root]# cp /proc/partitions Enter
major minor #blocks name

  3   0  19931184 hda
  3   1   120456 hda1
  3   2  2096482 hda2
  3   3  17711662 hda3
  3  64 156290904 hdb
  3  65  58605088 hdb1
  3  66  97225380 hdb2
 22   0 156290904 hdc
 22   1  58605088 hdc1
 22   2  97225380 hdc2
 22  64 156290904 hdd
 22  65  58605088 hdd1
 22  66  97225380 hdd2
  9   1 194450560 md1
  9   0  58604992 md0
[root@web1 root]#

を参照して動作するようになりますので、設定を書き換える必要がないというわけです。

更に、これにRAID構成の詳細情報を追記します。

nanoエディタ が開いていたら閉じて、 "mdadm" コマンドの Detailモード 使って、現在のRAID構成についての詳細を表示させてみましょう。

[root@web1 root]# mdadm -D --scanEnter
ARRAY /dev/md0 level=raid1 num-devices=2 spares=1 UUID=0d00e0b1:6d4f3c77:4fad808d:
9b346c47
ARRAY /dev/md1 level=raid5 num-devices=3 UUID=627b0261:336aac48:92f98b62:a4aeda39
[root@web1 root]#

この出力結果は "/etc/mdadm.conf" 中の記述書式と同じですから、 cat コマンド と出力のリダイレクト 出力のリダイレクトについて を組み合わせ追記します。

追記したら内容を確認しますが、末尾の部分だけ確認できれば良いので tail コマンドで確認しましょう。

"/etc/mdadm.conf" には "mdadm" 既に別の設定が記述されていますので、リダイレクト記号を ">" と間違えないように注意してください。
[root@web1 root]# mdadm -D --scan >> /etc/mdadm.confEnter
[root@web1 root]# tail /etc/mdadm.confEnter ←内容を確認してみます
# When used in --follow (aka --monitor) mode, mdadm needs a
# mail address and/or a program. This can be given with "mailaddr"
# and "program" lines to that monitoring can be started using
#  mdadm --follow --scan & echo $! > /var/run/mdadm
# If the lines are not found, mdadm will exit quietly
MAILADDR root
#PROGRAM /usr/sbin/handle-mdadm-events
DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 spares=1 UUID=0d00e0b1:6d4f3c77:4fad808d:
9b346c47
ARRAY /dev/md1 level=raid5 num-devices=3 UUID=627b0261:336aac48:92f98b62:a4aeda39
[root@web1 root]#

これで設定ファイル "/etc/mdadm.conf" が作成されました。

WBEL4,CentOS4,CentOS5の場合

WBEL4 CentOS4 、CentOS5では、 OS インストール RAID 構成で行った場合に限り、以下のような "/etc/mdadm.conf" が作成されているはずです。

"anaconda" というのはOS のインストールプログラムのことです。
つまりこの/etc/mdadm.confは、OSのインストール作業中にインストールプログラム自身が記述したことを意味しています
# mdadm.conf written out by anaconda
DEVICE partitions
MAILADDR root
[既存のRAIDデバイスの設定]
[既存のRAIDデバイスの設定]
.
.

先に説明したWBEL3やCentOS3のケースと同様に、この場合は "mdadm" コマンドの Detailモード で得られる現在のRAID構成についての内容、

[root@web1 ~]# mdadm -D --scanEnter
ARRAY /dev/md0 level=raid1 num-devices=2 spares=1 UUID=0d00e0b1:6d4f3c77:4fad808d:
9b346c47
ARRAY /dev/md1 level=raid5 num-devices=3 UUID=627b0261:336aac48:92f98b62:a4aeda39
[root@web1 ~]#

を追加すればOKです。

"/etc/mdadm.conf" の既存の設定を消さないように、リダイレクト記号を ">" と間違えないように注意してください。
[root@web1 ~]# mdadm -D --scan >> /etc/mdadm.confEnter
[root@web1 ~]# cat /etc/mdadm.confEnter ←内容を確認してみます
# mdadm.conf written out by anaconda
DEVICE partitions
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 spares=1 UUID=144517fe:4bbb6b61:09e7f7
0f:c1fce14d
ARRAY /dev/md1 level=raid5 num-devices=3 UUID=01fcf089:cfa52e73:15f8568c:e0e8cf63
[root@web1 ~]#

ところがWBEL4やCentOS4、CentOS5のインストールを非RAID構成で行った場合には "/etc/mdadm.conf" は作成されませんので新規に作成する必要があります。

nanoエディタ を開いて記述しても良いのですが、記述する内容は、

DEVICE partitions
MAILADDR root
["mdadm -D --scan"の出力結果]

だけですので、 echo コマンド を使って簡単に作成してしまいましょう。

[root@web1 ~]# echo "DEVICE partitions" > /etc/mdadm.confEnter
[root@web1 ~]# echo "MAILADDR root" >> /etc/mdadm.confEnter
[root@web1 ~]# mdadm -D --scan >> /etc/mdadm.confEnter
[root@web1 ~]# cat /etc/mdadm.confEnter ←内容を確認してみます
DEVICE partitions
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 spares=1 UUID=144517fe:4bbb6b61:09e7f7
0f:c1fce14d
ARRAY /dev/md1 level=raid5 num-devices=3 UUID=01fcf089:cfa52e73:15f8568c:e0e8cf63
[root@web1 ~]#

以上で "/etc/mdadm.conf" の作成の説明は終わりです。

さて、これでRAIDデバイスの構築は終わりましたが、これを実際に LinuxOS でファイルの読み書きを行うには適当な形式で初期化し、ファイルシステムにマウントする必要がありますので、引き続き、 RAIDデバイスのマウント へ進んでください。

関連セクションへ 関連セクション・ OSをRAID構成でインストール

NEC「得選街」
このサイトに対するご意見、ご要望、苦情、泣き言、献上品、資金援助などがございましたら こちら からお寄せください(お返事できなかったらごめんなさい)。もちろん リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。また、本サイトの更新情報をメールで知らせてほしい方は ここ からご登録ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System