適用対象: ✔️ Windows VM
この記事では、Microsoft Azure で Windows 仮想マシン (VM) を再起動するときに発生する可能性がある "再起動中"、"シャットダウン中"、または "サービスの停止" メッセージの問題を解決する手順について説明します。
現象
ブート診断を使用して VM のスクリーンショットを表示すると、スクリーンショットに "再起動中"、"シャットダウン中"、または "サービスの停止" というメッセージが表示されることがあります。
原因
Windows では、シャットダウン プロセスを使用してシステム メンテナンス操作が実行され、更新、ロール、機能などの変更が処理されます。 この重要なプロセスは、完了するまで中断しないことをお勧めします。 更新/変更の数と VM のサイズによっては、プロセスに時間がかかることがあります。 プロセスが停止している場合は、OS が破損している可能性があります。 プロセスを中断するのは、プロセスに時間がかかりすぎている場合のみにします。
ソリューション
プロセスのメモリ ダンプの収集
同じリージョンから作業用 VM にアタッチされている新規または既存のデータ ディスクに、Procdump ツールをダウンロードします。
必要なファイルが含まれているディスクを作業用 VM からデタッチし、破損した VM にそのディスクを接続します。 このディスクはユーティリティ ディスクと呼ばれています。
シリアル コンソールを使用して、次の手順を完了します。
管理 PowerShell を開き、停止時に応答が停止されたサービスを確認します。
Get-Service | Where-Object {$_.Status -eq "STOP_PENDING"}
管理 CMD 上で、応答しないサービスの PID を取得します。
tasklist /svc | findstr /i <STOPING SERVICE>
応答しないプロセスからメモリ ダンプサンプルを取得 <STOPPING SERVICE>。
procdump.exe -s 5 -n 3 -ma <PID>
ここで、応答しないプロセスを中止して、シャットダウン プロセスのロックを解除します。
taskkill /PID <PID> /t /f
OS が再起動し、正常に起動したら、あとは OS の整合性を確認するだけです。 破損が報告された場合は、ディスクの破損がなくなるまで、次のコマンドを実行します。
dism /online /cleanup-image /restorehealth
プロセスのメモリ ダンプを収集できない場合、またはこの問題が再帰的で、根本原因を分析する必要がある場合は、以下の OS のメモリ ダンプの収集に進み、サポート リクエストを開いてください。
OS のメモリ ダンプの収集
変更が処理されるまで待っても問題が解決されないときは、場合によっては、メモリ ダンプ ファイルを収集し、サポートに問い合わせる必要があります。 ダンプ ファイルを収集するには、次の手順を実行します。
復旧 VM に OS ディスクを接続する
バックアップとして、影響を受ける VM の OS ディスクのスナップショットを取得します。 詳細については、ディスクのスナップショットに関する記事を参照してください。
復旧 VM にリモート デスクトップ接続します。
OS ディスクが暗号化されている場合、次の手順に進む前に暗号化をオフにする必要があります。 詳細については、起動できない VM で暗号化されている OS ディスクを復号する方法に関するページを参照してください。
ダンプ ファイルを探してサポート チケットを送信する
復旧 VM で、接続されている OS ディスクの Windows フォルダーに移動します。 接続されている OS ディスクに割り当てられているドライブ文字が F の場合は、F:\Windows に移動する必要があります。
memory.dmp ファイルを探し、ダンプ ファイルと共にサポート チケットを送信します。
ダンプ ファイルが見つからない場合は、ダンプ ログとシリアル コンソールを有効にする次の手順に進みます。
ダンプ ログとシリアル コンソールを有効にする
ダンプ ログとシリアル コンソールを有効にするには、次のスクリプトを実行します。
管理者特権のコマンド プロンプト セッション ([管理者として実行]) を開きます。
次のスクリプトを実行します。
このスクリプトでは、接続されている OS ディスクに割り当てられているドライブ文字が F であると想定しています。実際の VM の適切な値に置き換えてください。
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REM Enable Serial Console bcdedit /store F:\boot\bcd /set {bootmgr} displaybootmenu yes bcdedit /store F:\boot\bcd /set {bootmgr} timeout 5 bcdedit /store F:\boot\bcd /set {bootmgr} bootems yes bcdedit /store F:\boot\bcd /ems {<BOOT LOADER IDENTIFIER>} ON bcdedit /store F:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200 REM Suggested configuration to enable OS Dump REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v NMICrashDump / t REG_DWORD /d 1 /f reg unload HKLM\BROKENSYSTEM
この VM に選択しているサイズに応じて、RAM と同じサイズのメモリを割り当てることができる十分な領域がディスク上にあることを確認します。
十分な領域がない場合、または VM が大きい場合は (G、GS、または E シリーズ)、このファイルが作成される場所を変更し、VM に接続されている他のデータ ディスクに任せることができます。 場所を変更するには、次のキーを変更する必要があります。
reg load HKLM\BROKENSYSTEM F:\windows\system32\config\SYSTEM REG ADD "HKLM\BROKENSYSTEM\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "<DRIVE LETTER OF YOUR DATA DISK>:\MEMORY.DMP" /f REG ADD "HKLM\BROKENSYSTEM\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "<DRIVE LETTER OF YOUR DATA DISK>:\MEMORY.DMP" /f reg unload HKLM\BROKENSYSTEM
VM を起動し、シリアル コンソールにアクセスします。
[ マスク不可能割り込み (NMI) の送信を選択して、メモリ ダンプをトリガーします。
OS ディスクを復旧 VM にもう一度アタッチし、ダンプ ファイルを収集します。
ダンプ ファイルを収集した後、根本原因を判断するために Microsoft サポートに問い合わせてください。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。