如何使用启动诊断功能来排查 Azure 中虚拟机的问题
适用于:✔️ Linux VM ✔️ Windows VM
虚拟机进入非可启动状态的原因可能有很多。 若要解决使用 资源管理器 部署模型创建的虚拟机的问题,可以使用以下调试功能:控制台输出和 Azure 虚拟机的屏幕截图支持。
对于 Linux 虚拟机,可以在门户中查看控制台日志的输出。 对于 Windows 和 Linux 虚拟机,Azure 允许你通过虚拟机监控程序查看 VM 的屏幕截图。 所有区域中的 Azure 虚拟机都支持这两项功能。 请注意,屏幕截图和输出最多可能需要 10 分钟才能显示在存储帐户中。
可以选择“启动诊断”选项以查看日志和屏幕截图。
常见的启动错误
- 0xC000000E
- 0xC000000F
- 0xC0000011
- 0xC0000034
- 0xC0000098
- 0xC00000BA
- 0xC000014C
- 0xC0000221
- 0xC0000225
- 0xC0000359
- 0xC0000605
- 找不到操作系统
- 启动故障或 INACCESSIBLE_BOOT_DEVICE
在使用 Azure 门户创建的虚拟机上启用诊断
以下过程适用于使用资源管理器部署模型创建的虚拟机。
在“管理”选项卡上的“监视”部分中,确保“启动诊断”处于打开状态。 默认设置是使用托管存储帐户启用启动诊断。
注意
启动诊断功能不支持高级存储帐户或区域冗余存储帐户类型。 如果使用高级存储帐户进行启动诊断,则可能会在启动 VM 时收到 StorageAccountTypeNotSupported 错误。
通过 Azure 资源管理器模板部署
若要从 Azure 资源管理器模板进行部署,请导航到虚拟机资源,并追加诊断配置文件部分。 将 API 版本标头设置为“2015-06-15”或更新版本。 最新版本是“2018-10-01”。
{
"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachines",
…
可以通过诊断配置文件选择要在其中放置这些日志的存储帐户。
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[concat('https://', parameters('newStorageAccountName'), '.blob.core.windows.net')]"
}
}
}
}
有关使用模板部署资源的详细信息,请参阅快速入门:使用Azure 门户创建和部署 Azure 资源管理器 模板。
在现有的虚拟机上启用启动诊断
若要在现有的虚拟机上启用启动诊断,请执行以下步骤:
登录到 Azure 门户,然后选择虚拟机。
在 “帮助 ”部分中,选择“ 启动诊断”,然后选择“ 设置” 选项卡。
在 启动诊断 设置中,选择包含托管存储帐户或自定义存储帐户的启动诊断。
保存更改。
使用 Azure CLI 启用启动诊断
可以在现有的 Azure 虚拟机上使用 Azure CLI 启用启动诊断。 有关详细信息,请参阅 az vm boot-diagnostics。
修复未刷新的启动诊断屏幕截图
如果注意到 Azure VM 的启动诊断屏幕截图在Azure 门户中已过时,请先确保在来宾操作系统中禁用虚拟显示超时。 例如,你可能会看到登录屏幕上显示的时间对于 Windows VM 来说已过时。
对于 Windows,请从提升的 CMD 运行以下命令
powercfg /setacvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOIDLE 0
对于 Linux,运行以下命令
xset s off
对于 Windows VM,Azure 预配代理不同于 VM 代理。 它在预配从通用化映像创建的 VM 期间运行上述命令。 如果在 C:\Windows\Panther\WaSetup.xml(预配代理日志)中搜索 powercfg,则可以看到此事件。 但是,由于预配代理不需要为从专用 VHD 创建的 VM 运行,因此需要手动运行 powercfg 命令来禁用虚拟显示超时。 此外,还可以从通用化映像创建一个特别旧的 Azure VM,该映像可能尚未设置,因为在更新预配代理之前已创建该 VM 以禁用虚拟显示超时。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。