2009.02.25
FreeBSDでRAID1(mirror)の設定・・・(FreeBSD)
災害は忘れた頃にやってくる。24H運転のサーバを運営していると、何時か突然にHDDの故障に見舞われる。そのために、2台のサーバで真夜中にお互いのデーター領域をBackupするようにしているが、最悪故障前24時間のデータは失われるし、なによりもHDDを交換して、再度サーバを立ち上げ直すのは簡単な仕事ではない。優に1日ぐらいは必要である。
そこで、HDDをミラー構成にして突然の事故に備えることにした。
FreeBSDではgmirrorというソフトウェアミラーが備わっているので、これを用いる。
まず、空いているPCを用いてトライアルすることにし、以下はその記録である。
1. 準備
FreeBSD releaseの最新版である7.1版の7.1-RELEASE-i386-disc1.isoと7.1-RELEASE-i386-livefs.isoをダウンロードし、どちらもCDRを作成しておく。
実験用に用意したPCには2台のHDDを入れ、ad0(40GB)とad2(160GB)となっていて、ad0にはFreeBSD-7.1を普通にインストールしておいた。なお、DVDがacd1に割り付けられている。
2. gmirrorの設定
普通はLivefs CDで起動するが、テストに用いたPCでは何故か起動できなかったので、インストールCDで起動して、以下に示すように進めた。
なお、Livefs CDで起動出来ても、同じように進んで行き、途中でCDの入れ替えが不要なだけである。
(1) FreeBSDのインストールディスクで起動し、国の選択でJapanを選び、キーボードのコードはJapanese 106を選ぶ。ここで英文でも良いと思ってUSAのまま進めると、キーボードが日本語キーボードのとき、記号の配置が違い苦労する。
(2) キーボードを選んで現れる画面で、
Fixit: Repair mode with CDROM/DVD/Floppy or start shellを選択する。
(3) 現れた画面で、
CDROM/DVD:Use the “live” filesystem CDROM/DVD を選ぶ。
Livefs CDを使ってBootしても、ここまでは同じで、これ以降はCDの入れ替え無しで、次の3. 設定に進む。
(4) Please insert a FreeBSD live filesystem CD/DVD and press return のメッセージがでたら、CDをFreBSD Live CD に交換してReturnを押す。
3. 設定
# Fixitのプロンプトが表示されるので、下記のように設定する。
IDEではad0, ad2のようにprimaryとsecoondaryのMaster接続がよく、sataではad4, ad6がよい。dmesgでドライブ名を調べておくとよい。
なお、ミラーの形式のround-robinは負荷分散の方式の1つである。他にも幾つかの種類があるが、round-robinが最もポピュラーらしい。
Fixit# chroot /dist Fixit# kldload geom_mirror ← gmirrorのload Fixit# exit Fixit# gmirror label -b round-robin gm0 ad0 ← round-robinでmirrorを構成
下記のメッセージが表示される。
Metadata value stored ad0. Done.
Statusを表示してみると、下記のように表示されmirror機能が出来ている。
Fixit# gmirror status Name Status Components mirror/gm0 COMPLETE ad0
出来たミラーディスクを/mntにマウントしてfstabを書き換える。
sedの替わりに、eeで/mnt/etc/fstabを編集して/dev/ad4s1a → /dev/mirror/gm0s1aのように全ての ad4をmirror/gm0に変更しても良い。なお、viはtemporary file領域がいるので使用不可。
Fixit# mount /dev/mirror/gm0s1a /mnt Fixit# sed -i bak s/ad0/mirror\/gm0/ /mnt/etc/fstab/
geom_mirrorの読み込みを/boot/loader.confに設定し、/etc/rc.confも修正。
これは、eeを使った方が楽かもしれない。
echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf echo 'swapoff="YES"' >> /mnt/etc/rc.conf
CDRを抜いて、再起動する。立ち上がったらroot権限でad2を組み込む。
# gmirror insert gmo ad2 ← ad2の組み込み
これで、同期化が始まる、statusを見ると、
# gmirror status Name Status Components mirror/gm0 DEGRADED ad0 ad2(2%)
30分ほどでad2(100%)になりミラー構成は完了した。
# gmirror status Name Status Components mirror/gm0 COMPLETE ad0 ad2
4. 状態の監視
ミラーで動作させていると、1台のHDDが故障してもサーバの動作は続行するが、1台が故障した時点で対処しないと、ミラーにしている意味がない。
このために、/etc/defaults/periodic.confを編集してミラーの状態を毎日メールで知らせてもらうようにする。
/etc/defaults/periodic.confをみると、下記のようにDaily check項目の406番が”NO”になっている。
# 406.status-gmirror daily_status_gmirror_enable="NO" # Check gmirror(8)
“NO”を”YES”に直しても良いのだが、/etc/defaults/rc.confの内容は書き換えず、/etc/rc.confを作成して指定するのと同様に/etc/periodic.confを作って記述する。この記述が優先される。
# cd /etc # vi periodic.conf daily_status_gmirror_enable="YES" : wq
これで、毎日のdaily checkメールにgmirror statusの情報が載る。
コメント
コメントフィードを購読する
コメント投稿