Solaris Resource Manager 1.1 のシステム管理

リミットデータベース

リミットデータベースは、Solaris Resource Manager ソフトウェアがすべての資源制御を行うときに使用するユーザー情報のデータベースです。このデータベースにはユーザー ID ごとに 1 つの l ノードが含まれ、ユーザー ID を索引にして直接アクセスします。大きな数字のユーザー ID を持つ l ノードがあると、リミットデータベースが非常に大きくなることがあります。ユーザー ID が連続していないシステムでは、リミットデータベースに大きな間隙または穴があります。しかし、sparse ファイルをサポートするファイルシステムでは、リミットデータベースを sparse ファイルとして格納できます。したがって、実際には、ファイルの「空」領域にはディスクブロックは割り当てられません。ufs ファイルシステムは sparse ファイルをサポートしますが、tmpfs ファイルシステムはサポートしません。リミットデータベースの保存や復元で sparse ファイルがどのような意味を持つかについては、「リミットデータベースの保存と復元」を参照してください。

新しいユーザーを作成したら、新しい l ノードを必ず作成する必要があります。

リミットデータベースの作成

Solaris Resource Manager の起動ファイル (/etc/init.d/init.srm) は、最初に呼び出されたときに初期リミットデータベースを作成します。それ以後の起動でも、データベースが存在しない場合は作成します。

リミットデータベースは通常、/var/srm ディレクトリに作成されます。

リミットデータベースは、root と、root が所有するグループが所有し、所有者だけが読み取れるようにするべきです。ファイルに書き込むのはスーパーユーザー資格を持つカーネルコードだけなので、書き込み権は必要ありません。


注意 - 注意 -

Solaris Resource Manager の起動ファイルにユーザーが書き込み権を持っていると、システムセキュリティが損われることがあります。


リミットデータベースの保存と復元

リミットデータベースは sparse ファイルの場合があるので、コピーするときには注意が必要です。sparse ファイルをサポートしないユーティリティで書き込まれたファイルは、通常、大量のディスク容量を使用します。ファイルの空領域は一連のゼロとして読み込まれ、書き直されるときには、空領域ではなく実ブロックとして書き込まれるからです。tar(1)cpio(1)cp(1) などのユーティリティでのファイルのコピーや、バックアップ、復元の場合などです。ufsdump(1M)ufsrestore(1M) などのプログラムでは、「穴」のまま空領域として残せます。

limreport を使って ASCII ファイルを生成し、limadm を使ってこの ASCII ファイルから元のファイルを作成し直しても、リミットデータベースのバックアップと復元を行うことができます。たとえば、次のようにします。

# limreport 'flag.real' - lname preserve > /var/tmp/savelnodes 

このコマンドでは、パスワードマップの各ユーザーに対応する l ノードの ASCII 表示として /var/tmp/savelnodes を作成します。パスワードマップにエントリがない l ノードは保存されません。少なくともパスワードマップのすべてのユーザー ID に対しては l ノードを作成してください。

次のコマンドでは、保存したデータから l ノードを再作成します。

# limadm set -f - < /var/tmp/savelnodes

保存しなかった l ノードは削除されないので、この方法を使えば、リミットデータベース全体ではなく l ノードを選択して保存し復元できます。

limreportlimadm コマンドの使い方については、limreport コマンドと limadm コマンド」で詳しく説明します。管理者にとって、これらのコマンドの使い方を知っておくと、l ノードの保存や復元をするときに便利です。リミットデータベースに定義された l ノード構造の解釈に変更があったときに、これらのコマンドを使用することがあるからです。

リミットデータベースの内容は通常のシステム操作の間に定期的に変更されるので、システムが停止しているときや、シングルユーザーモードのときにバックアップをとる必要があります。同様に、リミットデータベース全体を復元する場合には、システムがシングルユーザーモードのときのように、Solaris Resource Manager が使用されていないときに行う必要があります。