适用于:✔️ Linux VM
休眠让你可以暂停当前未使用的 VM,并节省计算成本。 它是适用于以下方案的有效成本管理功能:
- 虚拟桌面、开发/测试服务器及其他 VM 无需 24/7 运行的方案。
- 由内存密集型应用程序导致启动时间较长的系统。 这些应用程序可以在 VM 上初始化并置于休眠状态。 然后,这些“预热的”VM 可以在需要时快速启动,而应用程序已启动并在所需状态下运行。
休眠的工作原理
若要了解休眠的工作原理,请查看 休眠概述。
支持的配置
休眠支持仅限于某些虚拟机(VM)大小和作系统(OS)版本。 在使用休眠之前,请确保你具有受支持的配置。
有关与休眠兼容的 VM 大小的列表,请查看 休眠概述中支持的 VM 大小部分。
支持的 Linux 发行版
以下 Linux作系统支持休眠:
Ubuntu 22.04 LTS (Long-Term 支持)
Ubuntu 20.04 LTS (Long-Term 支持)
Ubuntu 18.04 LTS (Long-Term 支持)
Debian 11
Debian 10 (带有后移植内核)
Red Hat Enterprise Linux 9.0 及更高版本(最低内核版本 5.14.0-70)
Red Hat Enterprise Linux 8.5 及更高版本(最低内核版本 4.18.0-348)
先决条件和配置限制
对于常规限制、Azure 功能限制所支持的 VM 大小以及功能先决条件,请查看休眠概述中的“支持的配置”部分。
创建启用了休眠功能的 Linux VM
若要休眠 VM,必须先在 VM 上启用该功能。
若要在 VM 创建过程中启用休眠,可以使用 CLI、PowerShell、ARM 模板和 API。
若要在 Azure CLI 中启用休眠,请通过运行以下 az vm create 命令并将 --enable-hibernation
设置为 true
来创建 VM。
az vm create --resource-group myRG \
--name myVM \
--security-type Standard \
--image Ubuntu2204 \
--public-ip-sku Standard \
--size Standard_D2s_v5 \
--enable-hibernation true
若要使用 PowerShell 创建 VM 时启用休眠,请运行以下命令:
New-AzVm `
-ResourceGroupName 'myRG' `
-Name 'myVM' `
-Location 'China North' `
-VirtualNetworkName 'myVnet' `
-SubnetName 'mySubnet' `
-SecurityGroupName 'myNetworkSecurityGroup' `
-PublicIpAddressName 'myPublicIpAddress' `
-Size Standard_D2s_v5 `
-Image 'imageName' `
-HibernationEnabled `
-OpenPorts 80,3389
若要创建已启用休眠的 VM,请将 hibernationEnabled 设置为 true
。
PUT https://management.chinacloudapi.cn/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/{vm-name}?api-version=2021-11-01
{
"location": "chinanorth",
"properties": {
"hardwareProfile": {
"vmSize": "Standard_D2s_v5"
},
"additionalCapabilities": {
"hibernationEnabled": true
}
}
}
若要了解有关 REST 的详细信息,请查看 API 示例
创建启用了休眠的 VM 后,需要将客户操作系统配置以成功休眠 VM。
在现有 Linux VM 上启用休眠
若要在现有 VM 上启用休眠,可以使用 Azure CLI、PowerShell 或 REST API。 在继续之前,请确保来宾操作系统版本支持在 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 上启用休眠,请先停止 VM,然后 Stop-Az 解除分配 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:休眠设置工具
LinuxHibernateExtension
注释
如果已安装 hibernation-setup-tool,则无需安装 LinuxHibernateExtension。 这些步骤是在 Linux VM 上启用休眠的冗余方法。
通过 Azure 门户创建已启用 Hibernation 的 VM 时,LinuxHibernationExtension 会自动安装在 VM 上。
如果缺少该扩展,可以在 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 上启用休眠的冗余方法。
可以从 packages.microsoft.com Microsoft 的 Linux 软件存储库在 Linux VM 上安装休眠-安装程序工具包。
若要使用 Linux 软件存储库,请按照 Linux 包存储库中的 Microsoft 软件说明。
若要在 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 LVM,需要扩展根卷,并确保有足够的空间可用于创建交换文件。 若要扩展磁盘卷,请查看磁盘扩展指南。
一旦安装包成功安装,您的 Linux 虚拟机操作系统将被配置为休眠。 您还可以从该虚拟机创建一个新的 Azure 计算库映像,并使用该映像创建虚拟机。 使用此映像创建的 VM 预安装休眠包,简化了 VM 创建体验。
使 VM 休眠
创建启用了休眠状态的 VM 并配置来宾 OS 以供休眠后,可以通过 Azure CLI、PowerShell 或 REST API 休眠 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.chinacloudapi.cn/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.chinacloudapi.cn/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.chinacloudapi.cn/subscriptions/../providers/Microsoft.Compute/virtualMachines/{vmName}/start?api-version=2020-12-01
从 Azure 计算图库部署启用休眠功能的虚拟机
可以为从计算图库映像创建的虚拟机启用休眠功能。 确保与映像库关联的操作系统版本在 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 = "chinanorth"
$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 磁盘关联的 OS 版本支持在 Azure 上休眠。 请参阅支持的 OS 版本列表。
若要使用 OS 磁盘创建启用了休眠的 VM,请确保 OS 磁盘已启用休眠属性。 请参阅 API 示例,在 OS 磁盘上启用此属性。 在 OS 磁盘上启用休眠属性后,可以使用该 OS 磁盘创建已启用休眠的 VM。
PATCH https://management.chinacloudapi.cn/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myDisk?api-version=2021-12-01
{
"properties": {
"supportsHibernation": true
}
}
故障排除
有关详细信息,请参阅 Hibernate 故障排除指南 和 Linux VM 休眠故障排除指南。
常见问题解答
有关详细信息,请参阅 休眠常见问题解答。
后续步骤