mdadmとは
mdadmは従来はraidtoolsとかmdctlとかで知られていたLiNuxのRAID構築ユーティリティ群です。mdadmになってコマンドが統一されRAID構築やメンテナンスが非常にわかりやすくなりました。最新版は1.11.0です。ダウンロードはこちらから。
mdadmのrpmを作る
ソースで配布されているパッケージをrpmバイナリにビルドしなおしてからインストールします。その方がバージョン管理がしやすいし,アンインストールも簡単ですからおすすめです。
まず,最新版をダウンロードしてきて解凍します。
# tar xzvf mdadm-1.11.0.tgz
# cd mdadm-1.11.0
mdadm.specを/usr/src/redhat/SPECSにコピー
# cp mdadm.spec /usr/src/redhat/SPECS
mdadm-1.11.0.tgzを/usr/src/redhat/SOURCEにコピー
# cp mdadm-1.11.0.tgz /usr/src/redhat/SOURCE
ビルド
# cd /usr/src/redhat/SPECS
# rpmbuild -ba mdadm.spec
/usr/src/redhat/RPMS/i386の中にできたてほやほやのrpmがあります。あとはインストールするだけ。
# rpm -ivh /usr/src/redhat/RPMS/i386/mdadm-1.11.0-1.i386.rpm
HDDの構成
私は起動HDDがオンボードSATAに接続されているため,IDEコネクタはプライマリもセカンダリも空いていましたので, そこに160GBのHDDを4台接続しました。つまり/dev/hda,/dev/hdb,/dev/hdc,/dev/hddでRAID-5を構成します。160GBx3の壮大な空間ができるわけです。
RAID化
いきなりmdadmでRAID構築コマンドをブチこんでもRAIDが構築できますが,何か気持ち悪いので律儀にfdiskを使ってRAID用パーティションを作成してからRAID構築します。
# fdisk /dev/hda
基本パーティションを作成して,typeを0xfd(raid自動)に設定します。/dev/hddまで繰り返します。
で,RAID構築のおまじないです。
# mdadm -C /dev/md0 -l5 -n4 -f /dev/hd[abcd]1
オプションはmanを読んでいただきたいのですが,一つ解決できていない謎が。-fオプション(--force)をつけないとRAID構築後,「Failed Device」が検出されます。ちなみに-fオプション付きで構築すると,
# mdadm -D /dev/md0
/dev/md0:
Version : 00.90.00
Creation Time : Wed Apr 20 16:46:25 2005
Raid Level : raid5
Array Size : 480238656 (457.99 GiB 491.76 GB)
Device Size : 160079552 (152.66 GiB 163.92 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Wed Apr 20 16:46:25 2005
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : 3ab1c8a3:de4289b1:d79a16f3:4080436f
Events : 0.1
Number Major Minor RaidDevice State
0 3 1 0 active sync /dev/hda1
1 3 65 1 active sync /dev/hdb1
2 22 1 2 active sync /dev/hdc1
3 22 65 3 active sync /dev/hdd1
これが,-fオプション無しだと,
# mdadm -D /dev/md0
/dev/md0:
Version : 00.90.00
Creation Time : Thu Feb 24 15:42:40 2005
Raid Level : raid5
Array Size : 480256128 (458.01 GiB 491.78 GB)
Device Size : 160085376 (152.67 GiB 163.93 GB)
Raid Devices : 4
Total Devices : 5
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Feb 24 17:12:51 2005
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : 71dff297:d31dd5ea:fad2add8:d8c5f382
Events : 0.2
Number Major Minor RaidDevice State
0 3 0 0 active sync /dev/hda
1 3 64 1 active sync /dev/hdb
2 22 0 2 active sync /dev/hdc
3 22 64 3 active sync /dev/hdd
と,Failed Devicesが現れます。
おっと,もちろん/dev/md0はフォーマットして,mountしないと使えませんよ。
# mkfs -j /dev/md0
起動後自動認識
LiNux起動時に自動的にRAIDを認識させるには,まず/etc/mdadm.confに
DEVICE /dev/hd[abcd]1
の一行を追加しておいて,/etc/rc.d/rc.sysinitのどこかに
/sbin/mdadm -As
と追加。あとは例によって/etc/fstabあたりに/dev/md0の行を追加しておけばOKです。
で,ソフトウェアRAID-5ってどうなのよ?
思った以上に早いです。基本的に/dev/md0はsamba経由でWindowsマシンのネットワークドライブ,バックアップ用途として使っておりますが,ネットワークがギガビットということもあって,リードライトでネットワーク経由30~40MB/sぐらいでしょうか。
確かにHDD不具合発生時にアラーム上がりにくかったり,HDD交換時に電源落とさないといけないなど不便ではありますが,個人ユースでは問題ないかと。