休眠 Windows 虛擬機
本文內容
適用於: ✔️ Windows VM
休眠功能可讓您暫停未使用的 VM,並節省計算成本。 這項有效的成本管理功能適用於以下案例:
虛擬桌面、開發/測試伺服器,以及 VM 無須全天候執行的其他案例。
由於內含記憶體密集型應用程式,開機時間很長的系統。 這些應用程式可以在 VM 上初始化並進入休眠。 接著,這些預先載入的 VM 可以在需要時快速啟動,同時啟動應用程式並以所需狀態執行。
休眠的運作方式
若要瞭解休眠的運作方式,請參閱 休眠概觀 。
支援的設定
休眠支援僅限於特定 VM 大小和 OS 版本。 使用休眠功能前,請確認您有支援的設定。
如需休眠相容的 VM 大小清單,請參閱 休眠概觀 中的支援 VM 大小一節。
支援的 Windows 版本
以下是支援休眠功能的 Windows 作業系統:
Windows Server 2022
Windows Server 2019
Windows 11 專業版
Windows 11 企業版
Windows 11 企業版多工作模式
Windows 10 Pro
Windows 10 企業版
Windows 10 企業版多工作階段
必要條件和設定限制
Windows 頁面檔案不能位於暫存磁碟上。
當您在 VM 上啟用「可信啟動」,並在客體 OS 中啟動「巢狀虛擬化」時,需要虛擬化型安全性 (VBS) 的 Device Guard 和 Credential Guard 等應用程式會使用休眠功能。
如需一般限制,Azure 功能限制支援的 VM 大小,以及功能必要條件,請參閱休眠概觀 中的<支援的組態>一節。
建立已啟用休眠功能的 Windows VM
若要休眠 VM,您必須先在 VM 上啟用此功能。
若要在建立 VM 的期間啟用休眠功能,您可以使用 Azure 入口網站、CLI、PowerShell、ARM 範本和 API。
若要在 Azure 入口網站中啟用休眠功能,請在建立 VM 的期間勾選 [啟用休眠] 核取方塊。
若要在 Azure CLI 中啟用休眠功能,請執行下列 az vm create 命令來建立 VM,並將 --enable-hibernation
設定為 true
。
az vm create --resource-group myRG \
--name myVM \
--image Win2019Datacenter \
--public-ip-sku Standard \
--size Standard_D2s_v5 \
--enable-hibernation true
若要在使用 PowerShell 建立 VM 時啟用休眠功能,請執行下列命令:
New-AzVm `
-ResourceGroupName 'myRG' `
-Name 'myVM' `
-Location 'East US' `
-VirtualNetworkName 'myVnet' `
-SubnetName 'mySubnet' `
-SecurityGroupName 'myNetworkSecurityGroup' `
-PublicIpAddressName 'myPublicIpAddress' `
-Size Standard_D2s_v5 `
-Image Win2019Datacenter `
-HibernationEnabled `
-OpenPorts 80,3389
若要建立已啟用休眠的 VM,請將 hibernationEnabled 設定 為 true
。
PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/{vm-name}?api-version=2021-11-01
{
"location": "eastus",
"properties": {
"hardwareProfile": {
"vmSize": "Standard_D2s_v5"
},
"additionalCapabilities": {
"hibernationEnabled": true
}
}
}
若要深入了解 REST,請參閱 API 範例
建立已啟用休眠功能的 VM 後,您必須設定客體 OS 以成功讓 VM 進入休眠。
在現有的 Windows VM 上啟用休眠
若要在現有的 VM 上啟用休眠功能,您可以使用 Azure CLI、PowerShell 或 REST API。 繼續之前,請確定客體 OS 版本支援 Azure 上的休眠狀態。 如需詳細資訊,請參閱 支援的OS版本 。
注意
確定頁面檔案位於 。C: drive
視需要將頁面檔案移至 C: drive
,然後再繼續。
若要使用 Azure CLI 在現有的 VM 上啟用休眠功能,請先使用 az vm deallocate 解除分配 VM。 解除分配 VM 之後,請更新 OS 磁碟和 VM。
更新 OS 磁碟,將 supportsHibernation 設定 為 true
。 如果 supportsHibernation 已設定為 true
,您可以略過此步驟並繼續進行下一個步驟。
az disk update --resource-group myResourceGroup \
--name MyOSDisk \
--set supportsHibernation=true
更新 VM 以啟用休眠。
az vm update --resource-group myResourceGroup \
--name myVM \
--enable-hibernation true
啟動 VM,然後繼續在客體 OS 中設定休眠。
az vm start --resource-group myResourceGroup \
--name myVM \
若要使用 Azure PowerShell 在現有的 VM 上啟用休眠功能,請先使用 Stop-Az vm 解除分配 來停止您的 VM。 解除分配 VM 之後,請更新 OS 磁碟和 VM。
Stop-AzVM `
-ResourceGroupName 'myResourceGroup' `
-Name 'myVM'
一旦 VM 停止,請更新 OS 磁碟,將 SupportsHibernation 設定 為 true
。 如果 SupportsHibernation 已設定為 true
,則您可以略過此步驟,然後繼續進行下一個步驟。
$disk = Get-AzDisk `
-ResourceGroupName "myResourceGroup" `
-DiskName "myOSDisk"
$disk.SupportsHibernation = $True
Update-AzDisk `
-ResourceGroupName ‘myResourceGroup' `
-DiskName 'myOSDisk' `
-Disk $disk
在 VM 上啟用休眠。
$vm= Get-AzVM `
-ResourceGroupName "myResourceGroup" `
-Name "myVM"
Update-AzVM `
-ResourceGroupName "myResourceGroup" `
-VM $vm `
-HibernationEnabled
啟動 VM,然後繼續在客體 OS 中設定休眠。
Start-AzVM `
-ResourceGroupName 'myResourceGroup' `
-Name 'myVM'
在客體OS中設定休眠
若在建立 Windows VM 時啟用休眠功能,系統會自動安裝 'Microsoft.CPlat.Core.WindowsHibernateExtension' VM 擴充功能。 此擴充功能會將客體 OS 設定為休眠狀態。 此擴充功能不需要手動安裝或更新,因為此擴充功能由 Azure 平台管理。
注意
當您建立已啟用休眠的 VM 時,Azure 會自動將頁面檔案放在 。C: drive
如果您要在現有的 VM 或使用特製化映像上啟用休眠功能,則必須遵循其他步驟,以確保頁面檔案位於 C: drive
。
注意
使用 WindowsHibernateExtension 時,需要在 VM 上安裝 Azure VM 代理程式。 如果您選擇退出 Azure VM 代理程式,則可以在客體內執行 powercfg /h /type full,將 OS 設定為休眠狀態。 接著,您可以使用 powercfg /a 命令來確認客體內部是否啟用休眠功能。
休眠 VM
建立已啟用休眠功能的 VM,並將客體 OS 設定為休眠狀態後,您可以透過 Azure 入口網站、Azure CLI、PowerShell 或 REST API 來讓 VM 進入休眠。
若要在 Azure 入口網站中讓 VM 進入休眠,請按一下 VM [概觀] 頁面上的 [休眠] 按鈕。
若要在 Azure CLI 中讓 VM 進入休眠,請執行此命令:
az vm deallocate --resource-group TestRG --name TestVM --hibernate true
若要在 PowerShell 中讓 VM 進入休眠,請執行此命令:
Stop-AzVM -ResourceGroupName "TestRG" -Name "TestVM" -Hibernate
執行上述命令後,請輸入 'Y' 以繼續:
Virtual machine stopping operation
This cmdlet will stop the specified virtual machine. Do you want to continue?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
若要使用 REST API 讓 VM 進入休眠,請執行此命令:
POST
https://management.azure.com/subscriptions/.../providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate?hibernate=true&api-version=2021-03-01
檢視休眠 VM 的狀態
若要在入口網站中檢視 VM 的狀態,請檢查概觀頁面上的 [狀態]。 狀態應該會顯示為「休眠 (已解除配置)」
若要使用 PowerShell 檢視 VM 的狀態:
Get-AzVM -ResourceGroupName "testRG" -Name "testVM" -Status
您的輸出看起來應該像這樣:
ResourceGroupName : testRG
Name : testVM
HyperVGeneration : V1
Disks[0] :
Name : testVM_OsDisk_1_d564d424ff9b40c987b5c6636d8ea655
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 4/17/2022 2:39:51 AM
Statuses[0] :
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 4/17/2022 2:39:51 AM
Statuses[1] :
Code : PowerState/deallocated
Level : Info
DisplayStatus : VM deallocated
Statuses[2] :
Code : HibernationState/Hibernated
Level : Info
DisplayStatus : VM hibernated
若要使用 Azure CLI 檢視 VM 的狀態:
az vm get-instance-view -g MyResourceGroup -n myVM
您的輸出看起來應該像這樣:
{
"additionalCapabilities": {
"hibernationEnabled": true,
"ultraSsdEnabled": null
},
"hardwareProfile": {
"vmSize": "Standard_D2s_v5",
"vmSizeProperties": null
},
"instanceView": {
"assignedHost": null,
"bootDiagnostics": null,
"computerName": null,
"statuses": [
{
"code": "ProvisioningState/succeeded",
"displayStatus": "Provisioning succeeded",
"level": "Info",
"message": null,
"time": "2022-04-17T02:39:51.122866+00:00"
},
{
"code": "PowerState/deallocated",
"displayStatus": "VM deallocated",
"level": "Info",
"message": null,
"time": null
},
{
"code": "HibernationState/Hibernated",
"displayStatus": "VM hibernated",
"level": "Info",
"message": null,
"time": null
}
],
},
若要使用 REST API 檢視 VM 的狀態,請執行此命令:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/instanceView?api-version=2020-12-01
您的輸出看起來應該像這樣:
"statuses":
[
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"time": "2019-10-14T21:30:12.8051917+00:00"
},
{
"code": "PowerState/deallocated",
"level": "Info",
"displayStatus": "VM deallocated"
},
{
"code": "HibernationState/Hibernated",
"level": "Info",
"displayStatus": "VM hibernated"
}
]
啟動休眠的 VM
您可以啟動休眠的 VM,操作方式和啟動已停止的 VM 相同。 這可透過 Azure 入口網站、Azure CLI、PowerShell 或 REST API 來完成。
若要使用 Azure 入口網站啟動休眠的 VM,請按一下 VM [概觀] 頁面上的 [啟動] 按鈕。
若要使用 Azure CLI 啟動休眠的 VM,請執行此命令:
az vm start -g MyResourceGroup -n MyVm
若要使用 PowerShell 啟動休眠的 VM,請執行此命令:
Start-AzVM -ResourceGroupName "ExampleRG" -Name "ExampleName"
若要使用 REST API 啟動休眠的 VM,請執行此命令:
POST https://management.azure.com/subscriptions/../providers/Microsoft.Compute/virtualMachines/{vmName}/start?api-version=2020-12-01
從 Azure Compute Gallery 部署已啟用休眠功能的 VM
您也可以啟用從計算資源庫映像建立的 VM 以進行休眠程序。 請確定與資源庫映像相關聯的 OS 版本支援 Azure 休眠功能。 請參閱支援的 OS 版本清單。
若要使用資源庫映像建立已啟用休眠功能的 VM,您必須先建立已啟用休眠屬性的新映像定義。 在資源庫映像定義上啟用此功能屬性後,您可以建立映像版本 ,並使用該映像版本來建立已啟用休眠功能的 VM。
注意
針對特製化的 Windows 映像,頁面檔案位置必須設定為 C:磁碟機,Azure 才能將客體 OS 成功設定為休眠狀態。
如果您要從現有的 VM 建立映像版本,您應該先將頁面檔案移至 OS 磁碟,然後使用 VM 作為映像版本的來源。
若要建立已啟用休眠屬性的映像定義,請選取 [啟用休眠] 核取記號。
az sig image-definition create --resource-group MyResourceGroup \
--gallery-name MyGallery --gallery-image-definition MyImage \
--publisher GreatPublisher --offer GreatOffer --sku GreatSku \
--os-type linux --os-state Specialized \
--features IsHibernateSupported=true
$rgName = "myResourceGroup"
$galleryName = "myGallery"
$galleryImageDefinitionName = "myImage"
$location = "eastus"
$publisherName = "GreatPublisher"
$offerName = "GreatOffer"
$skuName = "GreatSku"
$description = "My gallery"
$IsHibernateSupported = @{Name='IsHibernateSupported';Value='True'}
$features = @($IsHibernateSupported)
New-AzGalleryImageDefinition -ResourceGroupName $rgName -GalleryName $galleryName -Name $galleryImageDefinitionName -Location $location -Publisher $publisherName -Offer $offerName -Sku $skuName -OsState "Generalized" -OsType "Windows" -Description $description -Feature $features
從 OS 磁碟部署已啟用休眠功能的 VM
您也可以啟用從 OS 磁碟建立的 VM 以進行休眠程序。 請確定與 OS 磁碟相關聯的 OS 版本支援 Azure 休眠功能。 請參閱支援的 OS 版本清單。
若要使用 OS 磁碟建立已啟用休眠功能的 VM,請確定 OS 磁碟已啟用休眠屬性。 請參閱 API 範例,在 OS 磁碟上啟用此屬性。 在 OS 磁碟上啟用休眠屬性後,您可以使用該 OS 磁碟建立已啟用休眠功能的 VM。
PATCH https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myDisk?api-version=2021-12-01
{
"properties": {
"supportsHibernation": true
}
}
疑難排解
如需 詳細資訊,請參閱休眠疑難解答指南 和 Windows VM 休眠疑難解答指南 。
常見問題集
如需詳細資訊, 請參閱休眠常見問題 。
下一步