Solaris のシステム管理 (第 2 巻)

第 30 章 ソフトウェアの問題解決の概要

この章では、ソフトウェアの問題の解決についての概要を説明します。システムクラッシュの問題の解決とシステムメッセージの表示などが含まれます。

この章の内容は次のとおりです。

ソフトウェアの問題の解決方法の参照先

ソフトウェアの問題の解決手順については、次の章を参照してください。

システムクラッシュの問題の解決

Solaris オペレーティング環境が動作しているシステムがクラッシュした場合は、クラッシュダンプファイルを含む、可能なかぎりの情報を購入先に提供してください。

システムがクラッシュした場合の対処方法

最も重要なことは、次のとおりです。

  1. システムのコンソールメッセージを書き取ります。

    システムがクラッシュした場合は、システムをリブートする前に、まずコンソール画面にメッセージが表示されていないか確認してください。このようなメッセージは、クラッシュした原因を解明するのに役立ちます。システムが自動的にリブートして、コンソールメッセージが画面から消えた場合でも、システムエラーログファイルを表示すれば、これらのメッセージをチェックできます。システムエラーログファイルは、/var/adm/messages (または /usr/adm/messages) に自動的に生成されます。システムエラーログファイルを表示する方法の詳細は、「システムメッセージを表示する方法」を参照してください。

    クラッシュが頻繁に発生して、その原因を特定できない場合は、システムのコンソールや /var/adm/messages ファイルから得られるすべての情報を収集して、購入先に問い合わせください。購入先に問い合わせるときに必要な問題解決のための情報の完全なリストについては、「システムクラッシュの問題の解決」を参照してください。

    システムのクラッシュ後にリブートが失敗する場合は、第 32 章「ソフトウェアで発生するさまざまな問題の解決」を参照してください。

  2. 次のように入力してディスクとの同期をとり、リブートします。

    ok sync
    

    システムのクラッシュ後にリブートが失敗する場合は、第 32 章「ソフトウェアで発生するさまざまな問題の解決」を参照してください。

  3. savecore コマンドを実行して、スワップ領域に書き込まれたクラッシュ情報を保存します。

    # savecore
    

クラッシュダンプを自動的に保存する方法については、第 31 章「システムクラッシュ情報の生成と保存」を参照してください。

問題の解決に使用するデータの収集

システムの問題を特定するために、次の質問に答えてください。クラッシュしたシステムの問題を解決するためのデータを収集するには、「システムクラッシュを解決するためのチェックリスト」を参照してください。

表 30-1 システムクラッシュに関するデータの収集

質問 

説明 

問題を再現できるか 

この質問は、再現可能なテストケースは実際のハードウェア問題をデバッグするために重要であることが多いために重要である。購入先では、特殊な計測機構を使用してカーネルを構築して問題を再現し、バグを引き起こし、診断、および修正できる 

Sun 以外のドライバを使用しているか 

ドライバは、カーネルと同じアドレス空間で、カーネルと同じ特権で動作する。したがって、ドライバにバグがあると、システムクラッシュの原因となることがある 

クラッシュの直前にシステムは何を実行していたか 

システムが通常でないこと (新しい負荷テストの実行など) を行なったり、通常よりも高い負荷がシステムにかかったりした場合、クラッシュの原因となることがある 

クラッシュ直前に、異常なコンソールメッセージが表示されたか 

システムは、実際にクラッシュする前に問題の兆候を示すことがある。この情報は役立つことが多い 

/etc/system ファイルに調整パラメタを追加したか

調整パラメタは、システムクラッシュの原因となることがある。たとえば、共有メモリーセグメントを増やした結果、システムが限度以上の多くのメモリーを割り当てようとした 

問題は最近発生するようになったか 

そうであれば、問題の原因は、システムの変更 (たとえば、新しいドライバ、新しいソフトウェア、作業負荷の変化、CPU のアップグレード、メモリーのアップグレードなど) にある可能性がある 

システムクラッシュを解決するためのチェックリスト

クラッシュしたシステムの問題を解決するためのデータを収集するときは、次のチェックリストを使用します。

項目 

ユーザーのデータ 

コアファイルが生成されているか 

 

オペレーティングシステムのリリースと適切なソフトウェアアプリケーションのリリースレベルを確認する 

 

システムのハードウェアを確認する 

sun4d システムの prtdiag 出力を含める

 

パッチはインストールされているか。そうであれば、showrev -p 出力を含める

 

問題を再現できるか 

 

Sun 以外のドライバをシステムで使用しているか 

 

クラッシュ直前のシステムの動作は 

 

クラッシュ直前に、異常なコンソールメッセージが表示されたか 

 

/etc/system ファイルにパラメタを追加したか

 

問題は最近発生するようになったか 

 

システムのメッセージの表示

システムがクラッシュしたとき、次のようなメッセージがシステムのコンソールに表示されることがあります。

panic: error message

error message は、crash(1M) のマニュアルページに説明されているパニックエラーメッセージの 1 つです。

さらに頻繁ではありませんが、パニックメッセージではなく、次のメッセージが表示されることがあります。

Watchdog reset !

