你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Windows VM 上的休眠问题故障排除

休眠虚拟机让你可将 VM 状态持久保存到 OS 磁盘。 本文介绍了如何故障排除 Windows 中休眠功能的问题、创建启用了休眠的 Windows VM 的问题以及休眠 Windows VM 的问题。

若要查看有关休眠常规故障排除的指南,请查看故障排除 Azure 中的休眠问题

无法休眠 Windows VM

如果无法使 VM 休眠,请先检查是否已在 VM 上启用了休眠

如果在 VM 上启用了休眠,请检查是否在来宾 OS 中成功启用了休眠。 可以检查休眠扩展的状态,查看该扩展是否能够成功地配置来宾操作系统的休眠。

状态和状态消息的屏幕截图,报告 Windows VM 的预配已成功。

VM 实例视图将具有扩展的最终输出:

"extensions": [
    {
      "name": "AzureHibernateExtension",
      "type": "Microsoft.CPlat.Core.WindowsHibernateExtension",
      "typeHandlerVersion": "1.0.2",
      "statuses": [
        {
          "code": "ProvisioningState/succeeded",
          "level": "Info",
          "displayStatus": "Provisioning succeeded",
          "message": "Enabling hibernate succeeded. Response from the powercfg command: \tThe hiberfile size has been set to: 17178693632 bytes.\r\n"
        }
      ]
    },

此外,确认是否在来宾中将休眠启用为睡眠状态。 来宾的预期输出应如下所示。

C:\Users\vmadmin>powercfg /a
    The following sleep states are available on this system:
        Hibernate
        Fast Startup

    The following sleep states are not available on this system:
        Standby (S1)
            The system firmware does not support this standby state.

        Standby (S2)
            The system firmware does not support this standby state.

        Standby (S3)
            The system firmware does not support this standby state.

        Standby (S0 Low Power Idle)
            The system firmware does not support this standby state.

        Hybrid Sleep
            Standby (S3) isn't available.


如果未将“休眠”列为受支持的睡眠状态,则应有相关原因,这有助于确定为什么不支持休眠。 如果没有为 VM 配置来宾休眠,就会发生这种情况。

C:\Users\vmadmin>powercfg /a
    The following sleep states are not available on this system:
        Standby (S1)
            The system firmware does not support this standby state.

        Standby (S2)
            The system firmware does not support this standby state.

        Standby (S3)
            The system firmware does not support this standby state.

        Hibernate
            Hibernation hasn't been enabled.

        Standby (S0 Low Power Idle)
            The system firmware does not support this standby state.

        Hybrid Sleep
        Standby (S3) is not available.
            Hibernation is not available.

        Fast Startup
            Hibernation is not available.

如果扩展或来宾睡眠状态报错,则需要根据错误说明更新来宾配置,以解决问题。 修复所有问题后,可以通过运行 'powercfg /a' 命令来验证是否已在来宾中成功启用休眠,该命令应将休眠作为睡眠状态之一返回。 此外,验证 AzureHibernateExtension 是否返回 Succeeded 状态。 如果扩展仍处于失败状态,请通过触发重新应用 VM API 来更新扩展状态

注意

如果扩展仍处于失败状态,则无法休眠 VM。

扩展失败时的常见问题。

问题 操作
页面文件位于临时磁盘中。 将其移到 OS 磁盘以启用休眠。 将页面文件移动到 C: 驱动器,并在 VM 上触发重新应用以重新运行扩展
由于为 hiberfile 提供的空间不足,Windows 无法配置休眠 确保 C: 驱动器有足够的空间。 可以尝试扩展 OS 磁盘、C: 分区大小以解决此问题。 有足够的空间后,触发重新应用操作,以便扩展可以重试在来宾中启用休眠并成功。
扩展错误消息:“一个附加到系统的设备无法正常工作” 确保 C: 驱动器有足够的空间。 可以尝试扩展 OS 磁盘、C: 分区大小以解决此问题。 有足够的空间后,触发重新应用操作,以便扩展可以重试在来宾中启用休眠并成功。
在来宾中启用基于虚拟化的安全性 (VBS) 后,不再支持休眠 使来宾中的虚拟化能够获取 VBS 功能以及休眠来宾的能力。 在来宾 OS 中启用虚拟化。
启用休眠失败。 powercfg 命令的响应。 退出代码:1. 错误消息:休眠失败并出现以下错误:不支持请求。 以下项阻止在此系统上休眠。 当前的 Device Guard 配置禁用休眠。 内部系统组件已禁用休眠。 Hypervisor 使来宾中的虚拟化能够获取 VBS 功能以及休眠来宾的能力。 要在来宾中启用虚拟化,请参阅本文档

来宾 Windows VM 无法休眠

如果休眠操作成功,来宾中将看到以下事件:

Guest responds to the hibernate operation (note that the following event is logged on the guest on resume)

    Log Name:      System
    Source:        Kernel-Power
    Event ID:      42
    Level:         Information
    Description:
    The system is entering sleep

如果来宾无法休眠,则会缺少所有这些事件或部分事件。 常见问题:

问题 操作
来宾无法休眠,因为 Hyper-V 来宾关闭服务已禁用。 你可以通过运行 sc query vmicshutdown 来检查此问题。 确保 Hyper-V 来宾关闭服务未禁用。 启用此服务后应会解决此问题。
来宾无法休眠,因为 Power Service 已禁用。 你可以通过运行 sc query power 来检查此问题。 确保未禁用 Power Service。 启用此服务后应会解决此问题。
来宾无法休眠,因为已启用 HVCI(内存完整性)。 如果来宾中启用了内存完整性,并且你正在尝试休眠 VM,请确保来宾运行的是支持内存完整性休眠所需的最低操作系统内部版本。

Win 11 22H2 - 最低 OS 内部版本 - 22621.2134
Win 11 21H1 - 最低 OS 内部版本 - 22000.2295
Win 10 22H2 - 最低 OS 内部版本 - 19045.3324

故障排除所需的日志:

如果遇到了这些已知方案之外的问题,以下日志可帮助 Azure 排查问题:

  • 来宾上的相关事件日志:Microsoft-Windows-Kernel-Power、Microsoft-Windows-Kernel-General、Microsoft-Windows-Kernel-Boot。
  • 在 bug 检查期间,来宾故障转储很有用。

无法恢复 Windows VM

从休眠状态启动 VM 时,可以使用 VM 实例视图获取更多详细信息,包括来宾是否从其以前的休眠状态成功恢复,或者是否恢复失败并转而进行了冷启动。

来宾成功恢复时,VM 实例视图输出:

{
  "computerName": "myVM",
  "osName": "Windows 11 Enterprise",
  "osVersion": "10.0.22000.1817",
  "vmAgent": {
    "vmAgentVersion": "2.7.41491.1083",
    "statuses": [
      {
        "code": "ProvisioningState/succeeded",
        "level": "Info",
        "displayStatus": "Ready",
        "message": "GuestAgent is running and processing the extensions.",
        "time": "2023-04-25T04:41:17.296+00:00"
      }
    ],
    "extensionHandlers": [
      {
        "type": "Microsoft.CPlat.Core.RunCommandWindows",
        "typeHandlerVersion": "1.1.15",
        "status": {
          "code": "ProvisioningState/succeeded",
          "level": "Info",
          "displayStatus": "Ready"
        }
      },
      {
        "type": "Microsoft.CPlat.Core.WindowsHibernateExtension",
        "typeHandlerVersion": "1.0.3",
        "status": {
          "code": "ProvisioningState/succeeded",
          "level": "Info",
          "displayStatus": "Ready"
        }
      }
    ]
  },  
  "extensions": [
    {
      "name": "AzureHibernateExtension",
      "type": "Microsoft.CPlat.Core.WindowsHibernateExtension",
      "typeHandlerVersion": "1.0.3",
      "substatuses": [
        {
          "code": "ComponentStatus/VMBootState/Resume/succeeded",
          "level": "Info",
          "displayStatus": "Provisioning succeeded",
          "message": "Last guest resume was successful."
        }
      ],
      "statuses": [
        {
          "code": "ProvisioningState/succeeded",
          "level": "Info",
          "displayStatus": "Provisioning succeeded",
          "message": "Enabling hibernate succeeded. Response from the powercfg command: \tThe hiberfile size has been set to: XX bytes.\r\n"
        }
      ]
    }
  ],
  "statuses": [
    {
      "code": "ProvisioningState/succeeded",
      "level": "Info",
      "displayStatus": "Provisioning succeeded",
      "time": "2023-04-25T04:41:17.8996086+00:00"
    },
    {
      "code": "PowerState/running",
      "level": "Info",
      "displayStatus": "VM running"
    }
  ]
}


如果 Windows 来宾无法从以前的状态恢复并冷启动,则 VM 实例视图的响应为:

  "extensions": [
    {
      "name": "AzureHibernateExtension",
      "type": "Microsoft.CPlat.Core.WindowsHibernateExtension",
      "typeHandlerVersion": "1.0.3",
      "substatuses": [
        {
          "code": "ComponentStatus/VMBootState/Start/succeeded",
          "level": "Info",
          "displayStatus": "Provisioning succeeded",
          "message": "VM booted."
        }
      ],
      "statuses": [
        {
          "code": "ProvisioningState/succeeded",
          "level": "Info",
          "displayStatus": "Provisioning succeeded",
          "message": "Enabling hibernate succeeded. Response from the powercfg command: \tThe hiberfile size has been set to: XX bytes.\r\n"
        }
      ]
    }
  ],
  "statuses": [
    {
      "code": "ProvisioningState/succeeded",
      "level": "Info",
      "displayStatus": "Provisioning succeeded",
      "time": "2023-04-19T17:18:18.7774088+00:00"
    },
    {
      "code": "PowerState/running",
      "level": "Info",
      "displayStatus": "VM running"
    }
  ]
}

恢复时的 Windows 来宾事件

如果来宾成功恢复,则提供以下来宾事件:

Log Name:      System
    Source:        Kernel-Power
    Event ID:      107
    Level:         Information
    Description:
    The system has resumed from sleep. 

如果来宾无法恢复,则会缺少所有这些事件或部分事件。 要排查来宾无法恢复的原因,需要以下日志:

  • 来宾上的事件日志:Microsoft-Windows-Kernel-Power、Microsoft-Windows-Kernel-General、Microsoft-Windows-Kernel-Boot。
  • 在 bug 检查时,需要来宾故障转储。