Solaris のシステム管理 (上級編)

第 28 章 システムクラッシュ情報の管理 (手順)

この章では、Solaris 環境でシステムクラッシュ情報を管理する方法を説明します。

システムクラッシュ情報の管理に関連する手順については、システムクラッシュ情報 (作業マップ)を参照してください。

システムクラッシュ情報 (作業マップ)

次の作業マップは、システムクラッシュ情報の管理に必要な手順を示します。

作業 

説明 

参照先 

1. 現在のクラッシュダンプ構成を表示する  

dumpadm コマンドを使用して、現在のクラッシュダンプ構成を表示する

現在のクラッシュダンプ構成を表示する方法

2. クラッシュダンプ構成を変更する 

dumpadm コマンドを使用して、ダンプするデータの種類、システムが専用のダンプデバイスを使用するかどうか、クラッシュダンプファイルを保存するディレクトリ、およびクラッシュダンプファイルが書き込まれた後に残っていなければならない容量を指定する

クラッシュダンプ構成を変更する方法

3. クラッシュダンプファイルを調べる 

mdb コマンドを使用して、クラッシュダンプファイルを表示する

クラッシュダンプを検査する方法

4. (省略可能) クラッシュダンプディレクトリが一杯になった場合に復元する 

システムがクラッシュした際にメモリーイメージを格納する十分な空き容量が savecore ディレクトリになくても、一部の重要なシステムクラッシュダンプ情報を保存したい場合

クラッシュダンプディレクトリが一杯になった場合に復元する方法 (省略可能)

5. (省略可能) クラッシュダンプファイルの保存を有効または無効にする 

dumpadm コマンドを使用して、クラッシュダンプファイルの保存を有効または無効にする。デフォルトでは、クラッシュダンプファイルは保存される

クラッシュダンプの保存を無効または有効にする方法

システムクラッシュ (概要)

ハードウェアの障害、入出力の問題、ソフトウェアエラーなどが原因でシステムがクラッシュすることがあります。システムがクラッシュすると、システムはエラーメッセージをコンソールに表示し、物理メモリーのコピーをダンプデバイスに書き込みます。その後、システムは自動的にリブートします。システムがリブートすると、savecore コマンドが実行され、ダンプデバイスのデータを取り出して保存されたクラッシュダンプを savecore ディレクトリに書き込みます。このクラッシュダンプファイルは、サポートプロバイダにとって、問題を診断する上で貴重な情報となります。

システムクラッシュダンプファイル

システムクラッシュの後で自動的に実行される savecore コマンドは、ダンプデバイスからクラッシュダンプ情報を取り出し、unix.Xvmcore.X という 1 対のファイルを作成します。X はダンプの通し番号です。これらのファイルは 2 つで、保存されたシステムクラッシュダンプの情報を表します。

クラッシュダンプファイルはコアファイルと混同されることがあります。コアファイルは、アプリケーションが異常終了したときに書き込まれるユーザーアプリケーションのイメージです。

クラッシュダンプファイルは、あらかじめ決められたディレクトリに保存されます。これはデフォルトでは /var/crash/hostname です。以前の Solaris リリースでは、システムを手動で有効にして物理メモリーのイメージをクラッシュダンプファイルに保存しない限り、システムがリブートされた時にクラッシュダンプファイルが上書きされていました。このリリースでは、クラッシュダンプファイルの保存がデフォルトで有効です。

システムクラッシュ情報は dumpadm コマンドで管理します。詳細は、dumpadm コマンドを参照してください。

クラッシュダンプの保存

制御構造体、アクティブなテーブル、動作中またはクラッシュしたシステムカーネルのメモリーのイメージなど、カーネルの動作状況についての情報を調べるには、mdb ユーティリティを使用します。mdb を完全に使いこなすには、カーネルについての詳細な知識が必要ですが、このマニュアルでは説明を省きます。このユーティリティについては、mdb(1) のマニュアルページを参照してください。

savecore で保存したクラッシュダンプを購入先に送って、システムがクラッシュした原因を解析してもらうことも可能です。

dumpadm コマンド

dumpadm コマンドを使用して、Solaris 環境でシステムクラッシュダンプ情報を管理します。

次の表で dumpadm の構成パラメータを説明します。

ダンプパラメータ 

説明 

ダンプデバイス 

