この章では、ソフトウェアの問題の解決についての概要を説明します。システムクラッシュの問題の解決とシステムメッセージの表示などが含まれます。
この章の内容は次のとおりです。
ソフトウェアの問題の解決手順については、次を参照してください。
Solaris オペレーティング環境が動作しているシステムがクラッシュした場合、core ファイルを含む、可能なかぎりの情報を購入先に提供してください。
最も重要なことは、次のとおりです。
システムのコンソールメッセージを書き取ります。
システムがクラッシュした場合は、システムをリブートする前に、まずコンソール画面にメッセージが表示されていないかを確かめてください。このようなメッセージは、クラッシュした原因を解明するのに役立ちます。システムが自動的にリブートして、コンソールメッセージが画面から消えた場合でも、システムエラーログファイルを表示すれば、これらのメッセージをチェックできます。システムエラーログファイルは、/var/adm/messages (または /usr/adm/messages) に自動的に生成されます。システムエラーログファイルを表示する方法の詳細は、「システムメッセージを表示する方法」を参照してください。
クラッシュが頻繁に発生して、その原因を特定できない場合は、システムのコンソールや /var/adm/messages ファイルから得られるすべての情報を収集して、購入先に問い合わせください。購入先に問い合わせるときに必要な問題解決のための情報の完全なリストについては、「システムクラッシュの問題の解決」を参照してください。
システムのクラッシュ後にリブートが失敗する場合は、第 70 章「ソフトウェアで発生するさまざまな問題の解決」を参照してください。
次のように入力してディスクとの同期をとり、リブートします。
ok sync
システムのクラッシュ後にリブートが失敗する場合は、第 70 章「ソフトウェアで発生するさまざまな問題の解決」を参照してください。
savecore コマンドを実行して、スワップ領域に書き込まれたクラッシュ情報を保存します。
# savecore
クラッシュダンプを自動的に保存する方法については、第 69 章「システムクラッシュ情報の生成と保存」を参照してください。
システムの問題を特定するために、次の質問に答えてください。クラッシュしたシステムの問題を解決するためのデータを収集するには、「システムクラッシュを解決するためのチェックリスト」を参照してください。
表 68-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.1 は messages.2 に、messages.2 は messages.3 にそれぞれ変更されます。その時点の /var/adm/messages.3 は削除されます。
/var/adm ディレクトリは、メッセージやクラッシュダンプなどのデータを含んでいる大きなファイルを格納するため、多くのディスク容量を消費します。/var/adm ディレクトリが大きくならないようにするために、そして将来のクラッシュダンプが保存できるために、不要なファイルを定期的に削除しなければなりません。crontab を使用すれば、この作業は自動化できます。この作業を自動化する方法については、「クラッシュダンプファイルを削除する方法」と第 59 章「システムイベントのスケジュール設定」を参照してください。
システムクラッシュまたはリブートによって生成された最近のメッセージを表示するには、dmesg コマンドを使用します。
$ dmesg
あるいは、more コマンドを使用して、メッセージを 1 画面ごとに表示します。
$ more /var/adm/messages
詳細は、dmesg(1M) のマニュアルページを参照してください。
$ dmesg Nov 12 16:53 SunOS Release 5.6 Version A [UNIX(R) System V Release 4.0] copyright (c) 1983-1997, Sun Microsystems, Inc. DEBUG enabled WARNING: cannot load psm xpcimach mem = 32376K (0x1f9e000) avail mem = 25247744 root nexus = i86pc Unable to install/attach drive `isa' eisa0 at root NOTICE: eisa: DMA buffer-chaining not enabled NOTICE: IN i8042_acquire NOTICE: out i8042_acquire NOTICE: IN i8042_release NOTICE: about to enable keyboard NOTICE: out i8042_release . . .
/etc/syslog.conf ファイルを変更すると、さまざまなシステムプロセスが生成するエラーメッセージを記録できます。デフォルトでは、/etc/syslog.conf は、多くのシステムプロセスのメッセージが /var/adm メッセージファイルに格納されるように指示しています。クラッシュとブートのメッセージも、同様にこのファイルに格納されます。/var/adm メッセージを表示する方法については、「システムメッセージを表示する方法」を参照してください。
/etc/syslog.conf ファイルは、タブで区切られた 2 つの列から構成されています。
facility.level ... |
action |
facility.level |
機能またはメッセージや状態のシステムでの出所。コンマで区切られた機能のリスト。機能の値については表 68-2 を参照。level は、記録する状態の重要度や優先順位を示す。優先レベルについては表 68-3 を参照 |
action |
動作フィールドは、メッセージが転送される場所を示す |
次は、デフォルトの /etc/syslog.conf ファイルの例です。
user.err /dev/console user.err /var/adm/messages user.alert `root, operator' user.emerg *
最も一般的なエラー状態の出所を表 68-2 に示します。最も一般的な優先順位を、重要度順に表 68-3 に示します。
表 68-2 syslog.conf メッセージのソース機能
出所 |
説明 |
---|---|
カーネル |
|
認証 |
|
すべてのデーモン |
|
メールシステム |
|
lp |
スプールシステム |
ユーザープロセス |
Solaris 2.6 リリース以降、/etc/syslog.conf ファイルで有効化できる syslog 機能の数の制限は解除されます。以前のリリースでは、機能の数は 20 個に制限されていました。
優先順位 |
説明 |
---|---|
emerg |
システムの緊急事態 |
alert |
すぐに修正が必要なエラー |
crit |
致命的なエラー |
err |
その他のエラー |
info |
情報メッセージ |
debug |
デバッグ用の出力 |
none |
この設定は出力を記録しない |
スーパーユーザーになります。
任意のエディタで、/etc/syslog.conf ファイルを編集します。syslog.conf(4) のマニュアルページに説明されている構文に従って、メッセージの出所、優先順位、およびメッセージの記録場所を追加または変更します。
変更を保存して編集を終了します。
次の /etc/syslog.conf 行は、Solaris インストール中にデフォルトで提供されます。
user.err /dev/console user.err /var/adm/messages user.alert `root, operator' user.emerg *
これは、次のユーザーメッセージが自動的に記録されることを意味します。
ユーザーエラーは、コンソールに出力されて、/var/adm/messages ファイルにも記録されます。
早急な処置が必要なユーザーメッセージ (alert) は、root と operator に送信されます。
ユーザー緊急メッセージは、各ユーザーに送信されます。