使用 Azure 虚拟机修复命令修复 Linux VM
如果 Azure 中的 Linux 虚拟机 (VM) 遇到启动或磁盘错误,则可能需要对磁盘本身执行缓解措施。 常见示例是应用程序更新失败,导致 VM 无法成功启动。 本文详细介绍了如何使用 Azure 虚拟机修复命令将磁盘连接到另一个 Linux VM 以修复任何错误,然后重新生成原始 VM。
重要
- 本文中的脚本仅适用于使用 Azure 资源管理器的 VM。
- 运行脚本需要从 VM (端口 443) 建立出站连接。
- 一次只能运行一个脚本。
- 无法取消正在运行的脚本。
- 脚本可以运行的最长时间为 90 分钟,之后将超时。
- 请勿修改在修复 VM 上创建的标记。 标记是还原命令正常运行所必需的。
- 对于使用 Azure 磁盘加密的 VM,仅支持使用单通道加密 (使用 KEK) 加密的托管磁盘。
修复过程概述
现在可以使用 Azure 虚拟机修复命令更改 VM 的 OS 磁盘,并且不再需要删除并重新创建 VM。
按照以下步骤排查 VM 问题:
- 启动 Azure Cloud Shell
- 运行 az extension add/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 分钟,则可能更倾向于在本地运行命令。 若要在本地运行命令,需要 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 reference。如果这是你第一次使用
az vm repair
命令,请添加 vm-repair CLI 扩展。az extension add -n vm-repair
如果以前使用
az vm repair
过命令,请对 vm 修复扩展应用任何更新。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。
重要
运行和还原命令将要求使用创建命令中使用的相同大小写输入所有输入,记下或引用修复 VM 上的标记以查看使用的内容。
修复 VM 示例
az vm repair create -g MyResourceGroup -n myVM --repair-username username --repair-password password1234 --verbose
运行
az vm repair run
。 此命令将通过修复 VM 在附加的磁盘上运行指定的修复脚本。 如果使用的故障排除指南指定了 run-id,请在此处使用它。 否则,可以使用az vm repair list-scripts
查看可用的修复脚本。 此处使用的资源组和 VM 名称适用于步骤 3 中使用的非正常运行 VM。 有关修复脚本的其他信息可以在 修复脚本库中找到。az vm repair run -g MyResourceGroup -n MyVM --run-on-repair --run-id lin-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 虚拟机的 RDP 连接问题。
- 有关访问 VM 上运行的应用程序的问题,请参阅 排查 Azure 中虚拟机上的应用程序连接问题。
- 有关使用资源管理器的详细信息,请参阅 Azure 资源管理器概述。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