針對 Windows VM 上的休眠進行疑難解答
藉由讓虛擬機器進入休眠,可將 VM 狀態保存至作業系統磁碟。 本文說明如何針對 Windows 中休眠功能的問題進行疑難解答、建立已啟用休眠功能的 Windows VM 的問題,以及休眠 Windows VM 的問題。
若要檢視休眠的一般疑難解答指南,請參閱 針對 Azure 中的休眠進行疑難解答。
無法休眠 Windows VM
如果您無法休眠 VM,請先 檢查 VM 上是否已啟用休眠。
如果 VM 已啟用休眠功能,則檢查客體作業系統中是否成功啟用休眠功能。 您可以檢查休眠延伸模組的狀態,以查看擴充功能是否能夠成功設定客體 OS 以進行休眠。
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 是否傳回「已成功」狀態。 如果延伸模組仍處於失敗狀態,請觸發重新套用 VM API,藉此更新延伸模組狀態
注意
如果擴充功能仍處於失敗狀態,您就無法休眠 VM。
延伸模組失敗的常見問題。
問題 | 動作 |
---|---|
頁面檔案位於暫存磁碟。 將其移至作業系統磁碟以啟用休眠。 | 將頁面檔案移至 C 磁碟機,並在 VM 上觸發重新套用以重新執行延伸模組 |
Windows 因 Hiberfile 空間不足而無法設定休眠 | 確定 C 磁碟機有足夠的空間。 您可以嘗試擴充作業系統磁碟與 C 分割區的大小以解決問題。 擁有足夠空間後,請觸發重新套用作業,以利延伸模組重試並成功在客體啟用休眠。 |
擴充功能錯誤訊息:「附加至系統的裝置無法運作」 | 確定 C 磁碟機有足夠的空間。 您可以嘗試擴充作業系統磁碟與 C 分割區的大小以解決問題。 擁有足夠空間後,請觸發重新套用作業,以利延伸模組重試並成功在客體啟用休眠。 |
在客體啟用虛擬化型安全性 (VBS) 後,不再支援休眠 | 若要同時獲得 VBS 功能與客體休眠功能,請在客體啟用虛擬化。 在客體作業系統中啟用虛擬化。 |
啟用休眠失敗。 來自 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 查詢 vmicshutdown 來檢查此情況。 | 確定 Hyper-V 客體關機服務未停用。 啟用此服務後應能解決問題。 |
客體無法休眠,因為Power Service已停用。 您可以執行 sc 查詢能力來檢查此情況。 | 請確定Power Service 未停用。 啟用此服務應該可以解決問題。 |
因為 HVCI (記憶體完整性) 已啟用,導致客體無法休眠。 | 如果在客體中啟用記憶體完整性,而且您嘗試休眠 VM,請確定客體正在執行支援記憶體完整性休眠所需的最低 OS 組建。 Win 11 22H2 – 最低作業系統組建 - 22621.2134 Win 11 21H1 – 最低作業系統組建 - 22000.2295 Win 10 22H2 - 最低作業系統組建 - 19045.3324 |
進行疑難排解所需的記錄:
如果遇到這些已知案例以外的問題,下列記錄可協助 Azure 針對問題進行疑難排解:
- 客體的相關事件記錄檔:Microsoft-Windows-Kernel-Power、Microsoft-Windows-Kernel-General、Microsoft-Windows-Kernel-Boot。
- 在錯誤檢查期間,客體損毀傾印很有説明。
無法繼續 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。
- 在錯誤檢查中,需要客體損毀傾印。