« FreeBSDでRAID1(Mirroring) | トップページ | FreeBSDでRAID3 »

2006年8月 5日 (土)

FreeBSDでルートパーティションをRAID1

前回の方法で/homeは普通にRAID 1できたけど、/はそうもいかず。ルートパーティションは、シングルユーザモードで起動するときも必ずマウントされるため、普通に起動したのでは常にBusyで、gmirror labelできない。

それならば、解決方法は1つ。別のディスクから起動すれば良いわけで。当然世の中には同じことをしている人はいるわけで(SYONテクニカル: FreeBSDでgmirrorによるソフトウェアRAID)、参考にさせてもらって同じように作業してみる。

問題は、このサーバにはCD-ROMドライブやFDDなどが一切接続されていないこと。でも手元にUSB接続のFDDはあるので、これから起動して無事に…とはいかなかった。

USB接続FDDから起動すると、普通にsysinstallは起動するのだが、fixitのメディア選択画面でFloppyを選んでも、怒られるだけで先に進まない。sysinstallのソースを調べてみると、Floppyを選んだ場合は/dev/fd/0をマウントしようとする様。で、USB接続FDDはda0として認識されるので、Floppy無いよということになる。なんてこった。

他に起動できるメディアで手元にあるのはUSBメモリだけだけど…と探していたら、あった。すぐ近くに。これからRAID 1のペアになるHDDが空いている!

というわけで、これからRAID 1にするad0(現在の起動ディスク)とad3のうち、ad3から起動する作戦に決定。

まずは、ad3から起動できるようにしないといけない。でも、1回起動できれば、すぐにRAID 1にするのに中身を消しちゃうので、強引に

# dd if=/dev/ad0 of=/dev/ad3 bs=10m
bs=10mは適当…(^^;

でコピー。当然このままでは、ファイルシステムがCLEANじゃないので、

# fsck -y /dev/ad3s1a /dev/ad3s1d /dev/ad3s1e /dev/ad3s1f

とやってきれいにして、起動したときにきちんとマウントできるようにしておく。

さて、これでad3から起動できるようになったので、再起動して/dev/ad3s1aがルートパーティションになってくれれば、万事解決…のはずだったが、なんかうまくいかず。いろいろやっても/dev/ad0s1aがルートパーティションになってしまう。

仕方がないので、ad0とad3を物理的につなぎ変えてシングルユーザモードで起動。いちおう/tmp、/usr、/varをマウントしておく。

# mount /tmp
# mount /usr
# mount /var

もとのad0が今はad3になっているので、ad3をgmirror labelで設定する。

# gmirror label gm0 ad3

今はad3としてlabelを書き込んだけど、HDDの接続を元に戻すとad0になるんだよな、大丈夫かな…と一抹の不安を抱きつつ、再起動する準備。再起動すると、ad0(今のad3)がmirror/gm0として見えてくれるはずなので、それに合わせてfstabを書き換える。今のad3はすでにmirror/gm0になっているので、

# mount /dev/mirror/gm0s1a /mnt
# vi /mnt/etc/fstab

としてfstabの中のad0を全てmirror/gm0に書き換える。

あとは、

# sync; sync; sync
# halt

で電源を切ってからHDDの接続を元に戻し、電源を入れるだけ。祈りながら起動画面を眺めていると、

GEOM_MIRROR: Device gm0: provider ad0 detected.

と、ちゃんとad0がgm0の一員として認識されていて、

Trying to mount root from ufs:/dev/mirror/gm0s1a

大成功!

あとはad3もRAID 1の一員にすれば完了。

# gmirror insert gm0 ad3

これでルートパーティションも無事にRAID 1になった。

|

« FreeBSDでRAID1(Mirroring) | トップページ | FreeBSDでRAID3 »

コメント

> いろいろやっても/dev/ad0s1aがルートパーティションになってしまう

/dev/ad3s1a の/etc/fstabを ad0 --> ad3 に書き換えないと /dev/ad3s1a がルートパーティションにならないのではないですか?

投稿: ff | 2008年5月14日 (水) 19時14分

私も実は試行錯誤の結果、その結論に達しました。
fstabはrootパーティションがマウントされてから参照されるものと思っていたので。

まぁ、基本といえば基本をおろそかにしていた罰が当たったのでしょうね。

投稿: きのし | 2008年5月23日 (金) 01時33分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: FreeBSDでルートパーティションをRAID1:

« FreeBSDでRAID1(Mirroring) | トップページ | FreeBSDでRAID3 »