システムがクラッシュしたときにダンプデータを一時的に保存するデバイス。ダンプデバイスがスワップ領域でない場合は、savecore がバックグラウンドで実行されるため、ブートプロセスの速度が上がる

savecore ディレクトリ

システムのクラッシュダンプファイルを保存するディレクトリ 

ダンプ内容 

ダンプするメモリーデータの種類 

最小空き容量 

クラッシュダンプファイルを保存した後で savecore ディレクトリに必要な最小空き容量。空き容量を指定しないと、デフォルトで 1M バイトになる

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

dumpadm コマンドで管理するダンプ構成パラメータは、/etc/dumpadm.conf ファイルに保存されます。


注 –

/etc/dumpadm.conf ファイルは、手作業で編集しないでください。このファイルを手作業で編集すると、システムダンプ構成の整合性が失われる恐れがあります。


dumpadm コマンドの動作

dumpadm コマンドは、システム起動時に /etc/init.d/savecore スクリプトによって呼び出され、/etc/dumpadm.conf ファイルの情報に基づいてクラッシュダンプパラメータの構成を行います。

dumpadmコマンドは、/dev/dump インタフェースを通してダンプデバイスとダンプ内容を初期化します。

ダンプ構成が完了すると、savecore スクリプトは、/etc/dumpadm.conf ファイルの内容を解析してクラッシュダンプファイルのディレクトリの場所を探します。次に、 savecore を呼び出して、クラッシュダンプがあるかどうかを調べたり、クラッシュダンプディレクトリにある minfree ファイルの内容を確認したりします。

ダンプデバイスとボリュームマネージャ

可用性とパフォーマンス上の理由のため、Solaris ボリュームマネージャーで管理されている専用ダンプデバイスを構成しないでください。スワップ領域を Solaris ボリュームマネージャーの管理下に置くことはできますが (この方法を推奨します)、ダンプデバイスは別に確保してください。

システムクラッシュダンプ情報の管理

システムクラッシュ情報を処理する場合には、次の点に注意してください。

現在のクラッシュダンプ構成を表示する方法

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

  2. 現在のクラッシュダンプ構成を表示します。


    # dumpadm      Dump content: kernel pages
           Dump device: /dev/dsk/c0t3d0s1 (swap)
    Savecore directory: /var/crash/venus
      Savecore enabled: yes

    上記の出力例の意味は次のとおりです。

    • ダンプの内容は、カーネルメモリーページである

    • カーネルメモリーがスワップデバイス /dev/dsk/c0t3d0s1 にダンプされる。swap -l コマンドにより、すべてのスワップ領域を識別できる

    • システムクラッシュダンプファイルは /var/crash/venus ディレクトリに保存される

    • システムクラッシュダンプファイルの保存は有効に設定されている

クラッシュダンプ構成を変更する方法

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

  2. 現在のクラッシュダンプ構成を確認します。


    # dumpadm
          Dump content: kernel pages
           Dump device: /dev/dsk/c0t3d0s1 (swap)
    Savecore directory: /var/crash/pluto
      Savecore enabled: yes

    上記の出力は、Solaris 9 リリースを実行するシステムのデフォルトダンプ構成を示しています。

  3. クラッシュダンプ構成を変更します。


    # dumpadm -c content -d dump-device -m nnnk | nnnm | nnn% -n -s savecore-dir
    

    -c content

    ダンプするデータの種類を指定する。すべてのカーネルメモリーをダンプするには kernel を、すべてのメモリーをダンプするには all を、カーネルメモリーとクラッシュ時に実行中だったスレッドを持つプロセスのメモリーページとをダンプするには curproc を使用する。デフォルトはカーネルメモリー

    -d dump-device

    システムがクラッシュしたときに、ダンプデータを一時的に保存するデバイスを指定する。デフォルトのダンプデバイスは 1 次スワップデバイス  

    -m nnnk | nnnm | nnn%

    現在の savecore ディレクトリに minfree ファイルを作成することにより、クラッシュダンプファイルを保存する最小限の空き容量を指定する。このパラメータは K バイト (nnnk)、M バイト (nnnm)、またはファイルシステムサイズのパーセント (nnn%) で指定できる。savecore コマンドは、クラッシュダンプファイルを書き込む前にこのファイルを調べる。クラッシュダンプファイルを書き込むと空き容量が minfree の値より少なくなる場合、ダンプファイルは書き込まれず、エラーメッセージが記録される。このような問題を解決するには、クラッシュダンプディレクトリが一杯になった場合に復元する方法 (省略可能)を参照

    -n

    システムがリブートするときに、savecore を実行しないように指定する。このダンプ構成は推奨できない。システムクラッシュ情報がスワップデバイスに書き込まれているときに、savecore が実行されないと、クラッシュダンプ情報はシステムがスワップを開始すると上書きされる

    -s

    クラッシュダンプファイルを保存する別のディレクトリを指定する。デフォルトのディレクトリは /var/crash/hostname で、hostnameuname -n コマンドの出力

