Sun Enterprise 250 サーバーは、自動システム回復 (ASR) 機能によって、ハードウェア障害の発生後に動作を再開することができます。電源投入時自己診断 (POST: power-on self-test) 機能および OpenBoot 診断 (OBDiag) 機能が、障害の発生したハードウェア部品を自動的に検出し、OBP ファームウェアに組み込まれた自動構成機能によって、システムは障害のある部品を構成解除し、システムの動作を回復します。障害の発生した部品がシステムの動作に必要なものでない場合は、ASR 機能によって、システムはユーザーの介入なしに自動的に再起動します。このような「縮退起動」によって、システムは、障害のある部品の交換を求める保守呼び出しを生成した上で、動作を継続することができます。
電源投入処理中に障害のある部品が検出された場合、その部品は構成解除され、システムがその部品なしで動作を継続することができる場合は、起動処理が継続されます。動作中のシステムにおける特定の種類の障害 (プロセッサ障害など) によって、自動的にシステムリセットが発生する場合があります。そのような障害では、障害のある部品なしでシステムが動作できる場合に、ASR 機能によってシステムがただちに再起動します。これによって、障害のある部品が原因で、システム全体が停止したままになったり、システムに再度障害が発生することが防止されます。
縮退起動を可能にするために、OBP は IEEE 1275 クライアントインタフェースを使用して、デバイスを failed (障害発生) または disabled (無効) として「指定」します。これは、対応するデバイスツリーノードに適切な「状態」属性を設定することによって行います。UNIX の慣例により、このように指定されたサブシステムのドライバは起動されません。
したがって、障害のある部品が電気的に休止している (ランダムバスエラーや信号ノイズなどを発生しない) かぎり、システムは保守呼び出しを生成した上で、自動的に再起動して、動作を再開することができます。
2 つの特別なサブシステム (CPU およびメモリー) の構成解除では、OBP は、単にデバイスツリーに適切な「状態」属性を設定する以上の処置を行います。システムの他の部分が正しく動作するように、OBP は、リセットの直後にこれらの機能を初期化して、設定し直すか、省略する必要があります。この処置は、NVRAM 設定変数の post-status および asr-status の状態に基づいて行われます。post-status および asr-status は、POST または手動による指定 (「ASR に対する手動による優先指定」を参照) によって提供された優先指定情報を保持しています。
POST によって CPU が failed として指定されたか、ユーザーが CPU を disabled にした場合、OBP は、その CPU の主無効化ビットを設定し、次回の電源投入によるシステムリセットまで、CPU は無効な UPA デバイスになります。
システムメモリーの問題を検出し、特定することは、難しい診断作業の 1 つです。この診断作業は、同じメモリーバンクに容量の異なる DIMM が取り付けられている場合に、さらに複雑になります。診断の複雑化を避けるには、各メモリーバンクに同じ容量の DIMM を 4 枚取り付ける必要があります。メモリー部品に障害が発生すると、ファームウェアは障害の発生したバンク全体を構成解除します。
Sun Enterprise 250 サーバーに対する構成または構成解除は、ほとんどの場合、デフォルトの設定のままで正しく行われますが、上級のユーザーのために手動による優先指定機能も用意されています。構成解除の方法にはソフトとハードの 2 種類があるため、優先指定機能も 2 種類用意されています。
明確に 1 つのデバイスツリーノードとして表されるサブシステムの場合は、NVRAM 変数の asr-disable-list を使用してその機能を無効にすることができます。asr-disable-list は、空白で区切られたデバイスツリーパスのリストです。
ok setenv asr-disable-list /pci@1f,2000 /pci@1f,4000/scsi@3,1
Sun Enterprise 250 の OBP は、この情報を使用して、asr-disable-list 変数に設定されたノードのそれぞれについて状態属性を disabled に設定します。
ハード構成解除を必要とするサブシステム (CPU およびメモリー) に対しては、OBP コマンドの asr-enable および asr-disable を使用して、個々のサブシステムを有効または無効にします。
ソフト優先指定とハード優先指定の両方が可能な部品があります。そのような部品に対しては、できるだけハード優先指定コマンドの asr-enable および asr-disable を使用してください。
引数を指定せずに asr-disable または asr-enable コマンドを実行すると、引数として指定することができるパラメタの一覧が表示されます。
ok asr-disable ? Invalid subsystem name: Known 'enable/disable' subsystem components are: bank* bank3 bank2 bank1 bank0 dimm16 dimm15 dimm14 dimm13 dimm12 dimm11 dimm10 dimm9 dimm8 dimm7 dimm6 dimm5 dimm4 dimm3 dimm2 dimm1 dimm0 cpu* cpu1 cpu0 ok
新しいユーザーコマンドの .asr を使用して、手動による優先指定の状態を確認することができます。このコマンドを実行すると、現在の設定が表示されます。
ok asr-disable cpu1 bank3 ok .asr CPU0: Enabled CPU1: Disabled SC-MP: Enabled Psycho@1f: Enabled Cheerio: Enabled SCSI: Enabled Mem Bank0: Enabled Mem Bank1: Enabled Mem Bank2: Enabled Mem Bank3: Disabled PROM: Enabled NVRAM: Enabled TTY: Enabled SuperIO: Enabled PCI Slots: Enabled
OpenBoot には、auto-boot? というNVRAM 制御スイッチがあります。このスイッチは、リセット時にオペレーティングシステムを自動的に起動するかどうかを決定します。サンのハードウェアでは、このスイッチのデフォルト値は true です。
電源投入時の診断でシステムに問題があることが発見された場合、auto-boot? は無視され、ユーザーが手動で行わないかぎり、システムは起動しません。縮退起動では、この動作は明らかに適切でないため、Sun Enterprise 250 の OBP には、auto-boot-on-error? という別の NVRAM 制御スイッチも用意されています。このスイッチは、サブシステム障害が検出された場合にシステムに縮退起動を行わせるかどうかを制御します。縮退起動を有効にするには、auto-boot? および auto-boot-on-error? スイッチの両方を true に設定する必要があります。
ok setenv auto-boot-on-error? true
auto-boot-on-error? のデフォルト値は false です。このため、この設定を true にしないかぎり、システムが縮退起動を試みることはありません。また、縮退起動が有効であっても、致命的で回復不能なエラーが発生した場合は、システムが縮退起動を試みることはありません。致命的で回復不能なエラーの例として、システムの両方の CPU が無効になった場合 (POST または手動による優先指定の結果として) があります。
標準のシステムリセットプロトコルでは、NVRAM 変数の diag-switch? が true に設定されないかぎり、ファームウェア診断は完全に省略されます。diag-switch? のデフォルト値は false です。
Sun Enterprise 250 サーバーで ASR 機能を使用するためには、すべてのリセット処理でファームウェア診断 (POST/OBDiag) を実行できるようにしてください。diag-switch? を単純に true に変更する方法は副作用を伴うため (『OpenBoot 3.x コマンド・リファレンスマニュアル』を参照)、Sun Enterprise 250 の OBP には、POST/OBDiag と自動的に連動するリセット処理を選択するための diag-trigger という新しい NVRAM 変数が用意されています。以下の表に、diag-trigger 変数の設定と機能を示します。
diag-switch? が true に設定されていないかぎり、diag-trigger の効果はありません。
設定 |
機能 |
---|---|
power-reset(デフォルト) |
電源投入によるリセットに対してのみ診断を実行します。 |
error-reset |
電源投入によるリセット、致命的なハードウェアエラー、ウォッチドッグリセット処理の発生時にのみ診断を実行します。 |
soft-reset |
UNIX の init 6 や reboot コマンドによって発生するリセットなど、すべてのリセット (XIR リセットは除く) で診断を実行します。 |
none |
リセット処理による診断の自動起動を無効にします。この場合でも、電源投入時に Stop キーを押しながら d キーを押すか、正面パネルのキースイッチを「診断」位置にして電源を入れることによって、手動で診断を起動することができます。 |
以下の例のように diag-trigger 変数を設定すると、XIR リセットを除くすべてのリセットで POST および OpenBoot 診断が起動されます。
ok setenv diag-switch? true ok setenv diag-trigger soft-reset