Solaris Resource Manager 1.1 のシステム管理

サーバーの統合

最初の例では、3 つのコマンドを使用します。

liminfo

ユーザーのパスワード属性と制限値の情報を端末ウィンドウに表示します。

limadm

一連のユーザーの制限属性を変更したり、リミットデータベースエントリを削除したりします。

srmadm

Solaris Resource Manager の動作モードやシステム全体で調整可能なパラメータを表示または設定します。

srmstat

l ノードの動作情報を表示します。

データベースアプリケーションがそれぞれ動作する 2 つのサーバーを 1 つのマシンに統合するとします。両方のシステムを単純に同じマシンで実行するだけでもシステムは機能します。Solaris Resource Manager がない場合、Solaris オペレーティングシステムは、資源を同等に使用するとみなしてアプリケーションに割り当てるため、あるアプリケーションが他のアプリケーションの要求と競合してもこれを保護しません。しかし、Solaris Resource Manager には、アプリケーション資源の枯渇を防ぐ機構があります。Solaris Resource Manager は、そのために、databasesdb1db2 を参照する l ノードに接続してそれぞれのデータベースを起動します。このためには、3 つの管理専用ユーザーを新たに作成する必要があります。たとえば、これを databasesdb1db2 として、l ノードデータベースに追加します。l ノードは UNIX のユーザー ID に対応しているので、これらのユーザーを passwd ファイル (または、システムが NIS や NIS+ などのネームサービスを使用している場合には、パスワードマップ) にも追加する必要があります。ユーザー ID が passwd ファイルかパスワードマップに追加されているとして、管理専用ユーザー db1db2databases l ノードグループに割り当てるには、次のようにします。

#  limadm set sgroup=0 databases
#  limadm set sgroup=databases db1 db2

この場合、/usr/srm/bin がユーザーのパスにあるものとします。

図 9-1 サーバーの統合

Graphic

この他に定義されているグループがないので、現在のところ databases グループがマシンをすべて使用します。databases に対応する 2 つの l ノードがすでに動作していて、データベースアプリケーションを実行するプロセスを適切な l ノードに接続するには、データベースインスタンス用の起動スクリプトの srmuser コマンドで次のようにします。

# srmuser db1 /usr/bin/database1/init.db1
# srmuser db2 /usr/bin/database2/init.db2

データベース db1db2 を起動したら、srmuser コマンドを使って、データベースが正しい l ノードに接続され、正しく負担させるようにします (srmuser はこれを実行するプロセスの所有権には影響を与えません)。上のコマンドを実行するには、init.db1 を実行するのに必要な UNIX 上のアクセス権と、プロセスを l ノード db1 に接続するための管理上のアクセス権が必要です。ユーザーがログインし、データベースを使用すると、データベースの動作は l ノード db1db2 で徐々に増加します。

各 l ノードに対しデフォルトの割当数 1 を使用することによって、databases グループ内の使用量が時間の経過とともに平均化し、databasesdb1、および db2 に対するマシンの割り当てが等しくなります。具体的には、databases グループに対し割当数が 1 つあり、これを databases グループが所有しています。l ノード db1db2 にも、デフォルトの割り当てとしてそれぞれ 1 つの割当数が与えられます。databases グループには 2 つの割当数があるので、db1db2databases の資源から同じ割当数を得ます。この簡単な例では、割り当ての競合がないため、databases がシステム全体を使用します。

Database1 の動作にマシンの CPU 容量の 60 パーセントが必要であり、Database2 では容量の 20 パーセントが必要であるとします。システム管理者は、(アプリケーションが要求すれば) システムが少なくともこの量をそれぞれに割り当てるように指定できます。それには、次のようにして、db1 に割り当てる cpu.shares の数を増やします。

# limadm set cpu.shares=3 db1

これで databases グループの割当数は 4 つになりました。db1 に 3 つ、db2 に 1 つです。上のコマンドを実行すると、この変更が直ちに有効になります。Solaris Resource Manager は時間の経過とともに使用量を平均化しようとするので、l ノード db1 (Database1) に割り当てられる量が、実際には、ある期間に渡ってマシン資源が持つ権利の 60 パーセントを超えることがあります。しかし、減少大域パラメータによって異なりますが、これは長くは続きません。

任意の時点でこの動作を監視するには、別のウィンドウで liminfo (「一般的なアプリケーションサーバー」を参照) と srmstat コマンドを使用します。srmstat では、定期的に画面表示が更新されることに注意してください。srmstat の補足説明については、srmstat(1SRM) のマニュアルページを参照してください。

現在、マシンでは 2 つのデータベースアプリケーションが動作し、一方は資源の 75 パーセント、他方は 25 パーセントを受け取ります。root は一番上のグループヘッダーユーザーです。したがって、root として動作するプロセスは、要求すればシステム全体にアクセスできます。そのため、従来のように root プロセスがマシン全体を占有したりしないように、バックアップ、デーモンなどのスクリプトが動作する l ノードをさらに作成する必要があります。