図7 dumpやrestoreの使用例
図7 dumpやrestoreの使用例
[画像のクリックで拡大表示]
図8 tarを使ってデータをバックアップする
図8 tarを使ってデータをバックアップする
[画像のクリックで拡大表示]
図9 rsyncコマンドを使ったバックアップ
図9 rsyncコマンドを使ったバックアップ
[画像のクリックで拡大表示]
図10 cronを使って行う典型的な処理
図10 cronを使って行う典型的な処理
[画像のクリックで拡大表示]
図11 rsyncを使ったバックアップを定期的に実行する<BR>/(ルート),/usr,/homeの3つのパーティションの内容を/mirror/パーティションに定期的にコピーする場合の例。/etc/cron.d/daily/ディレクトリ内に適当な名前(ここでは,mirrorとする)でこのような簡単なシェル・スクリプトを作成して実行可能にしておく。このスクリプトは,cronによって1日に回実行され,簡単なバックアップ処理を行う。
図11 rsyncを使ったバックアップを定期的に実行する<BR>/(ルート),/usr,/homeの3つのパーティションの内容を/mirror/パーティションに定期的にコピーする場合の例。/etc/cron.d/daily/ディレクトリ内に適当な名前(ここでは,mirrorとする)でこのような簡単なシェル・スクリプトを作成して実行可能にしておく。このスクリプトは,cronによって1日に回実行され,簡単なバックアップ処理を行う。
[画像のクリックで拡大表示]
図12 tarコマンドを使って特定のディレクトリをテープ装置に毎日バックアップする&lt;BR&gt;1週間分のデータを1本のテープに記録し,毎月曜日にテープを交換する場合の例。/etc/cron.d/daily/ディレクトリ内に適当な名前(ここでは,tape-backupとする)でこのようなシェル・スクリプトを作成して実行可能にしておく。
図12 tarコマンドを使って特定のディレクトリをテープ装置に毎日バックアップする<BR>1週間分のデータを1本のテープに記録し,毎月曜日にテープを交換する場合の例。/etc/cron.d/daily/ディレクトリ内に適当な名前(ここでは,tape-backupとする)でこのようなシェル・スクリプトを作成して実行可能にしておく。
[画像のクリックで拡大表示]
バックアップとリストア
万が一に備えて定期的に作業する

 ハード・ディスク装置が壊れたときに失われては困るデータは,定期的にバックアップし,いざというときにリストアできるようにしておこう。

 ここでは,データの重要性や更新頻度,容量に応じて,どの程度の間隔でバックアップするのかや,どの記録媒体にバックアップするのかを決めておく。例えば,毎日ハード・ディスクの特定ディレクトリの内容を,同じシステム内の異なるハード・ディスクにバックアップしておき,週1回はそのデータをCD-Rやテープなどに保管しておくように決めておく。バックアップすべきデータは一般的には,一般ユーザーのディレクトリが存在する/homeや,WebサイトやFTPサイトのコンテンツが存在する/var,アプリケーションがインストールされる/usr,そして各種設定ファイルがある/etcなどだ。バックアップの頻度については,これらのディレクトリの内容が変更されるかによる。例えば,/homeや/varは毎日バックアップを行い,/usrや/etcは新たなアプリケーションをインストールし,その設定が終了したときにバックアップするなどだ。

 バックアップでは,dumpコマンドやtarコマンドがよく使われる。最近ではtarが使われることが多い。dumpコマンドはファイル・システム単位でバックアップする(図7[拡大表示])ので,例えば/(ルート)と/swapしか切り分けていないハード・ディスクをdumpコマンドでバックアップする場合は,フル・バックアップと同じことになり,効率が悪い。そのため,ディレクトリやファイル単位でバックアップできるtarの方が使い勝手が良い(図8[拡大表示])。

rsyncコマンドでデータをバックアップ

 rsyncコマンドを使ってデータのバックアップを行う方法もある。rsyncはもともとはネットワーク経由でファイルの同期を取るためのコマンドであり,バックアップ用途にも使用できる(図9[拡大表示])。システムに複数のディスクを実装し,メインのディスクからバックアップ用のディスクにデータをコピーしておけば,ディスクが1台故障したときでもデータを失わずに済む。rsyncは,ファイルのタイムスタンプ(更新時刻)をチェックしてコピーしてくれるので,cronコマンドを利用して定期的に実行すれば,更新したファイルだけをコピーできる。

cronを使って定期的に実行

 バックアップなど定期に行う処理はなるべくcronで定期実行する。cronの設定は,/etc/crontabファイルと/etc/cron.d以下にあるファイルで行う(Red Hat系のディストリビューションの場合)。インストール直後の状態では,/etc/crontabファイル内の記述により,以下のディレクトリ内にあるプログラムが定期実行されるようになっている。

特定の処理を定期実行したい場合には,その実行間隔に沿ったディレクトリ内に,シェル・スクリプトを作成して置いておけば良い。一般的にcronを使って行われる処理と実行頻度を図10[拡大表示]に示す。

 前述のrsyncを使ったバックアップを定期実行する例を図11[拡大表示]に示す。システム内の/(ルート)と/usrと/homeそれぞれのパーティションの内容を,/mirrorパーティションに定期的にコピーするという処理内容である。また,tarコマンドを使って特定のディレクトリをテープ装置(デバイス・ファイル名は/dev/st0)に毎日バックアップする例を図12[拡大表示]に示す。この例は,1週間分のデータを1本のテープに記録し,また毎月曜日にテープを交換することを前提としている。

ログ・チェック
定常状態を把握し異常を検知する

 システム管理者にとってログのチェックは重要な業務である。ログの内容を見ることで,ユーザーの利用状況や不正利用の痕跡を把握できるためだ。また,さまざまなデーモンのログは,そのデーモンが正常に動作しているか,あるいは何か問題が発生しているかの判断材料になる。まずは,ログ・チェックの基本として,システム・ログ(以下,syslog)に注目しよう。

 syslogはそもそも,syslogのデーモン(syslogd)が生成する各種メッセージを,メッセージの種類ごとに分類して,指定したファイルに記録する仕組みである。どのファイルに記録するかは,/etc/syslog.confファイルで設定するsyslog.confファイルを見れば分かるように,ほとんどのメッセージ*2は,/var/logディレクトリ以下のファイルとして記録する。代表的なファイルは,Linuxカーネルのメッセージや各種デーモンのメッセージが記録され/var/log/messages,xinetdやTCP_Wrapperなどネットワーク・セキュリティ関連のログを記録した/var/log/secure,sendmailが送受信したメールのログやメール・クライアントのログを記録した/var/logmaillogである。実際にログをチェックするときには,lessコマンドなどでファイルを見たり,grepなどの文字検索コマンドを使って特定のキーワードを拾い出して確認する。キーワードとしては,エラー関連のメッセージを示すerrやwarningを使用する。

各サービスのログも見逃さない

 サーバー用途でシステムを使っている場合は,サーバー・アプリケーションごとのログ・ファイルをチェックすることも忘れてはならない。

 例えば,前述のcronのログは/var/log/cron,ファイル/プリント・サーバーSambaのログは/var/log/samba,WebサーバーApacheのログは/var/log/httpd,ftpサーバーwu-ftpdのログは/var/log/xferlogにそれぞれ記録される*3。サーバー・アプリケーションのログを解析してアクセス統計を作成するツールが公開されているので,それらを使うのも良いだろう。

 ログのチェックは,記録されるメッセージの内容は多岐にわたるし,その量も多いので簡単ではない。いざというときに不正利用の痕跡を見つけるためには,正常運用時からログ・ファイルをチェックして,システムやアプリケーションがどのようなログを記録するのかを覚えておくことが大切だ。ここでは何よりも経験がものを言うことを覚えておいてほしい。