Edit
LinuxソフトウェアRAID

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

Edit
mdadm コマンド

mdadmコマンドは、Linux上におけるソフトウェアRAIDで非常に使いやすいコマンドであり、設定ファイルを利用しなくとも、コマンドでRAIDを構築することも、逆に設定ファイルを利用して設定することもできる便利なコマンドである。

Edit
Install

Edit
yum

2009年2月現在におけるyumでのバージョンは、2.6.4

# yum install mdadm

Edit
Source

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

Edit
rpm作成+インストール

上記のソースを展開した後

# 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コマンドで簡単にインストールできる。

Edit
mdadmのモード一覧

主に8つの操作モードがあり、これらを利用しRAIDの構築、管理、運用を行う。

モード名指定方法説明
Assemble-A,--assembleすでに作成されているディスクを元に、現在アクティブなディスクアレイを再編成する。 また必要に応じて偽のスーパブロックを使って不完全なアレイを編成することもできる。
Build-B,--buildデバイスごとのスーパブロックをもたない古いタイプのアレイ(レガシーアレイ)を作る。
Create-C,--create標準のアレイ作成モード。デバイスごとのスーパブロックをもつアレイを作成する
Manage(指定無し)既にあるアレイについて、スペアデバイスを追加したり欠陥のあるデバイスをアレイから外すなどの管理を行う。1回のコマンドで操作できるのは 1つの md アレイに限る。
装置情報表示-Q,--querymdデバイスやmdアレイなどの装置的な情報の内容を表示
詳細表示-D,--detail1つまたは複数mdデバイスの詳細情報の表示
スーパーブロックの情報表示-E,--examine1 つまたは複数のデバイスの 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コマンドの日本語翻訳ページ

Edit
mdadmコマンドサンプル

Edit
RAIDドライブの作成

/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 -t ext3 -c -j /dev/md0   <- format
# mount /dev/md0 /usr/local/src

※ドライブ指定には正規表現の指定が可能。faile diskが出るときには、--forceで強制的に設定する場合がある。

Edit
RAID ディスクの交換

壊れた/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) する

Edit
RAIDデバイスに予備装置の追加

# mdadm /dev/md0 -a /dev/sdc1     <- 装置の追加
# mdadm -D /dev/md0               <- 現在の状況を確認

※ディスクアレイで、すでに装置に故障があり台数が必要以下になった場合、RAIDデバイスとして追加されたスペアは、即時、自動的にリビルドして本番ディスクとして稼動される。

Edit
RAIDドライブを複数利用する時の注意点

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

Edit
RAIDの自動立ち上げ設定

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

Edit
RAIDパフォーマンスチェック

# hdparm -t /dev/md0