2004年11月13日

SoftwareRAIDで起動時にstart

さて、こちらのエントリでGentooにてソフトウェアRAID5を構築することができましたが、このRIAD、なぜかマシンの起動時にstartが掛かりません。

起動時に表示されるメッセージには

mount: /dev/md0 can't read superblock
なんて書いてあって、何となく動こうとしている気配はあります。

で、ちょっと調べてみたら「RAIDで使っているパーターションのタイプ番号が「fd(Linux raid autodetect)」になってないと起動時にスタートしない」というようなことが書いてあったので鵜呑みにしてそのようにして再構築→実行→失敗_| ̄| ...○

激しく時間の無駄をしたなぁと思いつつ、しょうがないので起動プロセスを追っかけて調べることに。

SoftwareRAIDの起動はFedoraなら「/etc/rc.d/rc.sysinit」の中で「/etc/raidtab」があれば自動でスタートが掛かるようになっているんですが、GentooLinuxにはそもそも同一のパスの起動ファイルが存在していません。

それで、探してみたところ「/sbin/rc」がrc.sysinit相当の起動スクリプトであることが判明。

で、内容を追いかけて見ましたが、この中ではRAIDに関することは何も行ってなかったので、起動中にインクルードされる外部シェル置き場の「/etc/init.d」に望みを繋ぐことに。

というわけで

$ cd /etc/init.d/
$ grep raid *
としてみたところ「checkfs」にraidを始動させる文が入って居たので今度はこれを追いかけてみました。

「raid」で検索して、内容を追ってみると

        if [ -z "${CDBOOT}" -a -f /proc/mdstat ]
        then
                local mdadm_devices=
                local raidtools_devices=
                # If /etc/mdadm.conf exists, grab all the RAID devices from it
                if [ -f /etc/mdadm.conf ]
                then
                        mdadm_devices=$(awk '/^[[:space:]]*ARRAY/ { print $2 }'
/etc/mdadm.conf)
                fi
                # If /etc/raidtab exists, grab all the RAID devices from it
                if [ -f /etc/raidtab ]
                then
                        raidtools_devices=$(awk '/^[[:space:]]*raiddev/ { print
$2 }' /etc/raidtab)
                fi
                ebegin "Starting up RAID devices: "
辺りが、怪しい。

というか「Starting up RAID devices:」というメッセージは起動時に出てこないので、どうやら「if [ -z "${CDBOOT}" -a -f /proc/mdstat ]」のif文で蹴られているようです。

そこで試しに

if [ -z "${CDBOOT}"]
としたところ、エラーは出ましたがちゃんと「Starting up RAID devices:」の表示が出たため「/proc/mdstat」が起動時に設定されていない→おそらくRAIDのmoduleが組み込まれていないということなので、以下のようにしてみました。
echo 'raid5' >> /etc/modules.autoload.d/kernel-2.6
これで起動時に強制的にraid5のモジュールが読み込まれるはずなので、再度テスト→無事成功( ̄▽ ̄)ノ

というわけで何とかRAID5の運用をちゃんと始めることができそうです。

あと、checkfsでは/etc/raidtab以外にもmdadmでのraid管理でも動くようになっていてなかなかよさげな感じです。
(というか今回初めてmdadmの存在を知りました(笑))

あと、/etc/fstabでnoautoになっているとraidstartしないようになっていたりと親切なんだかどうか微妙な仕様があったりとなかなか楽しいので、GentooでのRAIDの自動起動で困ったら/etc/init.d/checkfsの中身を一度覗いてみると良いと思います。

Posted by Takuchan at 2004年11月13日 00:01 | トラックバック(0)