休眠Linux虛擬機
本文內容
適用於: ✔️ Linux VM
休眠功能可讓您暫停未使用的 VM,並節省計算成本。 這項有效的成本管理功能適用於以下案例:
虛擬桌面、開發/測試伺服器,以及 VM 無須全天候執行的其他案例。
由於內含記憶體密集型應用程式,開機時間很長的系統。 這些應用程式可以在 VM 上初始化並進入休眠。 接著,這些預先載入的 VM 可以在需要時快速啟動,同時啟動應用程式並以所需狀態執行。
休眠的運作方式
若要瞭解休眠的運作方式,請參閱 休眠概觀 。
支援的設定
休眠支援僅限於特定 VM 大小和 OS 版本。 使用休眠功能前,請確認您有支援的設定。
如需休眠相容的 VM 大小清單,請參閱 休眠概觀 中的支援 VM 大小一節。
支援的Linux散發版本
以下是支援休眠功能的 Linux 作業系統:
Ubuntu 22.04 LTS
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Debian 11
具有反向移植核心的 Debian 10
RHEL 9.0 和更新版本 (最低核心版本 5.14.0-70)
RHEL 8.3 和更新版本 (最低核心版本 4.18.0.240)
必要條件和設定限制
如需一般限制,Azure 功能限制支援的 VM 大小,以及功能必要條件,請參閱休眠概觀 中的<支援的組態>一節。
建立已啟用休眠的Linux 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 Ubuntu2204 \
--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 'imageName' `
-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 進入休眠。
在現有的Linux VM上啟用休眠
若要在現有的 VM 上啟用休眠功能,您可以使用 Azure CLI、PowerShell 或 REST API。 繼續之前,請確定客體 OS 版本支援 Azure 上的休眠狀態。 如需詳細資訊,請參閱 支援的OS版本 。
若要使用 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中設定休眠
確保支援 VM 設定之後,您可以使用下列兩個選項之一在 Linux VM 上啟用休眠功能:
選項 1 :LinuxHibernateExtension
選項 2 :hibernation-setup-tool
LinuxHibernateExtension
注意
如果您已安裝休眠-setup-tool,則不需要安裝 LinuxHibernateExtension。 這些都是在Linux VM上啟用休眠的備援方法。
當您透過 Azure 入口網站建立已啟用休眠功能的 VM 時,系統會自動在 VM 上安裝 LinuxHibernationExtension。
如果遺漏此擴充功能,您可以手動在 Linux VM 上安裝 LinuxHibernateExtension ,以設定客體 OS 的休眠程序。
注意
針對 RHEL LVM,您必須擴充根磁碟區,並確定有足夠的空間可供建立交換檔案。 若要展開磁碟區, 請檢查磁碟擴充指南 。
若要使用 Azure CLI 安裝 LinuxHibernateExtension ,請執行下列命令:
az vm extension set -n LinuxHibernateExtension --publisher Microsoft.CPlat.Core --version 1.0 \ --vm-name MyVm --resource-group MyResourceGroup --enable-auto-upgrade true
若要使用 PowerShell 安裝 LinuxHibernateExtension,請執行下列命令:
Set-AzVMExtension -Publisher Microsoft.CPlat.Core -ExtensionType LinuxHibernateExtension -VMName <VMName> -ResourceGroupName <RGNAME> -Name "LinuxHibernateExtension" -Location <Location> -TypeHandlerVersion 1.0
注意
如果您已安裝LinuxHibernateExtension,則不需要安裝hibernation-setup-tool。 這些都是在Linux VM上啟用休眠的備援方法。
您可以在 Microsoft Linux 軟體存放庫 (packages.microsoft.com ) 安裝 hibernation-setup-tool 套件。
若要使用 Linux 軟體存放庫,請遵循適用於 Microsoft 軟體的 Linux 套件存放庫 中的指示。
若要在 Debian 和 Ubuntu 版本中使用 hibernation-setup-tool,請開啟 git bash 並執行此命令:
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo tee etc/apt/trusted.gpg.d/microsoft.asc
sudo apt-add-repository https://packages.microsoft.com/ubuntu/20.04/prod
sudo apt-get update
若要安裝套件,請在 Git Bash 中執行此命令:
sudo apt-get install hibernation-setup-tool
若要在 RHEL 版本中使用休眠-setup-tool,請執行此命令:
curl -sSL -O https://packages.microsoft.com/config/rhel/9/packages-microsoft-prod.rpm
sudo rpm -i packages-microsoft-prod.rpm
rm packages-microsoft-prod.rpm
sudo dnf update
sudo dnf install hibernation-setup-tool
注意
針對 RHEL LVM,您必須擴充根磁碟區,並確定有足夠的空間可供建立交換檔案。 若要展開磁碟區, 請檢查磁碟擴充指南 。
成功安裝套件之後,您的 Linux 客體 OS 會設定為休眠狀態。 您也可以從此 VM 建立新的 Azure Compute Gallery 映像,並使用映像來建立 VM。 使用此映像建立的 VM 已預安裝休眠套件,以簡化 VM 建立體驗。
休眠 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
}
}
疑難排解
如需 詳細資訊,請參閱休眠疑難解答指南 和 Linux VM休眠疑難解答指南 。
常見問題集
如需詳細資訊, 請參閱休眠常見問題 。
下一步