ここでは小規模なシステム環境を想定し、これまでに説明してきた要素を取り入れたバックアップシステム構築の例を紹介します。
システムはWebサーバとして稼働し、そのバックアップを担当するNFSサーバが存在するという想定です。テープ装置は高価であるため、各サーバのバックアップデータを集めるNFSサーバのみに装備し、必要に応じてデータ保存を行うこととします。
このWebサーバはユーザーの追加などの作業は発生せず、コンテンツのみが随時追加・変更されるシステムです。これを大まかに分析すると、システム上にあるデータは以下のように分類できます。
パーティション分割 | 主なデータ | 更新頻度 | 重要度 |
---|---|---|---|
/usr/local | Webサイト用データ | 常時 | 最重要 |
/var | ログファイル | 常時 | 中位 |
/ | システムデータ | ほとんどなし | 低い |
今回は/usr/local/に対してLVMを使用し、スナップショットを利用してバックアップを取ります。また、バックアップはcronによって定期的に実行されるようにします。以上をまとめると以下のようになります。
ネットワーク経由でバックアップを取る場合、最も手軽なのがNFSの利用です。ここでは、NFSへの最低限のアクセス制御を考慮した設定を紹介します。
バックアップサーバ側には、/backupというディレクトリに各サーバ用のディレクトリを作成します。このディレクトリには書き込みを認めなければならないので、NFS専用のユーザーnfsbackupを作成し、それぞれのディレクトリの所有者とします。
# mkdir -p /backup/www |
次に、各サーバからNFSマウントできるように設定します。ただし、各サーバから別のサーバのデータを編集できないように、ここでは個別に公開するディレクトリを設定しています。
/backup/www www.example.com(rw,anonuid=1001,anongid=1001,all_squash) |
/etc/exports |
その後、portmapとrpc.mountd、rpc.nfsdを起動させれば、NFSサーバとして機能するようになります。
# portmap |
また、必要に応じてrpc.statdやrpc.lockd、rpc.rquotadなどのデーモンを動作させておきます。
クライアント側は、スナップショットを利用してバックアップを取るようにします。ここでは、バックアップサーバが公開しているディレクトリを/mnt/backupというディレクトリにマウントして利用することとします。
後は、バックアップを自動実行できるようなスクリプトを作成して、cronで自動実行するようにしておけばよいでしょう。以下にスクリプト例を挙げておきますが、これは最小限の機能しか持っていません。ほかにもNFSサーバ側でのデータ量監視機能、7世代を超えた場合はアーカイブデータを消去する機能、作成したアーカイブをテープに書き出すための機能などを持たせる必要があると思います。
#!/bin/sh |
上記のスクリプトを/root/bin/lvmbackup(例)として保存したら、cronに登録します。
# crontab -e |
例として、毎日00:00に上記スクリプトが実行されるようにしています。
00 00 * * * /root/bin/lvmbackup |
アーカイブをテープにバックアップする場合は、NFSサーバ側で以下のようにddコマンドを利用します。
# dd if=/backup/www.example.com/backup-lv0-0-20030129
of=/dev/st0 bs=512 |
2回にわたってバックアップに関する情報を紹介していきました。最後に紹介した方法は、これまでに紹介したツールをどの場所で利用するのかを分かりやすくするために想定した環境を前提としています。しかし、バックアップをどのように実現するかは、求められる要件によって異なります。コスト(費用、管理の手間)とのバランスを考えながら、適切な方法を選択してください。
バックアップシステムが大規模になればなるほど、データを失った場合の損害は大きくなり、管理コストも膨れ上がることになります。その場合は、管理コストの低減が見込める商用バックアップツール使用の検討をお勧めします。
Copyright © ITmedia, Inc. All Rights Reserved.