• Windows の予期しない再起動が発生した原因について

    こんにちは。 Windows プラットフォーム サポートの服部です。

    Windows をご利用のお客様から、OS の予期せぬシャットダウンのお問い合わせをよくいただきますが、原因としてどのようなことが考えられるのかをご紹介します。

     サーバーやクライアント PC が突然再起動する現象が発生し、以下のイベントが記録されることがあります。

     -------------------------------------

    ソース: EventLog

    イベント ID: 6008

    メッセージ: 以前のシステム シャットダウン ( YYYY/MM/DD HH:MM:SS) は予期されていませんでした。

    -------------------------------------

     このイベントとは別に、以下のイベントが記録されている場合もあります。

     ----------------------------------------------

    ソース: Microsoft-Windows-Kernel-Power

    イベント ID:41

    メッセージ:システムは正常にシャットダウンする前に再起動しました。

    ----------------------------------------------

     

    これらのイベントからは前回のシャットダウンが正常ではなかったことはわかりますが、予期せぬシャットダウンが発生した理由はわかりません。

     ご存知の方も多くいらっしゃると思いますが、STOP エラー (ブルー スクリーン) により再起動が発生し、このようなイベントが記録された場合はメモリダンプから発生原因の調査をすることが有効です。

    ただし、メモリ ダンプを取得するよう設定しているにも関わらず、メモリ ダンプが生成されない場合もあります。また、STOP エラーが発生していないにも関わらず、予期せぬシャットダウンが発生する場合もあります。

     

    以下に、予期せぬシャットダウンが発生した際の考えられる原因およびメモリ ダンプが作成されない原因についてもご説明いたします。

      

    考えられる原因は?

    ------------------

     予期せぬシャットダウンのイベントが記録される考えられる原因としましては、大きく分けて、ソフトウェア要因とハードウェア要因の 2 種類に分類できます。

     

    - ソフトウェア要因

     Windows のシャットダウンプロセスは、通常、次の流れで行われます。

     

    1. デスクトップ上で動作するプロセスの停止

    2. サービスプロセスの停止

    3. デバイスの停止

    4. I/O 要求の抑止

    5. ファイルシステムキャッシュ情報のフラッシュ

    6. ハードウェアのリセット/電源 OFF

     

    Windows では、通常のシャットダウンとは異なるメカニズムでシャットダウンが行われると、EventLog サービスがソース: EventLog, ID 6008 のイベントを記録します。

    また、EventLog サービスが正常終了した場合でも、その後シャットダウン処理が正しく行われないと、ソース: Microsoft-Windows-Kernel-Power の ID:41 イベントを記録します。

    このイベントの検知については、技術情報がありますので、後述の参考文書 (KB2028504) をご参照ください。

     

    通常、STOP エラーによる再起動が発生した場合には、 Eventlog イベント ID: 6008 と共に、次のような System Error イベント ID: 1003 および Save Dump イベント ID: 1001 が記録され、メモリ ダンプが生成されます。

     

    <System Error イベント ID: 1003>

    イベントの種類: エラー

    イベント ソース: System Error

    イベント カテゴリ: (102)

    イベント ID: 1003

    説明:

    エラー コード xxxxxxxx、パラメータ1 xxxxxxxx、パラメータ2 xxxxxxxx, パラメータ3 xxxxxxxx、パラメータ4 xxxxxxxx.

     

    <Save Dump イベント ID: 1001>

    イベントの種類: 情報

    イベント ソース: Save Dump

    イベント カテゴリ: なし

    イベント ID: 1001

    説明:

    このコンピュータはバグチェック後、再起動されました。

    バグチェック: xxxxxxxx (xxxxxxxx, xxxxxxxx,
    xxxxxxxx, xxxxxxxx)

    ダンプが保存されました: C:\WINDOWS\MEMORY.DMP

     

    なお、現象時には、状況によりダンプ ファイルが取得できないことも考えられますが、その場合は、System Error イベント ID: 1003 のエラー イベントが記録されます。

     

    - 参考資料

    Source: System Error Event ID: 1003
    (Windows Operating System 5.2) - Technet Events And Errors Message Center:Message Details

    http://www.microsoft.com/technet/support/ee/transform.aspx?ProdName=Windows+Operating+System&ProdVer=5.2&EvtID=1003&EvtSrc=System+Error&LCID=1033

     

     メモリダンプ(memory.dmp)は既定の設定で C:\windows の直下に作成されますので、この情報をもとに、エラーの原因を調査することができます。

     一般的に、ソフトウェア要因にて STOP エラーが発生する要因は以下の 2 種類です。

     

    A.     OS、もしくはドライバーの動作過程にて、ハンドル出来ない例外 (Secondchance exception) が発生する。

    B.     OS、もしくはドライバーの動作過程にて、異常が発生したため、その処理内で意図的に STOP エラーを発生させる。

     

    A は、通常、OS 上で動作するアプリケーションだと、アプリケーション単体でクラッシュする状況です。これが OS の処理内で発生すると、システム全体が停止します。

    B は、そのような本来予定していないデータを検知するなど、「このまま OS を動作させていると、安定した動作が約束されない」という状況をプログラム内で想定しており、そのような事態になった場合に発生します。

    STOP エラーが発生した場合、「OS かドライバーの処理に問題があったためである」というのが原則です。

    ただし、問題を検知した場合も、どのようなコンポーネントが問題であったのか等、詳細はメモリダンプを解析して確かめる必要があります。

     

    原則としては、ソフトウェア要因の場合にはメモリダンプが記録されますが、ディスク ドライブの問題など、ダンプ自体が記録出来ない場合にはメモリダンプが記録されない場合もあります。このような場合には、原因の特定は困難です。

     

    - ハードウェア要因

     メモリ ダンプを取得するよう設定しているにも関わらず、メモリダンプが確認できない場合には、ハードウェア的な要因で発生している可能性が高いと考えられます。

     

    メモリ、システム ボード、CPU などに異常が発生している場合に、サーバー異常を検知するハードウェア側の自動システム復旧の機能により再起動が行われる場合がございます。

    この再起動によって、EventLog サービスの動作が中断され、ソース: EventLog, ID 6008 のイベントが記録されます。

    ただし、この場合は、OS 側でエラ―を検知した状況ではないため、STOP エラー等は発生せずダンプ ファイルも生成されません。

     

    メモリダンプが作成されない原因は?

    ----------------------------------

     上述のように、メモリダンプが作成されない原因として、ハードウェア要因により自動システム復旧の機能で再起動が行われたことが考えられます。

    この場合、STOP エラーの形跡が残らずメモリダンプも作成されない状況が発生しえます。

    また、メモリダンプの作成途中で自動システム再起動が行われた場合も同様の結果となりメモリダンプが作成されません。

    このような状況では、OS 側から原因を調べることはできず、ハードウェア観点から原因を確認していく必要があります。

     

    また、メモリダンプが作成されない原因としては、以下のような設定や構成上の問題である場合もございます。

     

    ・ブートドライブ上のページング ファイル(pagefile.sys)が存在しない

    ・ブートドライブ上のページング ファイルのサイズが十分でない

    ・ブートドライブ上のページング ファイル が断片化している

    ・メモリダンプがすでに存在し、上書きをしない設定になっている([既存のファイルに上書きする] チェック ボックスがオフ)

    ・メモリダンプの保存先に、存在しないフォルダやドライブが指定されている

    ・メモリダンプの保存先に、Memory.dmp ファイル作成に必要な空き容量がない

     

    予期せぬシャットダウンのイベントが記録されました場合、お問い合わせ環境で確認いただきたい項目としては以下の 2 点になります。

     

    1.ハードウェア要因により自動システム復旧の機能で再起動が行われたかどうか確認します

    2.ダンプを生成する設定や構成上の問題がないか確認します

     

    上記の内容が予期せぬシャットダウン発生の問題についてご参考になれば幸いです。

     

    補足情報

    ------------------------

    Windows 7 および Windows Server 2008 R2 環境にて、以下の既知の問題が報告されています。

     

    文書番号: 2549760

    タイトル:レジストリの WaitToKillServiceTimeout 値は Windows 7 または Windows サーバー 2008 R2 で機能しません。

    http://support.microsoft.com/kb/2549760/ja
    (機械翻訳)

    WaitToKillServiceTimeout registry valuedoes not work in Windows 7 or in Windows Server 2008 R2

    http://support.microsoft.com/kb/2549760/en-us

     

    下記のレジストリ値を設定することで、サービス コントロール マネージャが、サービスがシャットダウン要求を完了するまで待つ時間を設定することが出来ます。(ミリ秒単位で指定します。)

     

    HKLM\SYSTEM\CurrentControlSet\Control\WaitToKillServiceTimeout 

     

    この設定値は、既定値として12秒に設定されておりましたが、Windows 7 または Windows サーバー 2008 R2 では、この設定値が適切に処理されておらず、設定値の有り無しにかかわらず、5秒にてサービスが強制的に終了されてしまいます。

    その為に、例えば多くのサービスがインストールされている状態などにおいて、特定のアプリケーション サービスの終了処理に時間がかかってしまうと、イベントログサービスの停止処理にも影響を与える可能性があります。この場合に ID 6008 が記録される場合もあります。

     修正プログラム (技術情報 2549760) をインストールするだけで、正しい既定値である12秒に設定されます。

    また、修正を適用することで該当レジストリ値を変更して待機時間のチューニングが可能となります。

     

    Windows 7 または Windows Server 2008 R2 をご利用のお客様は上記もご参考いただければと存じます。

     

    -参考情報

     文書番号: 972110

    タイトル: Windows Server 2003 でカーネル ダンプファイルまたは完全メモリ ダンプ ファイルを生成する方法

    URL: http://support.microsoft.com/kb/972110/ja

     

    文書番号: 130536

    タイトル: クラッシュ後Windows でメモリ ダンプ ファイルが保存されない

    URL: http://support.microsoft.com/kb/130536/ja

     

    文書番号: 824674

    タイトル: Windows Server 2003 でカーネル メモリダンプを保存する際にカウンタが 99 で止まる

    URL: http://support.microsoft.com/kb/824674/ja

     

    文書番号: 2028504

    タイトル:Windows 7 または Windows Server 2008 R2 で Windows カーネルイベント ID 41 エラー"システムは正常にシャットダウンする前に再起動しました" が発生する

    URL: http://support.microsoft.com/kb/2028504/ja

  • クラスター ハートビート通信の失敗と OS の負荷について

    *1 2013/12/15 VSS の修正プログラムの情報を追記しました。
    こんにちは。Windows プラットフォーム サポートの加藤です。

    Windows Server 2008 以降のクラスター環境において、OS の負荷が原因で、クラスター ハートビート通信が失敗するお問い合わせをいただくことがよくあります。
    また、場合によっては、一部のノードのクラスター サービスが停止し、フェールオーバーが発生する場合があります。

    クラスター ハートビート通信の詳細とハートビートのタイムアウト変更手順については、下記 Blog にてご紹介しているため、ここでは省略させていただきます。
    フェールオーバー クラスターのハートビートについて
    http://blogs.technet.com/b/askcorejp/archive/2012/03/22/3488080.aspx

    クラスター ハートビート通信は、上記の Blog でも触れられているように、既定で 5 秒間通信が途絶えるとハートビート通信の失敗と判断され、エラーが記録されます。
    「通信が途絶える」という点については、ネットワーク上の問題以外にも、OS の負荷が著しく増加した場合にハートビート パケットの送信が一定期間できなくなり、ハートビート通信が失敗と判断されることがあります。

    ハートビートの通信を妨げる高負荷の原因としては様々な要因がありますが、弊社製品では VSS (Volume Shadow Copy Service) が、大容量のディスクに対し SnapShot を作成した際に、この問題が発生する事例が報告されております。Snapshot が作成されるタイミングとしては、該当ボリュームのバックアップを取得しようとした際や、共有フォルダのシャドウ コピーを有効にしている場合があります。
    また、Windows Server 2012 では、重複排除機能を有効にした場合にも VSS が使用されます。

    Snapshot 作成時には、一時的にボリュームに対する I/O を停止する必要があるため、できる限り高い優先度で素早く実行する必要があります。そのため、ハートビートなどの Snapshot 作成以外の処理が待たされ、結果としてハートビート通信が失敗する場合があります。 また Snapshot 対象のボリュームのサイズが大きければ大きいほど作成処理にかかる時間も長くなるため、結果としてハートビート通信の失敗が発生しやすくなります。

    弊社ではこの問題を回避するために VSS の処理を見直し、Snapshot 作成時にほかの処理が待たされないよう変更しました。(2013年9月11日にリリース)
    下記の公開情報で修正プログラムがダウンロードできますので、Snapshot 作成時にハートビート通信の失敗が発生している環境に適用し、現象が回避できるか確認をお願いいたします。

    I/O failures occur when you create a snapshot for a large volume in Windows Server 2012 or Windows Server 2008 R2 SP1
    http://support.microsoft.com/kb/2871085/en-us
    ※ Windows Server 2012 R2 ではすでにこの修正プログラムと同様の動作に変更されております。

    上記修正プログラムは Windows Server 2008 R2 SP1 以降の OS のみ適用可能なため、それ以外の OS をご利用の場合や、上記修正プログラムで改善しない場合には、負荷を下げるか、ハートビートの閾値を大きくします。
    VSS が負荷の原因であった場合には、Snapshot 作成にかかる時間を短くする必要があります。CPU など、ハードウェアをより高性能なものに変更するといった方法もありますが、それ以外の現実的な対処としては、対象のボリューム サイズを小さくすることです。トータルのサイズを小さくできない場合には、ボリュームを複数に分割し、それぞれの SnapShot 作成のタイミングをずらすことで回避可能です。

    この現象を抑制するための最適なボリュームのサイズについては、実際にはハードウェアのスペックなどに依存するため、具体的なサイズをお伝えすることは難しいです。そのため、推奨するボリューム サイズや、上限サイズなども特に定義はしておりません。
    参考情報といたしまして、弊社の事例にて、5 TB のボリュームの Snapshot 作成時にハートビート通信が失敗したという環境がございました。
    なお、VSS 以外の負荷原因を特定するには、現象発生時のパフォーマンスログが調査に有効な情報となります。

    ボリュームの分割が難しい場合や、VSS 以外の負荷で発生しており、その負荷を下げることができない場合には、負荷が発生する時間帯に、ハートビートの閾値と間隔を延ばしていただく回避策の実施をご検討ください。
    バックアップなどの負荷がかかるジョブを実行する前に、ハートビートの閾値を延ばすコマンドを組み込んだバッチファイルをタスク スケジューラなどで実行し、ジョブ完了後に、閾値を元に戻すコマンドを組み込んだバッチファイルを実行する方法などが回避策として有効です。

    ハートビートのタイムアウト値については推奨値はなく、環境に合わせて柔軟に変更可能ですので、OS やネットワーク負荷によるハートビート通信が失敗している環境では、適宜変更をお願いします。

  • シャットダウン イベント追跡ツールのコメント記入欄について

    こんにちは。Windows プラットフォームサポートの世古です。

    今回は Window Server 2012 にてシャットダウンまたは再起動の際にコメントを記入する方法についての記事となります。

    Windows Server 2003 以降ではイベント追跡ツールによってシャットダウンまたは再起動の際にコメントを記入する事ができます。このコメント欄にユーザーがシャットダウン理由を記入する事で管理者が後でなぜその時にシャットダウンが行われたかイベントビューアーから確認出来ます。

    Windows Server 2012 でも引き続きこの機能は有効ですが、シャットダウンの方法によって、従来通りのコメント入力を行う方法と、コメントを省略し、より簡易的に理由を選択できる方法と、動作が分かれております。

    具体的には、チャームの「設定」より「電源」を選択した場合には、コメントを省略し、より簡易的に理由を選択できる方法でシャットダウンが行われます。

     

     

    もし管理上、従来通りのコメント入力を行いたい場合は Alt+F4 またはコマンドよりコメントを記入する事が可能です。

    また、VBScript と組み合わせてシャットダウン画面を表示する方法もございますので、これらの方法についてそれぞれご紹介させていただきます。

     

    - ショートカットキーを利用する方法

    デスクトップ上でショートカットキー (Alt + F4) 操作によって、コメント欄付きのシャットダウンウィンドウを表示する事が出来ます。

     

     

    - コマンドを利用する方法

    タスクやバッチジョブ等と組み合わせて実行する場合には、以下の shutdown コマンドを使用してコメントを入力する方法が有効です。

          Shutdown /c "コメント" /s

    コマンドを実行しても結果等は表示されませんが、暫くするとサインオフの画面が表示されシャットダウンが実施されます。シャットダウン時には入力した“コメント“が表示されます。

       

     

    - VBScriptを利用する方法

    GUI よりコメント記入欄を表示する場合には、VBScript を使用する事でシャットダウンのアイコンを作成する方法もございます。

    以下の VBScript のコードをメモ帳より .vbs ファイルとして保存する事で、[Alt] + [F4] キーを押した際と同様の結果が得られるアイコンを作成出来ます。

    --- VBScript のコード ---

    dim objShell
    set objShell = CreateObject("shell.application")
    objshell.ShutdownWindows
    set objShell = nothing

    ------

    -  補足:VBScript ファイルのアイコンをショートカットにピン止めするには

    Windows Server 2012 では、VBScript のファイル自体またはショートカットをピン止めする事ができません。

    ピン止めするには以下を手順をご参照ください。

    1.         VBScript のファイルを任意の場所に置きます。

    2.         新規作成でデスクトップにショートカットを作成します。

    3.         以下の様な画面が出てくるので、”cscript + VBScript の配置場所”を指定し、「完了」をクリックします。

     

    4.         ショートカットの名前を指定し、「完了」を押します。

    すると以下の様なアイコンが出来ます。

     

    5.         アイコンを右クリックし、「スタートにピン留め」を選択する事でピン留めが可能です。

    さらにアイコンの画像を変更したい場合には次の手順に進んでください。

    6.         ショートカットを右クリックし「プロパティ」をクリックします。

    7.         「ショートカット」タブの「アイコンの変更」ボタンをクリックします。

    8.         「アイコンの変更」画面より「参照」ボタンをクリックします。

    9.         %SystemRoot%\system32\SHELL32.dll を選択し、「開く」をクリックします。

    10.       「アイコンの変更」画面よりアイコンを選択し、「OK」をクリックし、更にシャットダウンのプロパティ画面でも「OK」をクリックし画面を閉じます。ショートカットのアイコンが変更されます。

    11.       アイコンを右クリックし「スタートにピン留め」をクリックする事で、以下のようにタスクバーにショートカットを配置する事が出来ます。

     

     

    チャームの「設定」より「電源」を選択した場合の理由を選択できる項目は以前のバージョンよりも多くご用意しておりますが、選択肢に該当項目が無い、または手動でコメントを残したい場合にはこの記事で紹介いたしました方法をご利用ください。

     

  • HPC サポート機能の変更

    こんにちは。Windows プラットフォーム サポートの三宅です。

     

    今回は HPC Pack 2008 R2 にて大幅に変更されたサポート機能について紹介させていただきます。

     

    HPC Pack 2008 R2 SP2 までは、HPC ジョブ スケジューラ サービスにアクセスするための機能

    として HPC Basic Profile Web Service がサポートされておりました。

    しかしながら、HPC Pack 2008 R2 SP2 で、新たに Web Service Interface という機能が

    追加されたため、HPC Pack 2008 R2 SP3 から HPC Basic Profile Web Service のサポートが

    終了いたしました。そのため、HPC Pack 2008 R2 SP3 以降は、Web Service Interface を

    お使いいただく必要がございます。

     

    大幅にサポート機能が変更されることにより、お客様には構築や運用にて

    お手数をお掛けすることになりますが、何卒宜しくお願いいたします。

    Web Service Interface をお使いになる際、参考となる資料を以下にご紹介いたしますので、

    ご参照いただけますと幸いでございます。なお、Web Service Interface に関するご質問、

    また構築の際にトラブルが発生した場合には、弊社までお問い合わせください。

     

    = 参考資料 =

    - サポート機能変更に関する記述

    HPC Server Basic Profile Web Service Operations Guide

    http://technet.microsoft.com/en-us/library/cc972837.aspx

     

    - HPC ヘッド ノードでの設定方法

    Install the Microsoft HPC Pack Web Components

    http://technet.microsoft.com/en-us/library/hh314627.aspx

     

    - Web Service Interface の REST API に関して

    Creating and Submitting Jobs by Using the REST API in Windows HPC Server 2008 R2

    http://social.technet.microsoft.com/wiki/contents/articles/7737.creating-and-submitting-jobs-by-using-the-rest-api-in-windows-hpc-server-2008-r2.aspx

     

    - Web Service API サンプル コード (HPC2008R2.SampleCode.zip)

    HPC Pack 2008 R2 SDK with Service Pack 4

    http://www.microsoft.com/en-us/download/details.aspx?id=29992