ミラーリング

サーバーは常時電源を入れたままにしているため、ハードディスクや電源などが他のPCと比べ早く劣化します。稼働中に壊れることは比較的少ないものの一度電源を切って停止してから再度稼働させようとするとトラブルが発生することが多いようです(^^;)。そのような不測の事態に備えミラーリングを行います。
ミラーソフトを入手する
FreeBSDには色々なミラーソフトがフリーで配布されているので、ダウンロードしてビルドを行います。私は samba で有名な http://rsync.samba.org/ から rsync をダウンロードして使うことにしました。
このドキュメントを書いている時点の最新バージョンは rsync-2.5.6 でしたが、うまくビルドできなかったため、使っている人が多い rsync-2.4.6 を入れてみることにしました。
ビルドする
まず、ダウンロードした rsync-2.4.6.tar.gz を展開します。
> tar xvfz rsync-2.4.6.tar.gz
環境を作成してビルドを行います。
> cd rsync-2.4.6
> ./configure
> make
インストールを行います。
> su -l
Password:********
# cd /home/username/rsync-2.4.6
# make install
これで rsync コマンドが使えるようになりました。
リモートの信頼関係を設定する
ミラーを行うPCに対してリモートコマンドなどがそのまま使えるように信頼関係の設定を行います。信頼関係の設定は .rhosts ファイルに名前とユーザー名を書き込むことで設定できます。
> su -l
Password:********
# vi .rhosts
ミラー先のコンピュータ名 ユーザー名
例えば、ミラー先のコンピュータ名が server2 で ルートユーザーで信頼関係を結びたい場合には、
server2 root
と書きます。
注意
古バージョンのFreeBSDでは「.rhosts」に信頼関係の記述を行えばルート権限のアクセスが可能でしたが、FreeBSD 5.X以降ではセキュリティが強化されており、「.rhosts」の設定だけではrootの信頼関係が結べないようになっています。「ネットワークの設定」の「Root権限でリモートを可能にするには」を参考にして信頼関係の設定を有効にして下さい。
この設定を行うと信頼するコンピューターからはパスワード無しで入れてしまうため、セキュリティが著しく低下します。そのためインターネットを介して設定を行う事は絶対避けるべきです。せいぜい、LAN内でスイッチングHUBを使い、同一セグメント内の目の届く範囲に限定して設定する方が安全です。
スクリプトを書いておく
ミラーリングを行いたいディレクトリ名などを明記したスクリプトを書いておくと便利です。
rsync -auv --delete 相手先:/home/ /home/
rsync -auv --delete 相手先:/var/mail/ /var/mail/
rsync -auv --delete 相手先:/usr/local/apache/data/ /usr/local/apache/data/
rsync -auv --delete 相手先:/usr/local/apache/data/ /usr/local/apache/cgi-bin/
上記のように書くと、各ユーザーディレクトリ / 各ユーザーのメール / RootドキュメントとCGIがミラーリングされます。
これで、スクリプトに実行権限でも付けておけば、スクリプトを起動するだけでミラーリングが行われます。
自動でミラーリングしたい場合には、cron などに設定を書いておけば良いと思います。
※参考資料
書式
rsync [OPTION] SRC [[USER@]HOST:]DEST
rsync [OPTION] [[USER@]HOST:]SRC DEST
よく使いそうなコマンドオプション
オプション機能名機能詳細
-aarchiveファイル属性も含めてコピーする
-linksソフトリンクを維持してコピーする
-uupdateタイムスタンプを確認してコピー元が新しければコピーを行う
-vverboseコピー内容を表示する
-rrecursiveディレクトリで再帰的にコピーする
-zcompress with zlib圧縮しながらコピーする
--deletedeleteコピー元に存在しないファイルは削除する
--exclude=PATTERNexcludeパターンに一致するファイルを除外してコピーする