使用 Azure 虚拟机修复命令修复 Linux VM

适用于:✔️ Linux VM

如果 Linux 虚拟机 (VM) 在 Azure 中遇到启动或磁盘错误,可能需要对磁盘本身执行迁移。 一个常见示例是应用程序更新失败,使 VM 无法成功启动。 本文详细介绍如何使用 Azure 虚拟机修复命令将磁盘连接到另一个 Linux VM 来修复所有错误,然后重建原始 VM。

重要

  • 本文中的脚本仅适用于使用 Azure 资源管理器的 VM。
  • 运行脚本需要来自 VM 的出站连接(端口 443)。
  • 一次只能运行一个脚本。
  • 无法取消正在运行的脚本。
  • 脚本最多可以运行 90 分钟,之后它将超时。
  • 请勿修改在修复 VM 上创建的标记。 还原命令必须具有标记才能正常运行。
  • 对于使用 Azure 磁盘加密 的 VM,仅支持使用单一传递加密(使用或不使用 KEK)加密的托管磁盘。

修复过程概述

现在可以使用 Azure 虚拟机修复命令更改 VM 的 OS 磁盘,不再需要删除和重新创建 VM。

请按照以下步骤解决 VM 问题:

  1. 启动 Azure Cloud Shell
  2. 运行 az extension add/update
  3. 运行 az vm repair create
  4. 运行 az vm repair run,或执行缓解步骤。
  5. 运行 az vm repair restore

若要查看所有可用的 VM 修复命令和参数,请参阅 az vm repair

若要运行命令,需要一个角色,可在订阅中创建以下类型的资源:

  • 资源组
  • 虚拟机
  • 资源标记
  • 虚拟网络
  • 网络安全组
  • 网络接口
  • 磁盘
  • 公共 IP 地址(可选)

修复过程示例

  1. 启动 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 引用

  2. 如果这是首次使用 az vm repair 命令,请添加 vm-repair CLI 扩展。

    az extension add -n vm-repair
    

    如果以前使用过 az vm repair 命令,请将任何更新应用于 vm-repair 扩展。

    az extension update -n vm-repair
    
  3. 运行 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
  1. 运行 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 lin-hello-world --verbose
    

    (可选)可以使用修复 VM 执行任何所需的手动缓解步骤,然后继续执行步骤 5。

  2. 运行 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/

后续步骤

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区