SSP の処理は、一連のデーモンとコマンドによって実行されます。この章では、SSP の仕組みと、SSP の SSP 3.3 デーモン、プロセス、コマンド、システムファイルについて説明します。デーモン、コマンド、システムファイルの詳細は、『Sun Enterprise 10000 SSP 3.3 リファレンスマニュアル』を参照してください。
/opt/SUNWssp 内のファイルを変更すると、システムに障害が発生し重大な損傷を与えることがあります。
SSP の起動時に発生するイベントを以下に示します。
SSP (モニター、CPU/ディスク、CD-ROM) の電源を入れる。SSP は自動的に起動する。
SSP の起動プロセスでシステムが実行レベル 2 に入ると、/etc/rc2.d/s99ssp 起動スクリプトが呼び出される。このスクリプトが、ssp_startup を起動する。
ssp_startup が SSP デーモンの machine_server、fad、cbs、straps、snmpd、edd を起動する。このスクリプトは、制御ボードの初期設定を開始するために cb_reset も呼び出す。
edd は、Sun Enterprise 10000 システムの制御ボードに対するイベントの監視を開始し、制御ボードで実行されるイベント検出タスクが生成するイベントを待機し、SSP 上で応答動作スクリプトを実行してイベントに応える。
SSP startup complete メッセージが表示されたら、domain_create や bringup などの SSP 3.3 コマンドが使用可能になる。
SSP はイベント検出デーモン edd(1M) を使用して、Sun Enterprise 10000 システムを監視します。SSP は起動のたびに /etc/rc2.d/S99ssp を実行します。/etc/rc2.d/S99ssp は起動スクリプト $SSPETC/ssp_startup.sh を通じて edd(1M) を読み込みます。起動スクリプトは、特定のファイルと Sun Enterprise 10000 システムが使用可能か確認し、環境変数を設定した後、edd(1M) を起動します。edd(1M) は、以下の構成ファイルから初期制御パラメタを取得します。
$SSPVAR/etc/platform_name/edd.erc には、Sun Enterprise 10000 プラットフォームの構成情報が格納されます。
$SSPVAR/etc/platform_name/domain_name/edd.erc には、特定のドメインの構成情報が格納されます。イベント応答構成ファイル (edd.erc) では、イベント検出プログラムがイベントにどのように応答するかを指定します。
$SSPVAR/etc/platform_name/edd.emc には、edd(1M) の監視対象となるイベントがリストされています。
ドメインに障害が発生すると、edd(1M) は bringup(1M) スクリプトを呼び出します。bringup(1M) スクリプトは、電源投入時自己診断 (POST: Power-on self test) プログラムを実行し、Sun Enterprise 10000 のコンポーネントをテストします。続いて、obp_helper(1M) デーモンを使用して、環境変数 SUNW_HOSTNAME で指定されているドメインに OBP (OpenBoot PROM) をダウンロードして実行します。この流れが発生するのは、ドメインに (たとえば、カーネルパニックの後で) 障害が発生し、自動的に再起動した場合だけです。停止または緊急停止の後では、bringup(1M) を手動で実行する必要があります。これによって、OBP がダウンロードされ実行されます。
構成済みのプロセッサのブートバス SRAM に download_helper を読み込むのは、obp_helper(1M) の役割です。これによって、すべてのプロセッサが起動され、そのうち 1 つは起動プロセッサとして指定されます。obp_helper(1M) は、 download_helper の助けを借りて、Sun Enterprise 10000 システムのメモリーに OBP を読み込み、起動プロセッサで OBP を起動します。obp_helper(1M) と OBP の詳細は、「OBP デーモン」を参照してください。
OBP の主な役割は、大容量記憶装置またはネットワークからオペレーティングシステムを起動し、構成することです。ハードウェアとソフトウェアを対話式にテストするための各種機能も OBP によって提供されます。起動手順の一環として、OBP は全システムボードの全 SBus スロットをチェックし、デバイスツリーを作成します。デバイスツリーは、オペレーティングシステムに渡されます。
Sun Enterprise 10000 システムの制御ボードインタフェースへのアクセスは、TCP/IP プロトコルを使用し、Ethernet 接続を介して行われます。制御ボードエグゼクティブ (CBE) が制御ボード上で動作します。SSP 上の制御ボードサーバー (cbs(1M)) がサービス要求を行います。SSP 制御ボードサーバーは、SSP クライアントのサーバーになります。
図 11-1 に Sun Enterprise 10000 システムのクライアントサーバーアーキテクチャーを示します。
SSP がサポートするプラットフォームに対して、edd(1M) のインスタンスが 1 つあります。プラットフォーム上の各ドメインに対して、obp_helper(1M) と netcon_server(1M) のインスタンスが 1 つずつあります。
電源投入時自己診断 (POST: Power-on self-test) は、Sun Enterprise 10000 システムの初期化されていないハードウェアを検出してテストし、必要に応じて初期化済みシステムに組み込んで、OBP (OpenBoot PROM) に渡します。これに加え、POST はテストが成功したコンポーネントのリストも OBP に渡します。blacklist(4) ファイルに含まれているコンポーネントは渡されません。
hpost(1M) は SSP に常駐の実行可能プログラムであり、POST の動作とシーケンスを制御します。hpost(1M) はオプションファイル .postrc (postrc(4) を参照) から指示行を読み取ってから、ホストとのやり取りを開始します。
hpost(1M) を bringup(1M) コマンドの外部で実行すると、システムに障害が発生することがあります。hpost(1M) を単独で実行しても、プラットフォームの状態は調べられません。また、システムはリセットされる可能性があります。
POST は SSP にある blacklist(4) を調べてから、システムを起動可能な状態にします。blacklist(4) には、POST によって構成されるべきでない Sun Enterprise 10000 コンポーネントが指定されています。
POST はテストの結果を「ボード記述子配列」と呼ばれる内部データ構造体に格納します。ボード記述子配列には Sun Enterprise 10000 システムの主要なコンポーネントの状態情報が含まれています。UltraSPARCTM モジュールの状態情報もこの中に含まれています。
POST は、センタープレーンへの各システムボードの接続と切り離しを、1 度に 1 つずつ試みます。その後、テストをパスしたシステムボードのみをセンタープレーンに接続します。
SSP の中で、中心的な役割を果たすのが SSP 3.3 デーモンです。各デーモンの詳細は、それぞれのマニュアルページを参照してください。以下に概略を示します。
表 11-1 デーモン
名称 |
説明 |
---|---|
cbs |
制御ボードサーバー (cbs) は、SSP で動作するクライアントプログラムが Sun Enterprise 10000 の制御ボードにアクセスできるようにします。 |
edd |
イベント検出デーモン (edd) は、制御ボード上のイベントの監視を開始します。監視タスクがイベントを検出すると、edd(1M) は応答動作スクリプトを実行します。 |
fad |
ファイルアクセスデーモン (fad) は、SSP 構成ファイルの監視、読み取り、書き込みを必要とする SSP クライアントのために分散ファイルアクセスサービスを提供します。 |
machine_server |
プラットフォームおよびドメインのメッセージを適切なメッセージファイルに送信します。machine_server(1M) を参照してください。 |
netcon_server |
すべての netcon(1M) クライアントの接続ポイントとなります。netcon_server(1M) は制御ボードプロトコルによって OBP と通信します。また、netcon_server(1M) は、TCP プロトコルによって OS と通信します。 |
obp_helper |
OpenBoot を実行します。OBP が終了すると、obp_helper(1M) も終了します。両者の実行中、obp_helper(1M) は OBP に対し、NVRAM シミュレーション、IDPROM シミュレーション、時刻などのサービスを提供します。 |
snmpd |
SNMP プロクシーエージェントデーモン (snmpd) は、UDP ポートをチェックして着信要求を検出し、 Ultra-Enterprise-10000.mib に指定されているオブジェクトのグループにサービスを提供します。 |
straps |
SNMP トラップシンクサーバー (straps) は、SNMP トラップポートを調べて着信トラップメッセージを検出し、受信したメッセージをすべてのクライアントに転送します。 |
xntpd / ntpd |
NTP(Network Time Protocol) デーモン (xntpd) は、時間同期サービスを提供します (ntpd は、Solaris 2.6、7 および 8 オペレーティング環境のデーモンです)。クライアントをこのサービスに接続すると、時刻が自動的に調整されます。このサービスを使用して、SSP とドメインの時刻を同じにします。xntpd(1M) および『Network Time Protocol User's Guide』を参照してください。 |
イベント検出デーモン (edd(1M)) は、Sun Enterprise 10000 システムの信頼性、可用性、保守性 (RAS: Reliability、Availability、Serviceability) を実現する上で核となるコンポーネントです。edd(1M) は、Sun Enterprise 10000 制御ボード上のイベントの監視を開始し、制御ボードで実行されるイベント検出監視タスクが生成するイベントを待機します。検出されたイベントに対しては、SSP 上で応答動作スクリプトを実行して応答します。イベント発生の条件およびイベントに対する応答は、すべて設定することができます。
edd(1M) は、イベント管理のメカニズムを提供するだけであり、イベントの検出・監視を直接行うわけではありません。イベントの検出は、制御ボードで実行されるイベント監視タスクによって処理されます。edd(1M) は、監視対象のイベントの種類を指定するベクトルをダウンロードして、イベント監視タスクを構成します。イベントの処理は、応答動作スクリプトによって行われます。このスクリプトは、SSP 上で edd(1M) がイベントを検出したときに呼び出されます。
RAS 機能は、相互に協調するいくつかのプログラムによって実現されます。プラットフォーム内の制御ボードは、制御ボードエグゼクティブ (CBE) プログラムを実行します。CBE は Ethernet を介して SSP 上の制御ボードサーバー (cbs(1M)) プログラムと通信します。これらの 2 つのコンポーネントによって、プラットフォームと SSP の間のデータ通信が実現されます。
SSP には、制御ボードサーバーおよび SNMP (Simple Network Management Protocol) エージェントを介して制御ボードへアクセスするための一連のインタフェースが用意されています。edd(1M) は、制御ボードサーバーインタフェースを使用して、制御ボードエグゼクティブ上にイベント検出監視タスクを構成します (図 11-2)。
構成されたイベント検出監視タスクは、プラットフォーム内のさまざまな状態 (環境の状態、シグニチャーブロック、電圧、パフォーマンスデータなど) を調べます。イベント発生の原因となる状態変化が検出されると、適切な情報を収めたイベントメッセージが作成され、SSP で実行されている制御ボードサーバー (cbs(1M)) に送られます。イベントメッセージを受け取った制御ボードサーバーは、イベントを SNMP エージェントに送り、SNMP エージェントは SNMP トラップを生成します (図 11-3)。
SNMP トラップを受け取った edd(1M) は、応答動作を開始するかどうかを決定します。応答動作が必要な場合は、edd(1M) は適切な応答動作スクリプトをサブプロセスとして実行します (図 11-4)。
応答動作スクリプトの実行中に、同じ種類または関連する種類のイベントメッセージが作成されることがあります。同様のイベントに対する応答動作スクリプトがすでに実行中である場合は、重要性の低いイベントメッセージは無視できます。たとえば、edd(1M) が過熱イベントに対する応答動作スクリプトを実行しているとします。この応答動作スクリプトが実行されているときに、イベント監視スクリプトが別の過熱イベントを検出することがあります。edd(1M) は最初の応答スクリプトが完了するまでは、(最初と同様の過熱状態に対して発生した) 別の過熱イベントには応答しません。応答すべきイベントを必要に応じて取り除くのは、アプリケーション (edd(1M) など) の役割です。イベント処理のサイクルは、この時点で完了します。
制御ボードサーバー (CBS) は、SSP 上で動作するサーバーです。SSP で実行されるクライアントプログラムから Sun Enterprise 10000 システムへのアクセスは、cbs(1M) を通じて行われます。 cbs(1M) は、Sun Enterprise 10000 システムのいずれかの制御ボードで実行されている制御ボードエグゼクティブ (CBE) と直接通信します。cbs(1M) はクライアントの要求を、CBE が理解する制御ボード管理プロトコル (CBMP) に変換します。以下の図 (図 11-5) に CBS と CBE の接続方法を示します。
cbs(1M) は cb_config(4) ファイルに基づいて、管理するプラットフォームを特定し、やり取りの相手となる制御ボードを特定します。cb_config(4) ファイルでは、SSP の管理対象となるプラットフォームを指定します。このファイルはドメインの管理ツールおよびコマンドにより自動的に保守されるので、直接変更しないでください。制御ボードの変更を行うには、ssp_config(1M) に cb オプションを指定して使用します。
ファイルアクセスデーモン (fad(1M)) を使用するのは、ssp_to_domain_hosts(4) または他の構成ファイルを更新するときです。fad(1M) は、SSP 構成ファイルの監視、読み取り、書き込みを必要とする SSP クライアントのために、ファイルのロックなどの分散ファイルアクセスサービスを提供します。クライアントがファイルをロックした場合は、そのクライアントがロックを解除しない限り、他のクライアントが該当ファイルをロックすることはできません。
NTP デーモン (Solaris 2.6、7 および 8 オペレーティング環境では xntpd(1M)) は、SSP とドメインの間で時刻を同期させるデーモンです。OBP は、ドメインの起動時に SSP から時刻を取得し、NTP はその時点から時刻の同期をとります。
構成は、システム管理者が指定する情報に基づいて行われます。NTP サブネット内で動作する Sun Enterprise 10000 システムがなく、インターネットへのアクセスもなく、かつラジオクロックも使用していない場合は、Sun Enterprise 10000 システムに対し、内蔵クロックをリファレンスクロックとして使用するように設定することができます。ただし、通常、SSP は Sun Enterprise 10000 システムに対し SSP の内蔵クロックを使用します。
NTP パッケージは、ローカルのリファレンスクロックをサポートしています。つまり、他のシステムやネットワークのクロックではなく、ローカルのクロックをポーリングすることができます。ポーリングは、ネットワークのループバックインタフェースを通じて行われます。IP アドレスの最初の 3 つの数字は、127.127.1 です。IP アドレスの最後の数字は、クロック同期に使用する NTP stratum を示します。
SSP とドメインの設定を実行する場合は、SSP を stratum 4 に設定します。ドメインは、SSP へのピアとして設定し、ローカルクロックは 2 階層多い stratum に設定します。
たとえば、SSP の /etc/opt/SUNWxntp/ntp.conf ファイルの server/peer 行は以下のようになります。
server 127.127.1.0 fudge 127.127.1.0 stratum 8 |
ドメインの /etc/inet/ntp.conf ファイルには、以下のような行を追加できます。
peer ssp_name server 127.127.1.0 fudge 127.127.1.0 stratum 10 |
NTP デーモンの詳細は、『Network Time Protocol User's Guide』および『Network Time Protocol Reference Manual』を参照してください。
SSP では、OpenBoot (OBP) はハードウェア PROM ではなく、ファイルから SSP に読み込まれます。従来の OBP NVRAM と idprom (hostid) も、SSP のファイルで置き換えられます。
OBP ファイルは、SunOS のリリースによって異なるディレクトリパスにあります。 SunOS 5.6 は Solaris 2.6 オペレーティング環境に、SunOS 5.7 は Solaris 7 オペレーティング環境に、SunOS 5.8 は Solaris 8 オペレーティング環境に対応します。uname -r によって、使用中の SunOS のバージョンを確認できます。たとえば、SunOS 5.7 では、OBP ファイルは以下のディレクトリにあります。
/opt/SUNWssp/release/Ultra-Enterprise-10000/5/7/hostobjs/obp
このパスの /5/7 の部分は、SunOS のバージョン番号に対応します。リリースに含まれるオぺレーティングシステムのバージョンが異なれば、この部分も変わります。
bringup(1M) は、obp_helper(1M) をバックグラウンドで起動します。新しい obp_helper(1M) が起動されると、以前の obp_helper(1M) は終了します。obp_helper(1M) は download_helper を実行してから、OBP をダウンロードして実行します。
起動プロセッサ以外のプロセッサを起動するには、obp_helper(1M) が必要です。obp_helper(1M) はブートバス SRAM (BBSRAM) を介して OBP と通信し、要求に応じて、クロックの提供、擬似 EEPROM の内容の読み取りと書き込み、マルチプロセッサモードではスレーブプロセッサの解放を実行します。スレーブプロセッサを解放する場合は、obp_helper(1M) が download_helper をすべてのスレーブプロセッサの BBSRAM に読み込み、スレーブプロセッサであることを示す情報を BBSRAM に書き込んで、そのプロセッサを起動する必要があります。このプロセッサは、ブートバスコントローラのリセットを解放することで起動します。
詳細は、マニュアルページの obp_helper(1M) と bringup(1M)、および 「download_helper ファイル」を参照してください。
必要な環境変数のほとんどは、ssp ユーザーがログインするときに設定されます。表 11-1 に環境変数を示します。
表 11-2 環境変数
SUNW_HOSTNAME |
SSP によって制御されるドメインの名前。この環境変数には、操作を実行しているドメインのホスト名を設定します。 |
SSPETC |
SSP 関連の各種ファイルを収めたディレクトリへのパス。この環境変数の値は変更しないでください。 |
SSPLOGGER |
メッセージログ用の構成ファイルの格納場所。この環境変数の値は変更しないでください。 |
SSPOPT |
SSP パッケージのバイナリファイル、ライブラリファイル、オブジェクトファイルへのパス。この環境変数の値は変更しないでください。 |
SSPVAR |
変更可能なファイルを収めたディレクトリへのパス。この環境変数の値は変更しないでください。 |
ドメイン内で実行される実行可能ファイルは、 /opt/SUNWssp/release/Ultra-Enterprise-10000/os_version ディレクトリにあります。各プログラムのマニュアルページは、ドメイン内に格納されています。
この節に示したコマンドの中には、実際には使用または変更しないものも含まれています。これらは他のプログラムから内部的に呼び出されるコマンドであり、コマンド行から実行するものではありません。
これらのコマンドを間違って使用すると、システムに障害や損傷を与えるおそれがあります。コマンドの機能について明確にわからない場合は、購入先にお問い合わせください。
これらのファイルは、hpost(1M) によってダウンロードされる実行可能ファイルです。
download_helper によって、BBSRAM にではなく、ドメインが使用するメモリーにプログラムをダウンロードすることが可能になります。この結果、メモリー上に再配置する方法を知らなくても、ホストプログラムを実行できるようになります。プログラムは BBSRAM より大きくても問題ありません。
download_helper の機能は、BBSRAM のメールボックスを通じてプロトコルを実行することで実現します。このプロトコルには、物理メモリーから仮想メモリーへのマッピング、また BBSRAM のバッファーと仮想メモリー間のデータの移動のためのコマンドが用意されています。マッピングが完了すると、実行のスレッドは、SSP が提供するエントリポイントにおいて新しいプログラムに渡されます。これ以降、download_helper は BBSRAM に常駐し、リセット処理を実行します。通常、download_helper は使用しません。download_helperを使用するのは obp_helper(1M) デーモンだけです。詳細は、マニュアルページの obp_helper(1M) を参照してください。
obp ファイルはドメインの起動プロセスで重要な役割を果たします。OBP は SBus を調べて、どこにどのデバイスが接続されているのかを確認し、この情報をデバイスツリーの形でオペレーティングシステムに渡します。デバイスツリーを表示するには、prtconf コマンド (詳細は、SunOS のマニュアルページ prtconf(1M) を参照) を使用します。
obp は、SBus カード上の FCode の解釈と実行も行います。FCode は、起動の完了に必要な、簡単な読み込み可能なドライバを提供します。また、FCode は起動時に必ず読み込まれるカーネルデバッガも提供します。