FreeBSD 8.1 構築日誌-2 main-srv1

ソフトウェアRAID
データサーバにするので,できればデータを失いたくないものです。
1番簡単な,RAID1(ミラーリング)を組んでデータを守ることにします。

ここでは,ソフトウェアRAIDの「gmirror」を使用します。

今回参考にしたサイトです。
http://www.terakado.jp/2007/12/gmirror.html

まず,最初にブートに関する設定を先にいじってしまいます。

echo 'geom_mirror_load="YES"' >> /boot/loader.conf<br>sed -i .bak s/ad0/mirror\\/gm0/ /etc/fstab<br>

これを実行することで,RAIDパーティションから起動することになります。
ちなみに,元のドライブは「ad0」です。
※このまま再起動すると,起動しなくなりますよ。

次に,FreeBSDのインストールディスクを使用して,gmirrorを設定します。(マウントされたドライブには設定できないため。)

このマシンはディスクドライブを取ってしまったので,USBのDVDドライブを使ってやりました。

起動不可からの復帰
しかし!USBドライブのせいか,うまくいかず起動不可状態に!!
正直言って,どうも自分はBoot周りを壊す男で,今までもしょっちゅう起動不可にしてきました。
Linuxでも何度もやっているので,

なので,この辺りの感覚は勝手に身についてしまったので,これから紹介する方法は自分が見つけた方法です。

それでは,復元工程に移ります。

ディスクを入れずに,普通にBootします。

 途中でブートが停止します。ここで空エンターをすると,なぜか(?)再起動になってしまうので,ヘルプである「?」を入力しエンターします。
すると,

mountroot><br>

というプロンプトが登場します。

ここに,

ufs:/dev/ad0s1a<br>

を入力しエンターします。

すると,シェルの位置を聞いてくるので,空エンター(/bin/sh)もしくは,「/bin/csh」と入力して「csh」を使って作業をします。(空エンターでも,あとから「csh」を起動できる)

すると,シングルユーザモード(?)になりroot権限で操作ができます。
ここから,「fstab」の復旧を行いたいと思います。

さて,現在マウントされているポイントは,「/(ルート)」のみなので,使えるコマンドは「/bin」の中のコマンドぐらいです。
なので,超低級環境の中で頭を使わないといけません。
幸いにも,fstabに関しては,「/etc/fstab.bak」というバックアップを用意してあるので,mvコマンドで上書きするだけです。なので,「/usr」などをマウントしなくても大丈夫です。

さて,mvコマンドでバックアップデータとすり替えようと思いきや,なんとreadonlyでマウントされていました。
困ったな~と思ってmountコマンドを眺めていたら,あるじゃないですかオプションが!
ということで,「/」のマウントを読み書き可能で,再マウントします。すでにマウントされているので,文句を言われるかと思いましたが,普通に通りました。

/sbin/mount -rw /dev/ad0s1a /<br>

これで,読み書き可能になりました。
本題の,fstabの復元です。

mv /etc/fstab.bak /etc/fstab<br>

これで,完了です。
「reboot」して,起動しました!
(/boot/loader.confの修正は不要でした)

 なんだか,こんなことばかりやっているので,ブートに関するちょっとした知識がかなり付いたと思います。特にLinuxを使っていた時に,身につきましたね。Linuxと似ていますが,FreeBSDはやはりUNIXということで,Linux(GRUB)とはちょっと違いました。どちらかと言うと,FreeBSDのブート周りの方がシンプルに感じられました。
Ubuntuには例えば「UUID」とかいう物が付いていたり,あれこれ複雑な感じが伺えます。

起動状態からgmirrorを有効にする
ようやく,本題に入れます。
ちょっと調べたところ,起動状態からもgmirrorを有効にできるようです。

参考サイト: http://uls.fam.cx/freebsd/

最初の2コマンドは同じです。

残りは以下の作業です。

echo 'swapoff="YES"' >> /etc/rc.conf<br>sysctl kern.geom.debugflags=16<br>kldload geom_mirror<br>gmirror label -b round-robin gm0 ad0<br>

これで,「reboot」を掛けて起動成功しました。

gmirror status<br>

で確認してみると,

Name    Status  Components<br>mirror/gm0  COMPLETE  ad0<br>

という結果が表示され成功しました。

ここにミラーリングする,もう1台を追加します。

gmirror insert gm0 ad1<br>

これで同期が始まります。試しに,statusを見てみると,

# gmirror status<br>Name    Status  Components<br>mirror/gm0  DEGRADED  ad0<br>ad1 (0%)<br>

という結果が返されます。
同期の進行状態が%で示されます。

インストール間もないので,HDDの使用容量も少なくだいたい「40分程度」で終了しました。

メール通知と転送設定
その間に,ミラーの状態を毎日メールで知らせる設定をします。
「/etc/defaults/periodic.conf」の中の「daily_status_gmirror_enable」の項目を,「YES」にします。
しかし,まあメールの設定もしていないので気づかずにたまってしまうので,root宛のメールの転送設定もしちゃいましょう。
Linuxでもご定番の,「/etc/aliases」に追加します。

echo 'root: xxx@foo.bar' >> /etc/aliases<br>

気づきましたが,「/etc/aliases」の実態はシンボリックリンクで実際は,「/etc/mail/aliases」にあるようです。
そして,このエイリアスを有効にするために以下を実行します。

cd /etc/mail<br>make<br>

これで,有効になりました。
転送先に送られているかをテストしてみます。

echo hello | mail root<br>

これで,転送先に本文が「hello」という内容のメールが来れば完了です。
makeなんてこんなところで使うとは。。。

グダグダ記事を書いて,gmirrorの様子を見るとまだ54%でした。
さて,あとは放っておこう。

というわけで,今回はgmirrorによるソフトウェアRAIDの構築と,起動不能状態からの復帰でした~。
次回は,Sambaのインストールになると思います。
予想的には,「コンパイルに時間が掛かる。以上!」という感じがしますね。
Sambaが動けばこのマシンの役割はほとんど終わるのです。

雑記:
家の回線はCATVで,~1024ポートが開放できないんですよね~。
なので,このマシンにApacheなどを入れても,結局家の中でしか使えないので(80以外で開放すれば別だが),ファイルサーバがちょうど良いかと。
なんでまた,ファイルサーバなのかというと,家で撮ったデジカメ写真とかってハードディスクとかに入れておいても,邪魔だったり,OSの再インストールなどで消しちゃったりするんですよね。
なので,倉庫専用が欲しくなったわけです。
そんなことに,旧メインPCである,デスクトップPCを動かすの?ノートPCでも良いだろ,と思われる方も多いかと思います。仰る通りです。しかし,追加パーツまでは購入したいと思っていないので,今あるものを有効に使おうかと・・・。

ちなみに,WebサーバなどはさくらのVPSで運用・公開しています。外部に対するサービスはそっちでやろうかと。
あと,ローカルで実験サーバを用意して,そちらには各種サービスを入れたいと思います。
ボロノートPC3台を連携させて,ログイン系統の統一などローカルサービスを中心に動かしてみたいと思います。
FreeBSDはメモリを食わないので,FreeBSD中心で行きたいのですが,1台1番動くPCがどうやらFreeBSDと相性が悪いようで,ブートしません。なので,そいつにはUbuntu Serverあたりを検討しています。この際,他のディストリビューションに手を出すのも良いですが。
ということで,UNIX, Linuxの共存環境になったりするかもです。

それでは!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください