Solaris のシステム管理 (第 2 巻)

第 17 章 システム資源の管理

この章では、UNIX ソフトウェアと Solaris 環境が提供するシステム資源管理用の機能について説明します。ディスク割り当て、アカウンティングプログラムの使用方法、さらに、定期的に実行する必要があるコマンドを crontabat コマンドにより自動的に実行する方法などが含まれます。

この章の内容は次のとおりです。

システム資源に関する作業の参照先

システム資源を管理する手順については、次の内容を参照してください。

ディスクの割り当て

ディスクの割り当て機能を使用することにより、システム管理者は、各ユーザーが使用できるディスク容量と i ノード数 (おおよそのファイル数に該当) を制限して UFS ファイルシステムを制御できます。これは特にユーザーのホームディレクトリがあるファイルシステム上で効果があります。(これにより公開ファイルシステムと /tmp ファイルシステムにはディスクが十分割り当てられないことがあります。)

割り当てを設定する一般的な手順は次のとおりです。

  1. いくつかのコマンドを使用してファイルシステムにディスク割り当てを決め、システムがリブートし、そのファイルシステムがマウントされるたびに割り当てを確認することができます。/etc/vfstab ファイルにエントリを追加し、また、そのファイルシステムの一番上のディレクトリに quotas ファイルを作成する必要があります。

  2. まず 1 人のユーザー用に割り当てを設定し、それを他のユーザー用にコピーします。

  3. 割り当てが有効になる前に、他のコマンドが現在のディスクの使用状態をチェックし、競合していないかどうかを確認します。

  4. 最後に、コマンドは 1 つ以上のファイルシステムでの割り当てを有効にします。

以上の手順により、あるファイルシステムがマウントされるたびに、そのファイルシステムのディスク割り当てが有効になるように設定できます。詳細は、第 20 章「ディスク割り当ての管理」を参照してください。

一度設定しても、割り当てを変更して、ユーザーが使用できるディスク容量と i ノード数を調整できます。また、システムに変更が必要な場合は、それに合わせて割り当てを追加または削除できます。割り当ての変更、割り当てを超えてもかまわない時間の長さの設定、各割り当てを無効または削除する方法などについては、「割り当ての変更と削除」を参照してください。

ディスク割り当てを監視できます。割り当てコマンドを使用することによりシステム管理者は、ファイルシステムでの割り当てを表示したり、割り当てを超えて使用しているユーザーを検索したりできます。これらのコマンドの使用方法については、「割り当てのチェック」を参照してください。

定型作業の自動実行

多くの定型的なシステムイベントは、自動的に実行されるように設定できます。それらの作業のなかには、定期的に実行する必要があるものがあります。その他の作業は、1 回しか実行する必要がありません。大部分は、夜間や週末などの就業時間外に実行できます。

この節では、crontabat という 2 つのコマンドについて説明します。これらのコマンドでは、ピーク時間帯を避けて、または固定スケジュールに従って繰り返し実行して、定型的なコマンドが自動的に実行されるようにスケジュールすることができます。crontab は繰り返し実行されるコマンドをスケジュールし、at は 1 回実行されるコマンドをスケジュールします。

反復ジョブのスケジューリング (crontab)

定型的なシステム管理用コマンドは、crontab コマンドを使用して、毎日、毎週、または毎月それぞれ 1 回ずつ実行するようにスケジュールできます。

毎日 1 回の crontab によるシステム管理作業には次のようなものがあります。

毎週 1 回の crontab システム管理作業には次のようなものがあります。

毎月 1 回の crontab システム管理作業には次のようなものがあります。

上記に加えて、連絡事項の通知の転送やバックアップファイルの削除や、さらに他の定型的システム作業を実行するように crontab コマンドをスケジュールすることもできます。

1 つのジョブのスケジューリング (at)

特定の 1 つのジョブを後で実行するように at コマンドを使用してスケジュールできます。

crontab と同様、at でも定型的コマンドの自動実行をスケジュールできます。しかし、crontab ファイルとは異なって、at ファイルはそれぞれのコマンドを 1 回実行して、その後はディレクトリから削除されてしまいます。したがって、at はそれぞれ 1 つのコマンドまたはスクリプトを実行して、後で調べられるようにそれらの出力を別々のファイルに送るのが最も効果的です。

at ジョブの実行を依頼するには、単にコマンド構文に従って at オプションで実行時刻を指定してください。at ジョブの実行依頼の詳細は、at コマンドの説明」を参照してください。

at コマンドは、入力されたコマンドまたはスクリプトを、現在の環境変数のコピーと一緒に /usr/spool/cron/atjobs/var/spool/cron/atjobs に格納します。作成された at ジョブには、ファイル名として、at 待ち行列内での位置を指定する長い数値と .a 拡張子からなる、たとえば 793962000.a のような文字列が与えられます。

cron デーモンは、通常 15 分間隔で定期的に atrun プログラムを実行します。atrun は次に、それぞれのスケジュールされた時刻に各 at ジョブを実行します。at ジョブが実行し終わると、それぞれのファイルが atjobs ディレクトリから削除されます。

システムアカウンティング

SunOS 5.x のシステムアカウンティングソフトウェアは、ユーザー接続時間、プロセスに使用された CPU 時間、およびディスク使用率についてのデータを収集および記録できるプログラムセットです。一度このデータを収集すると、レポートを生成して、システム使用率に対して料金を請求できます。

アカウンティングプログラムは、次のような目的に使用できます。

システムアカウンティングプログラムは、設定が済むと、ほとんどの場合自動的に実行されます。

アカウンティングの構成要素

アカウンティングユーティリティは、データから要約ファイルとレポートを生成する C 言語プログラムとシェルスクリプトを提供します。これらのプログラムは、ディレクトリ /usr/adm/acct/usr/lib/acct にあります。

日次アカウンティングによって、次の 4 種類のアカウンティングを簡単に実行できます。

アカウンティングの動作

自動アカウンティングを設定するには、cron で自動的に起動できるように、それらのスクリプトを crontab ファイルに入れます。

次に、アカウンティングが機能する概要を次に示します。

  1. システムを起動してからシャットダウンするまでの間に、システムの利用に関する (ユーザーログイン、実行されたプロセス、データの格納などの) raw データがアカウンティングファイルに収集されます。

  2. 定期的に (通常 1 日に 1 回)、/usr/lib/acct/runacct プログラムが各種のアカウンティングファイルを処理して、累積要約ファイルと日次アカウンティングレポートを生成します。この日次レポートは /usr/lib/acct/prdaily プログラムによって出力されます。

  3. runacct によって生成される累積要約ファイルは、monacct プログラムを実行して月に 1 回処理され出力できます。monacct によって生成される要約レポートは、月次またはその他の会計期間ベースのユーザーに対する効率的な課金手段になります。

アカウンティングソフトウェアを設定する手順については、第 22 章「アカウンティングの設定と管理作業」を参照してください。アカウンティングの機能の参照情報については、第 23 章「システムアカウンティングの参照情報」を参照してください。