Compartilhar via


Solução de problemas de hibernação em VMs do Windows

A hibernação de uma máquina virtual permite que você persista o estado da VM para o disco do SO. Este artigo descreve como solucionar problemas com o recurso de hibernação no Windows, problemas ao criar VMs do Windows habilitadas para hibernação e problemas com a hibernação de uma VM do Windows.

Para ver o guia geral de solução de problemas de hibernação, confira Solução de problemas de hibernação no Azure.

Não é possível hibernar uma VM do Windows

Se não for possível hibernar uma VM, primeiro verifique se a hibernação está habilitada na VM.

Se a hibernação estiver habilitada na VM, verifique se a hibernação está habilitada com êxito no sistema operacional convidado. Você pode verificar o status da extensão de hibernação para ver se a extensão conseguiu configurar com êxito o sistema operacional convidado para hibernação.

Captura de tela do status e da mensagem de status informando que o provisionamento foi bem-sucedido em uma VM do Windows.

A exibição da instância da VM teria a saída final da extensão:

"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"
        }
      ]
    },

Além disso, confirme se a hibernação está habilitada como um estado de suspensão dentro do convidado. A saída esperada para o convidado deve ter esta aparência.

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.


Se a opção Hibernar não estiver listada como um estado de suspensão com suporte, deve haver um motivo associado isso, o que deve ajudar a determinar por que não há suporte para a hibernação. Isso ocorrerá se a hibernação do convidado não estiver configurada na 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.

Se a extensão ou o estado de suspensão do convidado relatar um erro, você precisará atualizar as configurações do convidado de acordo com as descrições de erro para resolver o problema. Depois de corrigir todos os problemas, você pode validar que a hibernação foi habilitada com êxito dentro do convidado executando o comando “powercfg /a”, que deve retornar Hibernar como um dos estados de suspensão. Também valide se a AzureHibernateExtension retorna a um estado bem-sucedido. Se a extensão ainda estiver em um estado com falha, atualize o estado da extensão disparando reaplicar a API de VM

Observação

Se a extensão permanecer em um estado com falha, você não poderá hibernar a VM.

Problemas comumente vistos nos casos de falha da extensão.

Problema Ação
O arquivo de página está em um disco temporário. Mova-o para o disco do sistema operacional para habilitar a hibernação. Mova o arquivo de página para a unidade C: e acione a reaplicação na VM para executar novamente a extensão
Falha do Windows ao configurar a hibernação devido ao espaço insuficiente para o arquivo de hibernação Verifique se a unidade C: tem espaço suficiente. Você pode tentar expandir o disco do sistema operacional, o tamanho da partição da sua C: para superar esse problema. Ao conseguir espaço suficiente, dispare a operação Reaplicar para que a extensão possa tentar novamente habilitar a hibernação no convidado e ser bem-sucedida.
Mensagem de erro da extensão: “Um dispositivo anexado ao sistema não está funcionando” Verifique se a unidade C: tem espaço suficiente. Você pode tentar expandir o disco do sistema operacional, o tamanho da partição da sua C: para superar esse problema. Ao conseguir espaço suficiente, dispare a operação Reaplicar para que a extensão possa tentar novamente habilitar a hibernação no convidado e ser bem-sucedida.
A hibernação não tem mais suporte depois que a VBS (Virtualization Based Security) foi habilitada dentro do convidado Habilite a virtualização no convidado para obter recursos de VBS junto com a capacidade de hibernar o convidado. Habilite a virtualização no sistema operacional convidado.
Falha ao habilitar a hibernação. Resposta do comando powercfg. Código de saída: 1. Mensagem de erro: Falha na hibernação com o seguinte erro: não há suporte para a solicitação. Os itens a seguir estão impedindo a hibernação nesse sistema. A configuração atual do Device Guard desabilita a hibernação. Um componente interno do sistema desabilitou a hibernação. Hipervisor Habilite a virtualização no convidado para obter recursos de VBS junto com a capacidade de hibernar o convidado. Para habilitar a virtualização no convidado, consulte este documento

As VMs do Windows convidadas não podem hibernar

Se uma operação de hibernação for bem-sucedida, os seguintes eventos serão vistos no convidado:

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

Se o convidado não consegue hibernar, todos ou alguns desses eventos estarão ausentes. Problemas comumente vistos:

Problema Ação
O convidado falha ao hibernar porque o Serviço de Desligamento de Convidado do Hyper-V está desabilitado. Você pode verificar isso executando sc query vmicshutdown. Verifique se o Serviço de Desligamento de Convidado do Hyper-V não está desabilitado. Habilitar esse serviço deve resolver o problema.
O convidado falha ao hibernar porque o Power Service está desabilitado. Você pode verificar isso executando sc query power. Verifique se o Power Service não está desabilitado. Habilitar esse serviço deve resolver o problema.
O convidado falha ao hibernar porque o HVCI (integridade da memória) está habilitado. Se a Integridade da Memória estiver habilitada no convidado e você estiver tentando hibernar a VM, verifique se o convidado está executando o build mínimo do sistema operacional necessário para dar suporte à hibernação com a Integridade da Memória.

Win 11 22H2 – build mínimo do sistema operacional – 22621.2134
Win 11 21H1 - build mínimo do sistema operacional - 22000.2295
Win 10 22H2 - build mínimo do sistema operacional - 19045.3324

Logs necessários para a solução de problemas:

Se você encontrar um problema fora desses cenários conhecidos, os seguintes logs poderão ajudar o Azure a solucionar o problema:

  • Logs de eventos relevantes no convidado: Microsoft-Windows-Kernel-Power, Microsoft-Windows-Kernel-General e Microsoft-Windows-Kernel-Boot.
  • Durante uma verificação de bugs, um despejo de memória do convidado é útil.

Não é possível retomar uma VM do Windows

Ao iniciar uma VM a partir de um estado hibernado, você pode usar a exibição de instância de VM para obter mais detalhes sobre se o convidado foi retomado com êxito do estado hibernado anterior ou se ele não foi retomado e, em vez disso, fez uma inicialização a frio.

Saída da exibição da instância de VM quando o convidado for retomado com êxito:

{
  "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"
    }
  ]
}


Se o convidado do Windows não for retomado do estado anterior e das inicializações frias, a resposta do modo de exibição da instância da VM será:

  "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"
    }
  ]
}

Eventos de convidado do Windows durante a retomada

Se um convidado for retomado com êxito, os seguintes eventos de convidado estarão disponíveis:

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

Se o convidado não for retomado, todos ou alguns desses eventos estarão ausentes. Para solucionar por que o convidado não foi retomado, os seguintes logs são necessários:

  • Logs de eventos no convidado: Microsoft-Windows-Kernel-Power, Microsoft-Windows-Kernel-General, Microsoft-Windows-Kernel-Boot.
  • Na verificação de bugs, é necessário um despejo de memória de convidado.