例 —クラッシュダンプ構成を変更する

次の例は、すべてのメモリーを専用のダンプデバイス /dev/dsk/c0t1d0s1 にダンプします。また、クラッシュダンプファイルを保存した後に残っていなければならない最小空き容量は、ファイルシステム容量の 10% です。


# dumpadm
      Dump content: kernel pages
       Dump device: /dev/dsk/c0t3d0s1 (swap)
Savecore directory: /var/crash/pluto
  Savecore enabled: yes
# dumpadm -c all -d /dev/dsk/c0t1d0s1 -m 10%
      Dump content: all pages
       Dump device: /dev/dsk/c0t1d0s1 (dedicated)
Savecore directory: /var/crash/pluto (minfree = 77071KB)
  Savecore enabled: yes

クラッシュダンプを検査する方法

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

  2. mdb ユーティリティを使用して、クラッシュダンプを検査します。


    # /usr/bin/mdb [-k] crashdump-file
    

    -k

    オペレーティングシステムのクラッシュダンプファイルの場合のカーネルデバッグモードを指定します。 

    crashdump-file

    オペレーティングシステムのクラッシュダンプファイルを指定します。 

  3. クラッシュ状態情報を表示します。


    # /usr/bin/mdb file-name
    > ::status
       .
       .
       .
    > ::system
       .
       .
       .

例 — クラッシュダンプを検査する

次の例は、mdb ユーティリティからのサンプル出力を示します。このシステムのシステム情報と /etc/system ファイルに設定される調整可能パラメータが表示されます。


# /usr/bin/mdb -k unix.0 
Loading modules: [ unix krtld genunix ip nfs ipc ptm ]
> ::status
debugging crash dump /dev/mem (64-bit) from ozlo
operating system: 5.9 Generic (sun4u)
> ::system
set ufs_ninode=0x9c40 [0t40000]
set ncsize=0x4e20 [0t20000]
set pt_cnt=0x400 [0t1024]

クラッシュダンプディレクトリが一杯になった場合に復元する方法 (省略可能)

ここでは、システムがクラッシュしてもメモリーイメージを格納する十分な空き容量が savecore ディレクトリにないが、それでも、一部の重要なシステムクラッシュダンプ情報を保存したい場合を考えます。

  1. システムがリブートした後で、スーパーユーザーとしてログインします。

  2. すでにサービスプロバイダに送ってある既存のクラッシュダンプファイルを削除して、savecore ディレクトリ (通常は /var/crash/hostname) を整理します。あるいは、savecore コマンドを実行し、十分な容量を持つ別のディレクトリを指定します (次の手順を参照してください)。

  3. 手作業で savecore コマンドを実行し、必要なら別の savecore ディレクトリを指定します。


    # savecore [ directory ]

クラッシュダンプの保存を無効または有効にする方法

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

  2. システム上のクラッシュダンプの保存を有効または無効にします。


    # dumpadm -n | -y
    

例 — クラッシュダンプの保存を無効にする

次の例は、システムでのクラッシュダンプの保存を無効にします。


# dumpadm -n
      Dump content: all pages
       Dump device: /dev/dsk/c0t1d0s1 (dedicated)
Savecore directory: /var/crash/pluto (minfree = 77071KB)
  Savecore enabled: no

例 — クラッシュダンプの保存を有効にする

次の例は、システムでのクラッシュダンプの保存を有効にします。


# dumpadm -y
      Dump content: all pages
       Dump device: /dev/dsk/c0t1d0s1 (dedicated)
Savecore directory: /var/crash/pluto (minfree = 77071KB)
  Savecore enabled: yes