PC

mdadmを使ったソフトウェアRAID-5構築

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交換時に電源落とさないといけないなど不便ではありますが,個人ユースでは問題ないかと。

-PC