既にLivefs CDを使って、gmirrorの設定を行う方法を書いた。このLivefs CDを使う方法が正当な方法と思える。
しかし、Livefs CDを使うことなく設定する方法をNetで見つけ、試したところ無事設定出来たので、ここに書いておくことにした。
前提条件として、FreeBSDがインストールされているHDDは/dev/ad4で、設定終了後にHDDを追加してミラー化するものとする。また、gmirrorで設定するのはgm0の設定名とし、サーバーは通常に起動して動作中であるものとする。
注:
ATAインターフェイスのチャネル(ATA0, ATA1, ATA2・・・)単位でFreeBSDでは、attach/detachできるので、ミラー化するドライブ(ここでは、ad4とad6)は、HDD故障時の交換を考え、ATAインターフェイスのチャネルが異なるドライブの組み合わせにするのが望ましい。(例:ATA2 ← ad4, ATA3 ← ad6) (atacontrolで故障HDDの交換 を参照)
(1) /boot/loader.confに gmirrorの読み込みを設定する。
# vi /boot/loader.conf
geom_mirror_load="YES" ← この行を追加
(2) /etc/fstabを編集する
# vi /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad4s1b none swap sw 0 0
/dev/ad4s1a / ufs rw 1 1
/dev/ad4s1d /backup ufs rw 2 2
/dev/ad4s1e /tmp ufs rw 2 2
/dev/ad4s1f /usr ufs rw 2 2
/dev/ad4s1g /var ufs rw 2 2
/dev/ad4s1h /web ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
viで開いた画面で、
:%s/ad4/mirror/gm0/
と、入力する。画面が次のように変わる。
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /backup ufs rw 2 2
/dev/mirror/gm0s1e /tmp ufs rw 2 2
/dev/mirror/gm0s1f /usr ufs rw 2 2
/dev/mirror/gm0s1g /var ufs rw 2 2
/dev/mirror/gm0s1h /web ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
この内容を保存する。
(3) /etc/rc.confにswapoff=”YES”を追加する。
# echo 'swapoff="YES"' >> /etc/rc.conf
(4) kern.geom.debugflagsに16を書きこむ
# sysctl kern.geom.debugflags=16
この操作で、ブートしたHDDにメタデータが書き込めるようになる。
(5) gmirrorモジュールをload
# kldload geom_mirror
(6) /dev/ad4をmirror登録し、rebootする。
# gmirror label -b round-robin gm0 ad4
# reboot ← そして、reboot
(7) 無事起動したらloginしてgmirrorのstatusを確認する。下記のようになれば成功である。
# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad4
(8) /dev/ad6が実装されているものとすると、これを追加してミラーを構成する。
# gmirror insert gm0 ad6
これで、同期化が始まる、statusを見ると、進行状態が%で示される。
# gmirror status
Name Status Components
mirror/gm0 DEGRADED ad4
ad6(2%)
HDDの容量にもよるが、1時間程度でCOMPLETEDになり構成は完了する。
(9) ミラーの状態を毎日メールで知らせてもらうように設定
/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
注意) もしmirrorの構成に失敗したら、このときはLivefs CDを使って元の状態に戻し、
やり直す必要があるので、やはりLivefs CDは用意しておくべきであろう。