Solaris Resource Manager 1.1 のシステム管理

第 4 章 ブート手順

Solaris のブート手順では、Solaris Resource Manager ソフトウェアのさまざまな要素をいろいろな時点で有効にします。主な手順は次のとおりです。

Solaris Resource Manager を使用しない場合の起動

Solaris Resource Manager を動作させずにシステムを起動しなければならない場合には、/etc/system ファイルの initclass 変数を SHR ではなくタイムシェアリング (TS) に変更します。これを簡単に行うには、boot コマンドの -a (ask) オプションを使用します。これによって、システムファイルを要求するプロンプトが表示されます。他のプロンプトに対しては、システムファイル名の入力プロンプトが表示されるまで Return キーを押してデフォルト値を設定します。システムファイル名を要求するプロンプトが表示されたら、etc/system.noshrload (最初のスラッシュは不要) と入力します。次はこの手順の例です。

ok boot -a  
Booting from: sd(0,0,0) -a 
Enter filename [kernel/unix]:
Enter default directory for modules
 [/platform/SUNW,UltraSPARC/kernel /kernel /usr/kernel]: 
SunOS Release 5.6 Version ... [UNIX(R) System V Release 4.0]
Copyright (c) 1983-1997, Sun Microsystems, Inc. 
Name of system file [etc/system]: etc/system.noshrload
root filesystem type [ufs]: 
Enter physical name of root device 
 [/sbus@1,f8000000/esp@0,800000/sd@3,0:a]:

/etc/system.noshrload は、Solaris Resource Manager をインストールしたときに作成された /etc/system のバックアップコピーです。それ以後に /etc/system を変更した場合には、/etc/system.noshrload も変更する必要があります。この変更を行わないと、Solaris Resource Manager での変更が反映されません。

# diff /etc/system /etc/system.noshrload 
< # enable srm 
< set initclass="SHR"

ブートシーケンスのイベント

Solaris Resource Manager では、マルチユーザーモードに切り替わる間に発生するイベントのシーケンスが特に重要です。Solaris Resource Manager システムを正しく確立するには、次の手順が必要です。

  1. srmadm コマンドを使って Solaris Resource Manager を構成し、有効にします。

    この時点で、リミットデータベースが開かれて、SHR スケジューラが有効になります。この手順については、srmadm を使って Solaris Resource Manager を有効にする」を参照してください。

  2. lost l ノード (srmlost) と idle l ノード (srmidle) を割り当てます。

  3. Solaris Resource Manager のデーモンを起動します。

    この手順については、「Solaris Resource Manager のデーモンの起動」を参照してください。

  4. 他のシステムデーモンを適切な l ノードで起動します。

上の手順 1 から 3 で使用するデフォルトのスクリプトは、付録 A 「Solaris Resource Manager スクリプトの例」 を参照してください。

システムデーモンプロセス

デーモン (通常永続的に実行するシステム保守プロセス) を root l ノード以外の l ノードに接続することが重要です。root l ノードに接続されているプロセスには特殊なスケジュールが行われ、要求するすべての CPU が必ず与えられます。したがって、CPU をかなり占有する可能性があるプロセスを root l ノードに接続することは避けてください。デーモンをそれぞれの l ノードに接続すれば、中央のシステム管理者が適切な CPU の割当数を割り当てることができます。

ブート手順では、新しいプロセスは親プロセスの l ノード接続を継承します。init プロセスは root l ノードに接続されているので、それ以後のすべてのプロセスもこれを継承します。プロセスを他の l ノードに接続するためには、Solaris Resource Manager の初期化スクリプトを実行し、リミットデータベースを開かなければなりません。しかし、その場合でも、実際に接続するためには、プロセスが (login(1) のように) setuid システムコールを明示的に行うか、(srmuser(1SRM) コマンドのように) 指定した l ノード への接続を Solaris Resource Manager に明示的に要求する必要があります。setuid ファイルモードビットが有効の状態でプログラムを実行すると、l ノードの接続は変更されません。

この結果、システム起動時に自動的に起動されるすべてのシステムプログラムは root l ノードに接続されます。これは望ましくない結果をもたらすことがあります。root l ノードに接続されているプロセスが CPU をかなり占有するようになると、他のプロセスの実行に顕著な影響があるからです。したがって、ブート手順の間にデーモンプロセスを起動する場合は、srmuser コマンドでそれらのプロセスを呼び出して、それぞれの l ノードに明示的に接続する必要があります。この場合にはそれらの実ユーザー ID または実効ユーザー ID には影響しません。

次に例を示します。

/usr/srm/bin/srmuser network in.named

起動スクリプトにある named(1M) デーモンの呼び出しをこの行で置き換えることができます。そのためには、「ネットワーク」のユーザーアカウントと l ノードが事前に確立されている必要があります。

srmadm を使って Solaris Resource Manager を有効にする

システム管理者は、srmadm コマンドを使って、Solaris Resource Manager の操作状態やシステム全体の構成を制御できます。このコマンドは、通常、実行レベル 2 または 3 に移行するときに、Solaris Resource Manager の init.d(4) スクリプト /etc/init.d/init.srm の中で使用されます。この目的は、システムをブートするたびにすべてのパラメータに適切な値を設定し、ユーザーがシステムにアクセスする前に Solaris Resource Manager システムを有効にすることです。さらに、srmadm コマンドは、Solaris Resource Manager の大域パラメータを管理するときにも使用します。srmadm を使って設定できるパラメータのリストについては、srmadm(1MSRM) のマニュアルページを参照してください。Solaris Resource Manager の init.d スクリプトで srmadm コマンドを実行すると、次のことが行われます。

srmadm コマンドの一般的な呼び出し方法については、srmadm による Solaris Resource Manager の大域パラメータ」を参照してください。

Solaris Resource Manager のデーモンの起動

Solaris Resource Manager ユーザーモードデーモンは、limdaemon(1MSRM) プログラムです。このプログラムは、通常、実行レベル 2 または 3 への移行時に Solaris Resource Manager の init.d スクリプトの最後の手順として呼び出されます。これは、カーネルによって呼び出される SYS クラスの srmgr システムプロセスとは違うので注意してください。次の ps(1) リストには、両方のプロセスが表示されています。

# ps -efc | egrep 'limdaemon|srmgr' 
root     4     0  SYS  60 18:42:14 ?        0:05 srmgr    
root    92     1  SHR  19 18:42:32 ?        0:41 limdaemon
 

limdaemon プログラムは次のことを行います。

limdaemon は、Solaris Resource Manager のログインセッションの通知を受け取ると、すべてのユーザーの端末接続時間を監視し、それぞれの接続制限時間をチェックします。接続制限時間に近づくと、そのユーザーに通知メッセージを送信します。制限時間に達すると、猶予時間後にそのすべてのプロセスを停止し、ログアウトします。

limdaemon プログラムは、接続時間使用量を減少させます。接続時間制限値を適用する場合は、その端末デバイスカテゴリの使用量を減少させる必要があります。limdaemon コマンド行オプションの詳細は、limdaemon の使い方」を参照してください。