エラー記録デーモン syslogd は、自動的に様々なシステムの警告やエラーをメッセージファイルに記録します。デフォルトでは、これらのシステムメッセージの多くは、システムコンソールに表示されて、/var/adm (または /usr/adm) に格納されます。システム記録を設定することによって、これらのメッセージを格納する場所を指示できます。詳細は、「システムのメッセージ記録をカスタマイズする方法」を参照してください。これらのメッセージは、失敗の予兆のあるデバイスなど、システム障害をユーザーに警告できます。

/var/adm ディレクトリには、いくつかのメッセージファイルが含まれています。最も新しいメッセージは、/var/adm/messages (および messages.0) にあり、最も古いメッセージは、messages.3 にあります。一定の期間 (通常は 10 日) ごとに、新しい messages ファイルが作成されます。messages.0 のファイル名は messages.1 に、messages.1messages.2 に、messages.2messages.3 にそれぞれ変更されます。その時点の /var/adm/messages.3 は削除されます。

/var/adm ディレクトリは、メッセージやクラッシュダンプなどのデータを含んでいる大きなファイルを格納するため、多くのディスク容量を消費します。/var/adm ディレクトリが大きくならないようにするために、そして将来のクラッシュダンプが保存できるようにするために、不要なファイルを定期的に削除しなければなりません。crontab を使用すれば、この作業は自動化できます。この作業を自動化する方法については、「クラッシュダンプファイルを削除する方法」第 21 章「システムイベントのスケジュール設定」を参照してください。

システムメッセージを表示する方法

システムクラッシュまたはリブートによって生成された最近のメッセージを表示するには、dmesg コマンドを使用します。

$ dmesg

あるいは、more コマンドを使用して、メッセージを 1 画面ごとに表示します。

$ more /var/adm/messages

詳細は、dmesg(1M) のマニュアルページを参照してください。

例 - システムメッセージを表示する

次の例は、dmesg コマンドからの出力を示しています。

$ dmesg
SunOS Release 5.7 Version Generic [UNIX(R) System V Release 4.0]
Copyright (c) 1983-1998, Sun Microsystems, Inc.
vac: enabled in write through mode
cpu0: FMI,MB86904 (mid 0 impl 0x0 ver 0x4 clock 110 MHz)
mem = 57344K (0x3800000)
avail mem = 53268480
Ethernet address = 8:0:20:7c:d8:60
root nexus = SUNW,SPARCstation-5
iommu0 at root: obio 0x10000000
sbus0 at iommu0: obio 0x10001000
espdma0 at sbus0: SBus slot 5 0x8400000
espdma0 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000
esp0:	esp-options=0x46
esp0 at espdma0: SBus slot 5 0x8800000 sparc ipl 4
esp0 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000
sd3 at esp0: target 3 lun 0
sd3 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/...
	root on /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/...
obio0 at root
          .
          .
          .

システムのメッセージ記録のカスタマイズ

/etc/syslog.conf ファイルを変更すると、様々なシステムプロセスが生成するエラーメッセージを記録できます。デフォルトでは、/etc/syslog.conf は、多くのシステムプロセスのメッセージが /var/adm メッセージファイルに格納されるように指示しています。クラッシュとブートのメッセージも、同様にこのファイルに格納されます。/var/adm メッセージを表示する方法については、「システムメッセージを表示する方法」を参照してください。

/etc/syslog.conf ファイルは、タブで区切られた 2 つの列から構成されています。

facility.level ...
action

facility.level

機能またはメッセージや状態のシステムでの出所。コンマで区切られた機能のリスト。機能の値については表 30-2 を参照。level は、記録する状態の重要度や優先順位を示す。優先レベルについては表 30-3 を参照

action

動作フィールドは、メッセージが転送される場所を示す 

次は、デフォルトの /etc/syslog.conf ファイルの例です。

user.err					/dev/console
user.err					        /var/adm/messages
user.alert					     `root, operator'
user.emerg					     *

最も一般的なエラー状態の出所を表 30-2 に示します。最も一般的な優先順位を、重要度順に表 30-3 に示します。

表 30-2 syslog.conf メッセージのソース機能

出所 

説明 

kern

カーネル 

auth

認証 

daemon

すべてのデーモン 

mail

メールシステム 

lp

スプールシステム 

user

ユーザープロセス 


注 -

Solaris 2.6 リリース以降、/etc/syslog.conf ファイルで有効化できる syslog 機能の数の制限は解除されます。以前のリリースでは、機能の数は 20 個に制限されていました。


表 30-3 syslog.conf メッセージの優先レベル

優先順位 

説明 

emerg

システムの緊急事態 

alert

すぐに修正が必要なエラー 

crit

致命的なエラー 

err

その他のエラー 

info

情報メッセージ 

debug

デバッグ用の出力 

none

この設定は出力を記録しない 

システムのメッセージ記録をカスタマイズする方法

  1. スーパーユーザーになります。

  2. 任意のエディタで、/etc/syslog.conf ファイルを編集します。syslog.conf(4) のマニュアルページで説明している構文に従って、メッセージの出所、優先順位、およびメッセージの記録場所を追加または変更します。

  3. 変更を保存して編集を終了します。

例 - システムのメッセージ記録をカスタマイズする

次の /etc/syslog.conf 行は、Solaris インストール中にデフォルトで提供されます。

user.err					/dev/console
user.err					        /var/adm/messages
user.alert					     `root, operator'
user.emerg					     *

これは、次のユーザーメッセージが自動的に記録されることを意味します。