#contents

*LinuxソフトウェアRAID [#q0bc9078]
RAIDとは、ハードディスクを複数利用し、データ読み込みの速度、信頼性、冗長性などを向上させる技術であり、一般的にはRAID 0(ストライピング)、RAID 1(ミラーリング)、RAID 5(データ分散+チェックサム)の3種類およびこれらの組み合わせが多い。

*mdadm コマンド [#k33ddcb5]
mdadmコマンドは、Linux上におけるソフトウェアRAIDで非常に使いやすいコマンドであり、設定ファイルを利用しなくとも、コマンドでRAIDを構築することも、逆に設定ファイルを利用して設定することもできる便利なコマンドである。~
-[[公式ページ:http://neil.brown.name/blog/mdadm]]
-[[Linux kernel内 mdadmフォルダ:http://www.kernel.org/pub/linux/utils/raid/mdadm/]]
**Install [#q4904941]
***yum [#lf02744b]
2009年2月現在におけるyumでのバージョンは、2.6.4
 # yum install mdadm
***Source [#l82fadea]
2009年2月現在における安定版の最新は、2.6.8
 # cd /usr/local/src
 # wget http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-2.6.8.tar.gz
 # tar zxvf mdadm-2.6.8.tar.gz
 # cd mdadm-2.6.8
 # make
 # make install
***rpm作成+インストール [#n5ddae80]
上記のソースを展開した後
 # cp mdadm.spec /usr/src/redhat/SPECS
 # cp ../mdadm-2.6.8.tar.gz /usr/src/redhat/SOURCES
 # cd /usr/src/redhat/SPECS
 # emacs mdadm.spec
   Source.....tgz -> tar.gz          <- 拡張子が間違えているので修正
 # rpmbuild -ba mdadm.spec
 # rpm -ivh /usr/src/redhat/RPMS/i386/mdadm-2.6.8-1.i386.rpm
出来上がった、rpmファイルをコピーすれば、他のマシンでも上記 rpmコマンドで簡単にインストールできる。

**mdadmのモード一覧 [#i1f94c7f]
主に8つの操作モードがあり、これらを利用しRAIDの構築、管理、運用を行う。
|モード名|指定方法|説明|
|Assemble|-A,--assemble|すでに作成されているディスクを元に、現在アクティブなディスクアレイを再編成する。 また必要に応じて偽のスーパブロックを使って不完全なアレイを編成することもできる。|
|Build|-B,--build|デバイスごとのスーパブロックをもたない古いタイプのアレイ(レガシーアレイ)を作る。|
|Create|-C,--create|標準のアレイ作成モード。デバイスごとのスーパブロックをもつアレイを作成する|
|Manage|(指定無し)|既にあるアレイについて、スペアデバイスを追加したり欠陥のあるデバイスをアレイから外すなどの管理を行う。1回のコマンドで操作できるのは 1つの md アレイに限る。|
|装置情報表示|-Q,--query|mdデバイスやmdアレイなどの装置的な情報の内容を表示|
|詳細表示|-D,--detail|1つまたは複数mdデバイスの詳細情報の表示|
|スーパーブロックの情報表示|-E,--examine|1 つまたは複数のデバイスの md スーパブロックの内容を表示|
|モニタモード|-F,--follow,--monitor|モニタモードの選択。1 つ以上の md デバイスをモニタし、状態変化を検出して指定したアクションを起こさせる。 このモードは対象となる状態変化をもつ RAID 1,4,5,6 またはマルチパスでのみ意味がある。 RAID 0 や リニア ではスペアデバイスや不良デバイスという概念がないため、モニタする意味がない。|
その他オプション
|ヘルプ|-h,--help|ヘルプメッセージの表示|
|バージョン|-V,--version|バージョンの表示|
|バーボーズ指定|-v,--verbose|より多くの結果情報の表示|
|コンフィグ指定|-c,--config=|コンフィグファイルの指定。指定しないと/etc/mdadm.conf が選択される。ただし引数としてpartitionsという単語が指定されると、ファイルとしてではなく /proc/partitions から得られる情報をもとに、対象となるデバイスのリストを自動的に取得する。 またnone という単語が指定されるとコンフィグファイルは空と見做す (つまり /etc/mdadm.conf が存在してもその内容は読まれない) 。|
[[※mdadmコマンドの日本語翻訳ページ:http://www.ioss.jp/sohodiy/mdadm8-1_5.html]]~
**mdadmコマンドサンプル [#ya4b1ffd]
***RAIDドライブの作成 [#dbbf2cb8]
/dev/md0というデバイス名でRAID 1アレイを/dev/sda1 /dev/sda2 の2台で作成し、/usr/local/srcにマウント。
 # mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[ab]1
 # mkfs -j /dev/md0   <- format
 # mkfs -t ext3 -c -j /dev/md0   <- format
 # mount /dev/md0 /usr/local/src
※ドライブ指定には正規表現の指定が可能。faile diskが出るときには、--forceで強制的に設定する場合がある。
***RAID ディスクの交換 [#f38f5e0f]
壊れた/dev/sdb1 ディスクに不良マークを付与(-f オプション)し、RAIDアレイから削除(-r オプション)したのち、新しい/dev/sdc1 を追加する。
 # mdadm /dev/md0 -f /dev/sdb1 -r /dev/sdb1 -a /dev/sdc1
オプションの解説
|不良マークをつける|-f,--fail|指定されたデバイス(群)に対し、不良であることを示すマークを付ける|
|デバイスをアレイから削除|-r,--remove|指定されたデバイス(群)を削除する。 対象デバイスはアクティブであってはならない。 つまり異常が見つかって不良とされたデバイスかスペアデバイスなどに限る|
|指定されたデバイスを追加|-a,--add|指定されたデバイス(群)をスペアとして、アレイを止めずに追加 (hotadd) する|
***RAIDデバイスに予備装置の追加 [#k80ad405]
 # mdadm /dev/md0 -a /dev/sdc1     <- 装置の追加
 # mdadm -D /dev/md0               <- 現在の状況を確認
※ディスクアレイで、すでに装置に故障があり台数が必要以下になった場合、RAIDデバイスとして追加されたスペアは、即時、自動的にリビルドして本番ディスクとして稼動される。
***RAIDドライブを複数利用する時の注意点 [#uabfe336]
Redhat系のLinuxでは、/dev/md0 以外のドライブ名を利用するには、mknod コマンドで新しいデバイスを作成する。
 # cat /proc/devices | grep md   <- Major番号をこれで取得、たぶん9
 # mknod /dev/md1 b 9 1          <- 通常md0があるのでminor=1で.Majorは9
 # chmod --reference=/dev/md0 /dev/md1  <- 同じmodeにチェンジ
 # chown --reference=/dev/md0 /dev/md1  <- 同じownにチェンジ
※ちなみに削除するときは、rm /dev/md1 だけでOK

**RAIDの自動立ち上げ設定 [#rdee22ca]
Linux起動時用のファイルを作成する。/etc/mdadm.confに設定。
 # emacs /mdadm.conf
   DEVICE /dev/sd[ab]1             <- 利用するデバイスを設定
mdadmを初期に起動して設定済み情報を取得してmdadm管轄に設定。(ここで設定ファイルを指定してもOK)
 # emacs /etc/rc.d/rc.sysinit
   /sbin/mdadm -As                 <- mdadmを初期に起動してAssemble実行
デバイス登録されたアレイをマウント
 # emacs /etc/fstab
   /dev/md0         /usr/local/src         ext3   defaults        0 0

**RAIDパフォーマンスチェック [#gd611adb]
 # hdparm -t /dev/md0