使用 Azure 虚拟机修复命令修复 Windows VM
适用于:✔️ Windows VM
如果 Azure 中的 Windows 虚拟机(VM)遇到启动或磁盘错误,则可能需要脱机修复磁盘。 一个常见示例是应用程序更新失败,使 VM 无法成功启动。 本文详细介绍了如何使用 Azure VM 修复命令自动将损坏的 OS 磁盘附加到另一个 Windows VM 进行脱机修复。 通过此过程,如果磁盘使用Azure 磁盘加密加密,则第二个 VM 上将自动解锁失败的 OS 磁盘,称为修复 VM。 将失败的磁盘附加到修复 VM 时,可以修复任何错误,然后使用修复的磁盘重新生成原始 VM。
重要
- 本文中的脚本仅适用于使用 Azure 资源管理器的 VM。
- 运行脚本需要来自 VM 的出站连接(端口 443)。
- 一次只能运行一个脚本。
- 无法取消正在运行的脚本。
- 脚本最多可以运行 90 分钟,之后它将超时。
- 请勿修改在修复 VM 上创建的标记。 还原命令必须具有标记才能正常运行。
- 对于使用 Azure 磁盘加密 的 VM,仅支持使用单一传递加密(使用或不使用 KEK)加密的托管磁盘。
修复过程概述
现在可以使用 Azure VM 修复命令更改 VM 的 OS 磁盘,不再需要删除和重新创建 VM。
“ 修复过程示例 ”部分将指导你完成以下过程:
- 启动 Azure Cloud Shell。
- 运行
az extension add
或az extension update
。 - 运行
az vm repair create
。 - 运行
az vm repair run
或执行缓解步骤。 - 运行
az vm repair restore
。
注意
若要查看所有可用的 VM 修复命令和参数,请参阅 az vm repair。
重要
若要运行命令,需要一个角色,可在订阅中创建以下类型的资源:
- 资源组
- 虚拟机
- 资源标记
- 虚拟网络
- 网络安全组
- 网络接口
- 磁盘
- 公共 IP 地址(可选)
修复过程示例
启动 Azure Cloud Shell
Azure Cloud Shell 是免费的交互式 shell,可以使用它运行本文中的步骤。 它预安装有常用 Azure 工具并将其配置与帐户一起使用。 如果运行的脚本需要超过 20 分钟(例如 :win-sfc-sf-corruption 脚本),则可能需要在本地运行命令。 若要在本地运行命令,需要 Azure CLI 2.0.67 或更高版本。 运行
az --version
即可查找版本。 如果需要安装或升级 Azure CLI,请参阅安装 Azure CLI。若要打开 Cloud Shell,请从代码块的右上角选择“试一试”。 也可以在单独的浏览器选项卡中通过访问 https://shell.azure.com 打开 Cloud Shell。
选择“复制”以复制代码块,然后将其粘贴到 Cloud Shell 中,选择 Enter 来运行它。
如果想要在本地安装和使用 CLI,本快速入门需要 Azure CLI 2.0.67 或更高版本。 运行
az --version
即可查找版本。 如果需要安装或升级 Azure CLI,请参阅安装 Azure CLI。如果需要使用与当前登录到Azure 门户不同的帐户登录到 Cloud Shell,可以使用
az login
az login reference。 若要在与帐户关联的订阅之间切换,可以使用az account set --subscription
az account set 引用。如果这是首次使用
az vm repair
命令,请添加 vm-repair CLI 扩展。az extension add -n vm-repair
如果以前使用过
az vm repair
命令,请将任何更新应用于 vm-repair 扩展。az extension update -n vm-repair
运行
az vm repair create
。 此命令将为非功能性 VM 创建 OS 磁盘的副本,在新资源组中创建修复 VM,并附加 OS 磁盘副本。 修复 VM 的大小和区域将与指定的非功能性 VM 相同。 所有步骤中使用的资源组和 VM 名称都将用于非功能性 VM。 如果 VM 正在使用Azure 磁盘加密,则用于--unlock-encrypted-vm
解锁加密磁盘,以便在附加到修复 VM 时可访问该磁盘。 有关详细信息,请参阅 确认磁盘上已启用 ADE。 如果需要对嵌套 Hyper-V 环境中的 VM 进行故障排除,请使用--enable-nested
修复 VM,并使用 OS 磁盘副本通过启用 Hyper-V 角色和嵌套 VM 创建的修复 VM。
重要
运行和还原命令需要使用与在创建命令中使用的相同大小写输入所有输入,请记下或引用修复 VM 上的标记以查看使用的内容。
修复 VM 示例
az vm repair create -g MyResourceGroup -n myVM --repair-username username --repair-password 'password!234' --verbose
使用嵌套 Hyper-V 修复 VM 示例
az vm repair create -g MyResourceGroup -n myVM --repair-username username --repair-password 'password!234' --enable-nested --verbose
运行
az vm repair run
。 此命令将通过修复 VM 在附加的磁盘上运行指定的修复脚本。 如果使用的故障排除指南指定了运行 ID,请在此处使用它。 否则,可以使用az vm repair list-scripts
这些脚本查看可用的修复脚本。 此处使用的资源组和 VM 名称适用于第 3 步中使用的非功能性 VM。 可以在修复脚本库中找到有关修复脚本的其他信息。az vm repair run -g MyResourceGroup -n MyVM --run-on-repair --run-id win-hello-world --verbose
(可选)可以使用修复 VM 执行任何所需的手动缓解步骤,然后继续执行步骤 5。
运行
az vm repair restore
。 此命令会将修复的 OS 磁盘与 VM 的原始 OS 磁盘交换。 此处使用的资源组和 VM 名称适用于第 3 步中使用的非功能性 VM。az vm repair restore -g MyResourceGroup -n MyVM --verbose
验证和启用启动诊断
以下示例在名为 myResourceGroup
的资源组中名为 myVMDeployed
的 VM 上启用诊断扩展:
Azure CLI
az vm boot-diagnostics enable --name myVMDeployed --resource-group myResourceGroup --storage https://mystor.blob.core.windows.net/
后续步骤
- 如果在连接到 VM 时遇到问题,请参阅对 Azure VM 的 RDP 连接进行故障排除。
- 如果在访问 VM 上运行的应用程序时遇到问题,请参阅排查 Azure 中虚拟机上的应用程序连接问题。
- 有关资源组的详细信息,请参阅 Azure 资源管理器概述。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。