使用 Azure 中的嵌套虚拟化排查故障 Azure VM

适用于:✔️ Windows VM

本文介绍如何在 Microsoft Azure 中创建嵌套虚拟化环境,以便可以在 Hyper-V 主机(修复/救援 VM)上装载故障虚拟机(VM)的磁盘以进行故障排除。

自动进程

若要使用嵌套虚拟化环境对有故障的 VM 进行故障排除,强烈建议使用 Azure VM 修复命令。 可以使用 Azure VM 修复命令创建包含嵌套 Hyper-V 的修复 VM,并自动修复故障 VM。

手动过程

注意

仅当 Azure VM 修复命令不可用或由于兼容性问题而失败时,才使用此过程。

步骤 1:创建救援 VM 并安装 Hyper-V 角色

  1. 创建一台新的救援 VM:

    • 操作系统:Windows Server 2016 Datacenter 或更高版本的 Windows Server Datacenter。

    • 大小:选择支持嵌套虚拟化的系列。 例如: Dv3Dv4

    • 与故障 VM 相同的位置。

    • 映像:选择第 2 代映像或第 1 代映像。

    • 安全类型:将安全类型更改为 “标准”。 默认情况下,安全类型为 受信任的启动虚拟机 ,不支持嵌套虚拟化。 如果将安全类型设置为 “受信任的启动虚拟机”,并尝试在救援 VM 上添加服务器角色,将遇到以下错误消息:

      无法安装 Hyper-V,因为 BIOS 中未启用虚拟化支持。

      显示“无法安装 Hyper-V”错误消息的屏幕截图。

      注意

      发生此错误的原因是 VM 的 BCDEdit 配置中未启用虚拟机监控程序。 若要修复此错误,请在安装 Hyper-V 角色之前设置该选项。

      若要检查 hypervisorlaunchtype VM 上的选项,请从提升的 PowerShell 命令提示符运行以下 cmdlet:

      bcdedit /enum
      

      下面是输出示例。 在此示例中,不包括虚拟机监控程序参数,指示未启用虚拟机监控程序。

      Windows Boot Manager
      --------------------
      identifier              {bootmgr}
      device                  partition=\Device\HarddiskVolume3
      path                    \EFI\Microsoft\Boot\bootmgfw.efi
      description             Windows Boot Manager
      locale                  en-US
      inherit                 {globalsettings}
      bootshutdowndisabled    Yes
      default                 {current}
      resumeobject            {24089230-1111-2222-3333-6045bd34a71d}
      displayorder            {current}
      toolsdisplayorder       {memdiag}
      timeout                 30
      
      Windows Boot Loader
      -------------------
      identifier              {current}
      device                  partition=C:
      path                    \Windows\system32\winload.efi
      description             Windows Server
      locale                  en-US
      inherit                 {bootloadersettings}
      recoveryenabled         No
      isolatedcontext         Yes
      allowedinmemorysettings 0x15000075
      osdevice                partition=C:
      systemroot              \Windows
      resumeobject            {24089230-1111-2222-3333-6045bd34a71d}
      nx                      OptOut
      bootstatuspolicy        IgnoreAllFailures
      ems                     Yes
      

      若要将 hypervisorlaunchtype 选项 auto 设置为并重启 VM,请运行以下 cmdlet:

      bcdedit /set hypervisorlaunchtype auto
      Restart-Computer -Force
      
  2. 创建救援 VM 后,通过远程桌面连接到救援 VM。

  3. 在服务器管理器中,选择管理>添加角色和功能

  4. 在“安装类型”部分,选择“基于角色或基于功能的安装”

  5. 在“选择目标服务器”部分中,请确保已选择“救援 VM”。

  6. 选择“HYPER-V 角色”“添加功能”>

  7. 选择“功能”部分上的“下一步”

  8. 如果虚拟交换机可用,请选择它。 否则请选择“下一步”

  9. 在“迁移”部分上,选择“下一步”

  10. 在“默认存储”部分,选择“下一步”

  11. 如果需要,请选中此框以自动重启服务器。

  12. 选择“安装” 。

  13. 允许服务器安装 Hyper-V 角色。 这需要几分钟的时间,服务器将自动重新启动。

步骤 2:在救援 VM 的 Hyper-V 服务器上创建故障 VM

  1. 为有问题的 VM 的 OS 磁盘创建快照磁盘 ,然后将快照磁盘附加到救援 VM。

  2. 通过远程桌面连接到救援 VM。

  3. 打开磁盘管理 (diskmgmt.msc)。 确保故障 VM 的磁盘设置为 脱机

  4. 打开 Hyper-V 管理器:在“服务器管理器”中,选择“Hyper-V 角色”。 右键单击服务器,然后选择“Hyper-V 管理器”

  5. 在 HYPER-V 管理器中,右键单击救援 VM,然后选择“新建”“虚拟机”>“下一步”>

  6. 键入 VM 的名称,然后选择“下一步”

  7. 根据错误的 VM 生成选择 第 1 代或 第 2 代。

  8. 设置启动内存为 1024 MB 或以上。

  9. 如果适用,请选择已创建的 Hyper-V 网络交换机。 否则请转到下一页。

  10. 选择“稍后附加虚拟硬盘”

    屏幕截图显示了“连接虚拟硬盘”条目下的“附加虚拟硬盘后”选项。

  11. 创建 VM 后,选择“完成”

  12. 右键单击创建的 VM,然后选择“设置”

  13. 选择 第 1 代 VM 的 IDE 控制器 0第 2 代 VM 的 SCSI 控制器 ,选择 硬盘驱动器,然后单击“ 添加”。

    屏幕截图显示了添加新硬盘驱动器的步骤。

  14. 物理硬盘中,选择附加到 Azure VM 的故障 VM 的磁盘。 如果没有看到任何列出的磁盘,请使用磁盘管理检查是否将磁盘设置为离线。

    屏幕截图显示了物理硬盘区域。

  15. 依次选择“应用”、“确定” 。

  16. 双击 VM,然后启动它。

  17. 现在你可以将此 VM 作为本地 VM 进行操作。 你可以按照所需的任何故障排除步骤操作。

步骤 3:替换故障 VM 使用的 OS 磁盘

  1. 重新在线获得 VM 后,关闭 Hyper-V 管理器中的 VM。

  2. 分离修复的 OS 磁盘。

  3. 将 VM 使用的 OS 磁盘替换为修复的 OS 磁盘

后续步骤

如果在连接到 VM 时遇到问题,请参阅对 Azure VM 的 RDP 连接进行故障排除。 如果在访问 VM 上运行的应用程序时遇到问题,请参阅对 Windows VM 上的应用程序连接问题进行故障排除

联系我们寻求帮助

如果有疑问,可以询问 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区