Linuxサーバ運用マニュアル
前回までに,サーバの構成などの話は終了したので。ここからが,運用マニュアルの本編となります。しばらくは,第2部「定常運用編」として,Linuxでサーバを運用していく際,定期的に行っていかねばならない作業について説明していきます。
今回のテーマはデータの2重化です。コンピュータにとって,最も重要なのはデータです。サーバとして運用する場合,その重要性はさらに高まります。そこで,重要なデータは2重に持っておき。主データに欠損などの障害があった場合でも,即座に副データでそれを補っていくことが必要になります。
データの2重化を実現するためには,バックアップ・システムを構築しなければいけません。ここでは,Linuxサーバ運用に際してのデータ・バックアップについて,
の3つに分けて解説します。
データをバックアップするに際して,どのデータを,どこに,どのような方法で,バックアップするのか,その方針を決定しておく必要があります。
サーバにはさまざまなデータが存在するわけですが,そのうち,バックアップが必要になると思われるものは,WWWサーバのデータ,ファイルサーバのデータ,メールスプール,各種設定ファイルなどです。サーバの運用方針によってデータの重要性は異なるため,注意が必要です。
サーバのデータをバックアップする際には,バックアップ用のツールを使用するのが一般的です。ここでは,3つの違うタイプのツールについて簡単に紹介します。
別のマシン間でのファイルコピーを行うコマンドです。rcpを強力にしたものとも言えるもので,同様なものにrdistなどもあります。使用方法はcpコマンドなどと基本的に同様で,
Linux> rsync [オプション] コピー元 コピー先 |
のように指定します。
rsyncは,データをチェックしたうえでバイナリ差分情報だけを転送する。というようなこともしてくれるツールで,オプションも非常にたくさんありますので,手動でバックアップする際などには便利なツールです。
Current Version Systemという名前でもわかるように,これは,バックアップ・ツールというよりは,バージョン管理ツールと言った方が正確です。ファイルの更新情報などをすべて管理してくれるので,プログラムのソースを管理する場合や,複数の人間が同じファイルを扱う場合などに,特に大きな力を発揮します。
そして,バックアップ・ツールとしても,commitコマンドを使って2つのデータ間の同期をとることができ,その機能だけでも有効ですし,更新段階ごとのデータを保持しているため,上書き更新してしまったデータを復帰することなども可能となります。
バックアップ用として最も有名なツールだと思われるmirrorは,指定したサーバからデータを「もってくる」ツールです。指定されたサーバにアクセスし,そこにあるデータをローカルマシンのディレクトリに保存することができるものです。
ここでは,バックアップ・ツールにmirrorを使うとして。その設定について別項目として簡単に解説しておきます。
mirrorはパッケージという単位でバックアップを行い,mirrorを使用する際には,
Linux> mirror -p[パッケージ名] |
というように,パッケージ名を指定して実行します。
パッケージや動作の設定は,mirror.defaultというファイルで行い,mirror.defaultでは,
package=defaults |
で,全般的な情報を定義し,
package=各パッケージ名 |
で,ミラーを行う各パッケージを指定します。
まず,package=defaults部分の記述を解説します。
パッケージの例も1つ紹介しておきます。
package=htm site=www.ash.or.jp remote_dir=/usr/local/apache/htm local_dir+htm |
ここではhtmという名前のパッケージを設定しており,www.ash.or.jpというサーバの,/usr/loval/apache/htmを,ローカルディレクトリ/usr/local/apache/htmにコピーする設定です。
データの2重化という作業を行う際の具体的な運用方法について解説します。
1,バックアップ・ポリシーの決定
上記を参考に,データのバックアップ・ポリシーを決定します。
データ | 頻度 | 媒体 | 方法 |
---|---|---|---|
メールスプール | 1時間ごと | ゲートウェイのHDD | cronとmirrorで自動化 |
WWWサーバのデータ | 1日ごと | ゲートウェイのHDD | cronとmirrorで自動化 |
1週間ごと | MO | 手動(毎週月曜日) | |
ファイルサーバのデータ | 1日ごと | ゲートウェイのHDD | cronとmirrorで自動化 |
1週間ごと | MO | 手動(毎週月曜日) | |
設定ファイル | 更新あり次第 | ゲートウェイのHDD | 更新作業時に手動で |
今回は以上の方針で,バックアップをすることにします。
外部媒体としてはさまざまなものが考えられますが,コストやデータ量などからMOを選択することにし,毎週月曜日にMOに手動バックアップを行うことにします。なお,MOには3世代分(3週間分)のデータを残すことにします。
各種ログについてもバックアップの必要があるのですが,ログのバックアップについては,次回以降の回でログについての解説と同時に行う予定です。
2,バックアップ・ツールの設定
ゲートウェイにmirrorをインストールし,mirror.defaultに,パッケージを設定します。
package=mail site=www.ash.or.jp remote_dir=/var/spool/mail local_dir+mail package=htm site=www.ash.or.jp remote_dir=/usr/local/apache/htm local_dir+htm package=file site=www.ash.or.jp remote_dir=/usr/local/samba/files local_dir+files |
決定したポリシーの通り,3つのパッケージを設定します。
3,動作実験(実際にバックアップさせてみる)
設定されたmirrorが,きちんと動作するかどうかチェックします。
Linux> mirror -pmail Linux> mirror -phtm Linux> mirror -pfiles Linux> cd /backup Linux> ls -l |
4,自動化(shellとcronの設定)
1時間ごとのものと,1日ごとのものを,それぞれまとめてシェル・スクリプトを作ります。今回は,usr/local/etc/mirror/cronlibに,
hour.sh #!/bin/sh /usr/local/etc/mirror/mirror -pmail day.sh #!/bin/sh /usr/local/etc/mirror/mirror -phtm /usr/local/etc/mirror/mirror -pfiles |
を作り,実行権を与えます。
Linux> chmod u=rwx usr/local/etc/mirror/cronlib/hour.sh usr/local/etc/mirror/cronlib/day.sh |
そして,それをcronで定期的に実行するように指定します。(cronについての詳しい話は後の回で行う予定です)
Linux> crontab -e |
crontabに,以下の2行を追加します。
15 08 * * * /usr/local/etc/mirror/cronlib/day.sh 0 * * * * /usr/local/etc/mirror/cronlib/hour.sh |
毎朝8時15分にday.shを起動し,毎時0分にhour.shを起動する設定です。
5,外部メディアの準備
MOドライブを準備し,ファイル転送ができるようにしておきます。
Linuxでリムーバブル・メディアを使用する場合,マウントやアンマウントが必要になり,操作が複雑化するので,sambaを利用してWindowsクライアントで操作する方が便利です。
6,週次運用システム構築
詳しい話は後の回で行う予定ですが,バックアップ完了の知らせがなければメールなどで警告できるように設定します。
毎週月曜日にMOへの手動バックアップを行うと決めました。その作業の際の運用方法の解説です。
1,メディアの準備
その週のバックアップに使用するMOを準備する。
2,指定データのバックアップ
ここでは,ゲートウェイの/backup下に,すべてのデータが入っているので,それをMOにコピーします。
Windowsクライアントで操作しない場合は,mount, tar, umountコマンドなどを使用することになります。
3,指定された場所に保管
MOを指定場所に保管する
4,バックアップしたことを通知
バックアップ完了を警告用のシステムに通知します。
サーバを運用するには,サーバの状態を把握しなければなりません。そのためには様々なコマンドを使ってマシンの状態を調べなければなりません。
と,いうわけで次回は「リソースをチェックしよう!」です。
(ASHマルチメディア研究会/joe,はしもと)