适用于:✔️ Windows VM
本文提供了一些步骤来解决在 azure Microsoft 中重新启动 Windows 虚拟机(VM)时可能会遇到的“正在重启”、“关闭”或“正在停止服务”消息的问题。
现象
使用 启动诊断 查看 VM 的屏幕截图时,可能会看到屏幕截图显示消息“正在重启”、“正在关闭”或“正在停止服务”。
原因
Windows 使用关闭过程来执行系统维护操作,并处理更新、角色和功能等更改。 在完成之前,不建议中断此关键过程。 此过程可能需要很长时间,具体取决于更新/更改数和 VM 大小。 如果进程已停止,OS 可能会损坏。 仅当进程花费的时间过长时才会中断进程。
解决方案
收集进程内存转储
将 Procdump 工具下载到新的或现有的数据磁盘中,该磁盘附加到同一区域中的工作 VM。
分离包含工作 VM 所需的文件的磁盘,并将磁盘附加到损坏的 VM。 我们将此磁盘 称为实用工具磁盘。
使用 串行控制台 完成以下步骤:
打开管理 PowerShell,检查停止后停止响应的服务。
Get-Service | Where-Object {$_.Status -eq "STOP_PENDING"}
在管理 CMD 上,获取无响应服务的 PID。
tasklist /svc | findstr /i <STOPING SERVICE>
从无响应进程 <停止服务>获取内存转储示例。
procdump.exe -s 5 -n 3 -ma <PID>
现在终止无响应的进程以解锁关闭进程。
taskkill /PID <PID> /t /f
OS 再次启动后,如果它正常启动,只需确保 OS 一致性正常。 如果报告损坏,请运行以下命令,直到磁盘损坏可用:
dism /online /cleanup-image /restorehealth
如果无法收集进程内存转储,或者此问题是递归的,并且需要根本原因分析,请继续收集下面的 OS 内存转储,继续打开支持请求。
收集 OS 内存转储
如果问题在等待更改进行处理后无法解决,则需要收集内存转储文件并联系支持人员。 若要收集转储文件,请执行以下步骤:
将 OS 磁盘附加到恢复 VM
拍摄受影响的 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
验证磁盘上是否有足够的空间来分配与 RAM 一样多的内存,具体取决于要为此 VM 选择的大小。
如果空间不足或 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 反馈社区。