Rsync を用いてマシン全体のバックアップを取る
概要
Rsyncを用いてFreeBSDマシン全体のバックアップを取り、
コールドスタンバイ用のマシンとして利用できるようにする。
自動切り替えとまでは言わないが、
システムに詳しい人間がいなくても安直な指示で切り替えができるようにするという点がミソ。
問題点
単純にそのまま全体をrsyncしてしまうと、
コピー先の/etcなども全く同一になってしまい、
次回起動時にコピー元の設定で立ち上がってきてしまう。
解決
コピー先マシンにおいて、FreeBSDのCD-ROMからのブートのテクニックを用いて、
ハードディスクをCD-ROMのサブディレクトリ /hd にマウントし、
そこに対してコピー元マシンからrsyncを行う。
準備
- FreeBSDのCD-ROMからのブートの手順を用いて、
make cdbsd-configure の段階で、以下の設定を chroot 下のツリーに対して行う。
- passwd root で root のパスワードを設定する。
- /etc/rc.confを設定する。たとえばこんな感じ。
hostname="コピー先ホスト名"
ifconfig_???="インターフェースの設定"
kern_securelevel_enable="NO"
moused_enable="NO"
moused_port="/dev/psm0"
moused_type="auto"
nfs_reserved_port_only="YES"
sendmail_enable="NO"
sshd_enable="YES"
usbd_enable="YES"
- /etc/fstab でハードディスクをインストール状態で /hd 以下にマウントされるようにする。たとえばこんな感じ。rsync は大量にメモリを利用するので、
せっかくあるスワップエリアは利用した方がいい。
/dev/acd0c / cd9660 ro 0 0
/dev/fd0a /fd msdos rw,noauto 0 0
proc /proc procfs rw 0 0
/dev/da0s1b none swap sw 0 0
/dev/da0s1a /hd ufs rw 0 0
/dev/da0s1f /hd/tmp ufs rw 0 0
/dev/da0s1g /hd/usr ufs rw 0 0
/dev/da0s1e /hd/var ufs rw 0 0
- ssh のホストキーを生成する。具体的には次のように行う。
# /usr/bin/ssh-keygen -t rsa1 -N "" -f /etc/ssh/ssh_host_key -C コピー先ホスト名
# /usr/bin/ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key -C コピー先ホスト名
# /usr/bin/ssh-keygen -t dsa -N "" -f /etc/ssh/ssh_host_dsa_key -C コピー先ホスト名
- /etc/ssh/sshd_config で ssh の適切なアクセス制限(たとえば、コピー元マシンからのみログインを許し、passwd 認証を禁止する、etc.)を行い、root でのログイン許可を設定する
- /root/.ssh/ に DSA の公開鍵を用意して、コピー元マシンからの DSA 認証による root ログインが可能なように設定する。
- /etc/resolv.conf, /etc/localtime(必要あれば), /etc/hosts.allow などを適切に設定する
- ports/net/rsync をインストールしておく
- 元マシンと同一のパーティション構成にしたマシンをもう一台用意し、同じバージョンの FreeBSD をインストールしておく。これがコピー先マシンとなる。
- コピー先マシンを先ほどの CD-ROM で起動しておく。
- コピー元から rsync をかける。下記のスクリプトを参照 (devfs, nullfs, procfs でマウントされている部分と Unix ドメインソケットをコピーリストから排除する)。必要があれば、ssh-agent と ssh-add で自動ログイン化して cron から回すことも可能。
ファイル
関連リンク
TODO
- メールサーバやデータベースサーバなどのバックアップに利用するには、
一貫性の維持のために限界がある。FreeBSD 5.X の snapshot 機能と組み合わせて、
何とかできないかを考慮中。
- コピーするとき以外はハードディスクを umount しておきたい。
- schg などのオプションを保持したい。
- ACL, EA などを保持したい。
インデックスに戻る
細川達己 <hosokawa@FromTo.Cc>