Risoluzione dei problemi di ibernazione nelle macchine virtuali Windows
L'ibernazione di una macchina virtuale consente di rendere persistente lo stato della macchina virtuale sul disco del sistema operativo. Questo articolo descrive come risolvere i problemi relativi alla funzionalità di ibernazione in Windows, alla creazione di macchine virtuali Windows abilitate per l'ibernazione e ai problemi relativi all'ibernazione di una macchina virtuale Windows.
Per visualizzare la guida alla risoluzione dei problemi generale per l'ibernazione, vedere Risolvere i problemi di ibernazione in Azure.
Impossibile ibernare una macchina virtuale Windows
Se non è possibile ibernare una macchina virtuale, verificare prima di tutto se l'ibernazione è abilitata nella macchina virtuale.
Se l'ibernazione è abilitata nella macchina virtuale, verificare se l'ibernazione è abilitata correttamente nel sistema operativo guest. È possibile controllare lo stato dell'estensione hibernation per verificare se l'estensione è stata in grado di configurare correttamente il sistema operativo guest per l'ibernazione.
La visualizzazione dell'istanza della macchina virtuale avrà l'output finale dell'estensione:
"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"
}
]
},
Verificare inoltre che l'ibernazione sia abilitata come stato di sospensione all'interno del guest. L'output previsto per il guest dovrebbe essere simile al seguente.
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 Hibernate non è elencato come stato di sospensione supportato, dovrebbe esserci un motivo associato, che dovrebbe aiutare a determinare perché l'ibernazione non è supportata. Ciò si verifica se l'ibernazione guest non è configurata per la macchina virtuale.
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 l'estensione o lo stato di sospensione guest segnala un errore, è necessario aggiornare le configurazioni guest in base alle descrizioni degli errori per risolvere il problema. Dopo aver risolto tutti i problemi, è possibile verificare che l'ibernazione sia stata abilitata correttamente all'interno del guest eseguendo il comando "powercfg /a", che dovrebbe restituire Hibernate come uno degli stati di sospensione. Verificare anche che AzureHibernateExtension restituisca uno stato Succeeded. Se l'estensione è ancora in stato di errore, aggiornare lo stato dell'estensione attivando l'API della macchina virtuale riapplicata
Nota
Se l'estensione rimane in uno stato di errore, non è possibile ibernare la macchina virtuale.
Problemi comunemente riscontrati in caso di errore dell'estensione.
Problema | Azione |
---|---|
Il file di pagina si trova nel disco temporaneo. Spostarlo sul disco del sistema operativo per abilitare l'ibernazione. | Spostare il file di pagina nell'unità C: e attivare di nuovo l'applicazione nella macchina virtuale per eseguire nuovamente l'estensione |
Windows non è riuscito a configurare l'ibernazione a causa di spazio insufficiente per l'iberfile | Assicurarsi che l'unità C: abbia spazio sufficiente. È possibile provare a espandere il disco del sistema operativo, ovvero le dimensioni della partizione C: per risolvere questo problema. Dopo avere spazio sufficiente, attivare l'operazione Di riapplicazione in modo che l'estensione possa riprovare ad abilitare l'ibernazione nel guest e abbia esito positivo. |
Messaggio di errore dell'estensione: "Un dispositivo collegato al sistema non funziona" | Assicurarsi che l'unità C: abbia spazio sufficiente. È possibile provare a espandere il disco del sistema operativo, ovvero le dimensioni della partizione C: per risolvere questo problema. Dopo avere spazio sufficiente, attivare l'operazione Di riapplicazione in modo che l'estensione possa riprovare ad abilitare l'ibernazione nel guest e abbia esito positivo. |
L'ibernazione non è più supportata dopo l'abilitazione della sicurezza basata su virtualizzazione (VBS) all'interno del guest | Abilitare la virtualizzazione nel guest per ottenere funzionalità VBS insieme alla possibilità di ibernare il guest. Abilitare la virtualizzazione nel sistema operativo guest. |
L'abilitazione dell'ibernazione non è riuscita. Risposta dal comando powercfg. Codice di uscita: 1. Messaggio di errore: L'ibernazione non è riuscita con l'errore seguente: la richiesta non è supportata. Gli elementi seguenti impediscono l'ibernazione in questo sistema. La configurazione corrente di Device Guard disabilita l'ibernazione. Un componente di sistema interno ha disabilitato l'ibernazione. Hypervisor | Abilitare la virtualizzazione nel guest per ottenere funzionalità VBS insieme alla possibilità di ibernare il guest. Per abilitare la virtualizzazione nel guest, fare riferimento a questo documento |
Le macchine virtuali Windows guest non sono in grado di ibernare
Se un'operazione di iberna ha esito positivo, nel guest vengono visualizzati gli eventi seguenti:
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 l'ospite non riesce ad ibernarsi, mancano tutti o alcuni di questi eventi. Problemi comunemente riscontrati:
Problema | Azione |
---|---|
L'ibernazione del guest non riesce perché il servizio Arresto guest Hyper-V è disabilitato. È possibile controllare questa operazione eseguendo sc query vmicshutdown. | Assicurarsi che Arresto guest Hyper-V Servizio non sia disabilitato. L'abilitazione di questo servizio deve risolvere il problema. |
L'ibernazione del guest non riesce perché Power Service è disabilitato. È possibile verificarne l'esecuzione eseguendo sc Query Power. | Assicurarsi che Power Service non sia disabilitato. L'abilitazione di questo servizio deve risolvere il problema. |
L'ibernazione del guest non riesce perché HVCI (integrità della memoria) è abilitato. | Se l'integrità della memoria è abilitata nel guest e si sta tentando di ibernare la macchina virtuale, assicurarsi che il guest esegua la build minima del sistema operativo necessaria per supportare l'ibernazione con l'integrità della memoria. Win 11 22H2 - Build minima del sistema operativo - 22621.2134 Win 11 21H1 - Build minima del sistema operativo - 22000.2295 Win 10 22H2 - Build minima del sistema operativo - 19045.3324 |
Log necessari per la risoluzione dei problemi:
Se si verifica un problema al di fuori di questi scenari noti, i log seguenti possono aiutare Azure a risolvere il problema:
- Registri eventi pertinenti nel guest: Microsoft-Windows-Kernel-Power, Microsoft-Windows-Kernel-General, Microsoft-Windows-Kernel-Boot.
- Durante un controllo dei bug, è utile un dump di arresto anomalo del guest.
Non è possibile riprendere una macchina virtuale Windows
Quando si avvia una macchina virtuale da uno stato di ibernazione, è possibile usare la visualizzazione dell'istanza della macchina virtuale per ottenere altri dettagli sul fatto che il guest sia stato ripreso correttamente dallo stato di ibernazione precedente o se non è riuscito a riprendere e invece ha eseguito un avvio a freddo.
Output della visualizzazione dell'istanza della macchina virtuale quando il guest riprende correttamente:
{
"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 il guest di Windows non riesce a riprendere dallo stato precedente e dagli avvio a freddo, la risposta di visualizzazione dell'istanza della macchina virtuale è:
"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"
}
]
}
Eventi guest di Windows durante la ripresa
Se un guest riprende correttamente, sono disponibili gli eventi guest seguenti:
Log Name: System
Source: Kernel-Power
Event ID: 107
Level: Information
Description:
The system has resumed from sleep.
Se il guest non riesce a riprendere, mancano tutti o alcuni di questi eventi. Per risolvere i problemi relativi alla mancata ripresa del guest, sono necessari i log seguenti:
- Registri eventi nel guest: Microsoft-Windows-Kernel-Power, Microsoft-Windows-Kernel-General, Microsoft-Windows-Kernel-Boot.
- Nel controllo dei bug è necessario un dump di arresto anomalo del guest.