Partilhar via


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

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

Para exibir o guia geral de solução de problemas de hibernação, confira Solucionar problemas de hibernação no Azure.

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

Se você não conseguir 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 SO convidado. Você pode verificar o status da extensão de hibernação para ver se a extensão foi capaz de configurar com êxito o sistema operacional convidado para hibernação.

Captura de tela da mensagem de status e status relatando que o provisionamento foi bem-sucedido para 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á ativada como um estado de suspensão dentro do convidado. A saída esperada para o hóspede deve ser assim.

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 Hibernação não estiver listada como um estado de suspensão suportado, deve haver um motivo associado a ela, o que deve ajudar a determinar por que a hibernação não é suportada. Isso ocorre se a hibernação de convidado não estiver configurada para a 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 do erro para resolver o problema. Depois de corrigir todos os problemas, você pode validar que a hibernação foi ativada com sucesso dentro do convidado executando o comando 'powercfg /a' - que deve retornar a hibernação como um dos estados de suspensão. Valide também se o AzureHibernateExtension retorna a um estado Succeeded. Se a extensão ainda estiver em um estado de falha, atualize o estado da extensão acionando a API de VM de reaplicação

Nota

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

Problemas comumente vistos em que a extensão falha.

Problema Ação
O arquivo de paginação está no disco temporário. Mova-o para o disco do SO para ativar a hibernação. Mova o arquivo de paginação para a unidade C: e acione novamente a VM para executar novamente a extensão
O Windows não conseguiu configurar a hibernação devido a espaço insuficiente para o ficheiro de hibernação Certifique-se de que a unidade C: tem espaço suficiente. Você pode tentar expandir o disco do sistema operacional, o tamanho da partição C: para superar esse problema. Quando tiver espaço suficiente, acione a operação Reaplicar para que a extensão possa tentar novamente habilitar a hibernação no convidado e seja bem-sucedida.
Mensagem de erro de extensão: "Um dispositivo conectado ao sistema não está funcionando" Certifique-se de que a unidade C: tem espaço suficiente. Você pode tentar expandir o disco do sistema operacional, o tamanho da partição C: para superar esse problema. Quando tiver espaço suficiente, acione a operação Reaplicar para que a extensão possa tentar novamente habilitar a hibernação no convidado e seja bem-sucedida.
A hibernação não é mais suportada depois que a Segurança Baseada em Virtualização (VBS) foi habilitada dentro do convidado Habilite a virtualização no convidado para obter recursos do VBS juntamente com a capacidade de hibernar o convidado. Habilite a virtualização no SO convidado.
Falha ao ativar a hibernação. Resposta do comando powercfg. Código de saída: 1. Mensagem de erro: A hibernação falhou com o seguinte erro: A solicitação não é suportada. Os itens a seguir estão impedindo a hibernação neste sistema. A configuração atual do Device Guard desativa a hibernação. Um componente interno do sistema desativou a hibernação. Hipervisor Habilite a virtualização no convidado para obter recursos do VBS juntamente com a capacidade de hibernar o convidado. Para habilitar a virtualização no convidado, consulte este documento

VMs convidadas do Windows não conseguem 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 conseguir hibernar, todos ou alguns desses eventos estarão faltando. Problemas comumente vistos:

Problema Ação
O convidado não consegue 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á desativado. Habilitar esse serviço deve resolver o problema.
O convidado não consegue hibernar porque o Serviço de Energia está desativado. Você pode verificar isso executando o poder de consulta sc. Certifique-se de que o Serviço de Energia não está desativado. Habilitar esse serviço deve resolver o problema.
O convidado não consegue hibernar porque o HVCI (integridade da memória) está ativado. Se a Integridade da Memória estiver habilitada no convidado e você estiver tentando hibernar a VM, verifique se o convidado está executando a compilação mínima do sistema operacional necessária para dar suporte à hibernação com a Integridade da Memória.

Win 11 22H2 – Compilação mínima do SO - 22621.2134
Win 11 21H1 - Compilação mínima do SO - 22000.2295
Win 10 22H2 - Compilação mínima do SO - 19045.3324

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

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

  • Logs de eventos relevantes no convidado: Microsoft-Windows-Kernel-Power, Microsoft-Windows-Kernel-General, Microsoft-Windows-Kernel-Boot.
  • Durante uma verificação de bug, um despejo de falha de 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 da VM para obter mais detalhes sobre se o convidado retomou com êxito de seu estado hibernado anterior ou se não conseguiu retomar e, em vez disso, fez uma inicialização fria.

Saída de exibição de instância de VM quando o convidado retoma 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 conseguir retomar de seu estado anterior e inicializar a frio, a resposta 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 convidados do Windows ao retomar

Se um convidado for retomado com sucesso, 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 retomar, todos ou alguns desses eventos estarão faltando. Para solucionar problemas por que o convidado não retomou, 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, um despejo de falha de convidado é necessário.