对 Azure VM 进行电源管理
有关所需权限的信息,请参阅所需的 Azure 权限。
Azure 按需预配
在采用 Azure 按需预配的情况下,仅在完成预配后,当 Citrix Virtual Apps and Desktops 启动打开电源操作时才创建 VM。
使用 MCS 在 Azure Resource Manager 中创建计算机目录时,Azure 按需预配功能:
- 降低存储成本
- 加快目录创建过程
创建 MCS 目录时,Azure 门户将显示资源组中的网络安全组、网络接口、基础映像和身份磁盘。
在 Citrix Virtual Apps and Desktops 为 VM 启动打开电源操作之前,Azure 门户不会显示 VM。有两种类型的计算机,它们有以下区别:
- 对于池计算机,仅当存在 VM 时才会有操作系统磁盘和写回缓存。在控制台中关闭池计算机时,该 VM 在 Azure 门户中不可见。如果您经常关闭计算机(例如,在工作时间以外),则可以显著节省存储成本。
- 对于专用计算机,在首次打开 VM 时创建操作系统磁盘。Azure 门户中的 VM 将保留在存储中,直到计算机标识被删除。在控制台中关闭专用计算机时,该 VM 仍在 Azure 门户中可见。
注意:
支持在按需预配功能(“旧版”目录)被弃用之前创建的 Azure 目录。因此,请重新创建 Azure 旧版目录 VM。然后按需预配目录,从而节省存储成本。
重启电源时保留预配的虚拟机
选择在重启电源时是否保留预配的虚拟机。使用 PowerShell 参数 New-ProvScheme CustomProperties
。此参数支持额外的属性 PersistVm
,用于确定重启电源后预配的虚拟机是否仍然存在。将 PersistVm
属性设置为 true 以在关闭电源时保留虚拟机,或者将属性设置为 false 以确保在关闭电源时不保留虚拟机。
注意:
PersistVm
属性仅适用于启用了属性CleanOnBoot
和UseWriteBackCache
的预配方案。如果没有为非永久性虚拟机指定PersistVm
属性,则在关闭电源时将从 Azure 环境中删除这些虚拟机。
在以下示例中,New-ProvScheme CustomProperties
参数将 PersistVm
属性设置为 true:
<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="UseManagedDisks" Value="true" />
<Property xsi:type="StringProperty" Name="StorageType" Value="Standard_LRS" />
<Property xsi:type="StringProperty" Name="PersistWBC" Value="false" />
<Property xsi:type="StringProperty" Name="PersistOsDisk" Value="true" />
<Property xsi:type="StringProperty" Name="PersistVm" Value="true" />
<Property xsi:type="StringProperty" Name="ResourceGroups" Value="demo-resourcegroup" />
<Property xsi:type="StringProperty" Name="LicenseType" Value="Windows_Client" />
</CustomProperties>
<!--NeedCopy-->
在以下示例中,New-ProvScheme CustomProperties
参数通过将 PersistVM
设置为 true 来保留回写式缓存:
New-ProvScheme
-AzureAdJoinType "None"
-CleanOnBoot
-CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"UseManagedDisks`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"StorageType`" Value=`"Standard_LRS`" /><Property xsi:type=`"StringProperty`" Name=`"PersistWBC`" Value=`"false`" /><Property xsi:type=`"StringProperty`" Name=`"PersistOsDisk`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"PersistVm`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"ResourceGroups`" Value=`"demo-resourcegroup`" /><Property xsi:type=`"StringProperty`" Name=`"LicenseType`" Value=`"Windows_Client`" /></CustomProperties>"
-HostingUnitName "demo"
-IdentityPoolName "NonPersistent-MCSIO-PersistVM"
-MasterImageVM "XDHyp:\HostingUnits\demo\image.folder\scale-test.resourcegroup\demo-snapshot.snapshot"
-NetworkMapping @ {"0"="XDHyp:\HostingUnits\demo\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\ji-test.resourcegroup\jitest-vnet.virtualprivatecloud\default.network"}
-ProvisioningSchemeName "NonPersistent-MCSIO-PersistVM"
-ServiceOffering "XDHyp:\HostingUnits\demo\serviceoffering.folder\Standard_B2ms.serviceoffering" -UseWriteBackCache
-WriteBackCacheDiskSize 127
-WriteBackCacheMemorySize 256
<!--NeedCopy-->
提示:
PersistVm
属性决定是否保留预配的虚拟机。PersistOsdisk
属性决定是否保留操作系统磁盘。要保留预配的虚拟机,请先保留操作系统磁盘。请勿在未先删除虚拟机的情况下删除操作系统磁盘。可以在不使用指定PersistVm
参数的情况下使用PersistOsdisk
属性。
自定义存储类型更改失败时的打开电源行为
打开电源时,由于 Azure 出现故障,托管磁盘的存储类型可能无法更改为所需类型。在这些情况下,VM 将保持关闭状态并向您发送故障消息。但是,您可以选择在存储无法还原到其配置的类型时打开 VM 的电源,也可以选择保持 VM 处于关闭状态。
-
如果您将自定义属性
FailSafeStorageType
配置为 true(默认设置)或者未在New-ProvScheme
或Set-ProvScheme
命令中指定该属性:- 打开电源时,VM 将开机,但存储类型不正确。
- 关闭时,VM 保持关闭状态,但存储类型不正确。
-
如果您在
New-ProvScheme
或Set-ProvScheme
命令中将自定义属性FailSafeStorageType
配置为 false:- 打开电源后,VM 保持关闭状态,但存储类型不正确。
- 关闭时,VM 保持关闭状态,但存储类型不正确。
要创建计算机目录,请执行以下操作:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*
以加载 Citrix 特定的 PowerShell 模块。 - 创建标识池(如果尚未创建)。
-
在
New-ProvScheme
中添加自定义属性。例如:New-ProvScheme -HostingUnitName "Azure-Resources-1" -IdentityPoolName "name" -InitialBatchSizeHint 1 -MasterImageVM "XDHyp:\HostingUnits\Azure-Resources-1\image.folder\abc.resourcegroup\def.snapshot" -NetworkMapping @{"0"="XDHyp:\HostingUnits\Azure-Resources-1\ght.folder\abc.resourcegroup\abc-vnet.virtualprivatecloud\default.network"} -ProvisioningSchemeName "name" -ServiceOffering "XDHyp:\HostingUnits\Azure-Resources-1\serviceoffering.folder\Standard_DS2_v2.serviceoffering" -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"> <Property xsi:type=`"StringProperty`" Name=`"StorageType`" Value=`"Premium_LRS`" /> <Property xsi:type=`"StringProperty`" Name=`"StorageTypeAtShutdown`" Value=`"Standard_LRS`" /> <Property xsi:type=`"StringProperty`" Name=`"FailSafeStorageType`" Value=`"true`" /> </CustomProperties>" <!--NeedCopy-->
- 然后,创建计算机目录。有关如何使用 Remote PowerShell SDK 创建目录的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/。
更新现有计算机目录以包含自定义属性 FailSafeStorageType
。此更新不影响现有 VM。
- 更新
Set-ProvScheme
命令中的自定义属性。例如:
Set-ProvScheme -ProvisioningSchemeName <String> -CustomProperties "
<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`">
<Property xsi:type=`"StringProperty`" Name=`"StorageType`" Value=`"Premium_LRS`" />
<Property xsi:type=`"StringProperty`" Name=`"IdentityDiskStorageType`" Value=`"Premium_LRS`" />
<Property xsi:type=`"StringProperty`" Name=`"FailSafeStorageType`" Value=`"false`" />
</CustomProperties>"
<!--NeedCopy-->
要将在 Set-ProvScheme 中所做的更改应用到现有 VM,请运行带 -StartsNow
和 -DurationInMinutes -1
参数的 Set-ProvVMUpdateTimeWindow
命令。
-
运行带
-StartsNow
和-DurationInMinutes -1
参数的Set-ProvVMUpdateTimeWindow
命令。例如:Set-ProvVMUpdateTimeWindow -ProvisioningSchemeName my-catalog -VMName <List-Of-Vm-Names> -StartsNow -DurationInMinutes -1 <!--NeedCopy-->
-
重新启动 VM。
创建具有休眠功能的 VM
在 Azure 环境中,您可以创建支持休眠的 MCS 计算机目录。使用此功能,您可以挂起 VM,然后在用户再次登录时重新连接到 VM 的先前状态。
休眠功能适用于以下对象:
- 单会话操作系统
- 永久性和非永久性 VM
- 静态和随机(池)VDI 桌面
无论 VDI 桌面是静态还是随机,都可以在 VM 休眠后恢复到同一个会话。
在本部分内容中,请参阅以下内容:
使用休眠的必备条件
要使用休眠,请务必完成以下任务:
- 在 Windows 和 Linux 的主映像上安装 Azure VM Agent。Windows 映像的页面文件可以位于临时磁盘上。在计算机目录上启用了休眠时,MCS 会将页面文件位置设置为基础磁盘中的 C: 驱动器。
- MCS 自动为生成的资源设置休眠属性。您无需配置主资源的属性即可支持休眠。
- 在订阅中使用支持休眠的 VM 大小。
-
创建具有休眠功能的计算机配置文件(VM 或模板规范),以便 VM 继承休眠功能。要创建 VM,请参阅 Getting started with hibernation(开始休眠)。
注意:
根据 Microsoft 的说法,您可以从操作系统磁盘部署启用了休眠的 VM。目前,某些区域支持此功能,并将很快在所有区域推出。有关详细信息,请参阅“从操作系统磁盘部署启用了休眠的 VM”。
要创建模板规范,请执行以下操作:
- 打开 Azure 门户。选择要在模板中使用其配置的 VM。在左侧窗格中选择导出模板。
- 清除 Include parameters(包括参数)复选框。复制上下文并将其另存为 JSON 文件,例如
VMExportTemplate.json
。 - 确保参数
hibernationEnabled
在模板上设置为true
。如果该参数未设置未true
,请检查您使用的 VM 配置。可以在模板文件中指定支持的 VM 大小。但是,也可以在创建目录时指定计算机大小。 - 将网络接口资源的模板添加到 JSON 文件
VMExportTemplate.json
中。因此,您有一个包含两个资源的 ARM 模板文件。 - 选择 Azure Portal (Azure 门户)> Template specs(模板规范)> Import template(导入模板)> Choose local template file(选择本地模板文件),将此模板文件作为 ARM 模板规范导入。
- 创建 ARM 模板规范后,可以将其用作计算机配置文件。
注意:
同步到 Citrix Studio 可能需要几分钟时间。
有关详细信息,请参阅 Microsoft 文档 Prerequisites to use hibernation(使用休眠的必备条件)。
限制
- 仅支持单会话操作系统计算机目录(永久性和非永久性)。
- 临时操作系统磁盘和 MCS I/O 功能不支持 Azure 休眠。
- 在 Windows 自动更新过程中,休眠可能会失败。
有关详细信息,请参阅 Microsoft 文档。
创建和管理具有休眠功能的计算机目录
要创建具有休眠功能的 VM,您可以使用以下方法创建和管理具有休眠功能的计算机目录:
使用 Web Studio 创建目录
- 选择创建计算机目录。目录创建向导将打开。
- 在计算机类型页面上,为此目录选择单会话操作系统计算机类型。
-
在计算机管理页面上,请按如下所示选择设置:
- 选择进行电源管理的计算机(例如,虚拟机或刀片式 PC)。
- 选择 Citrix Machine Creation Services (MCS)。
- 在桌面体验页面上,根据需要选择随机或静态桌面体验。
- 在映像页面上,选择一个主映像。选中使用计算机配置文件复选框,然后选择支持休眠功能的计算机配置文件。单击工具提示以了解计算机配置文件是否支持休眠。
- 在存储和许可证类型页面上,选择用于此目录的存储和许可证。
-
在虚拟机页面上,选择 VM 数量、VM 大小和可用性区域。
注意:
显示支持休眠功能的计算机大小仅供您进行选择。
- 在 NIC 页面上,添加您希望 VM 使用的 NIC。
- 在磁盘设置页面上,选择回写式缓存磁盘的存储类型和大小。
- 在资源组页面上,选择要预配 VM 的资源组。
- 在计算机标识页面上,选择创建新的 Active Directory 帐户。然后,请指定帐户命名方案。
- 在域凭据页面上,单击输入凭据。输入您的域凭据,以便在目标 Active Directory 域中执行帐户创建操作。
- 在摘要页面上,输入计算机目录的名称,然后单击完成。
MCS 计算机目录创建完成后,在目录列表中找到该目录,然后单击模板属性选项卡。Hibernation(休眠)参数的值必须设置为 Supported(受支持)。
如果要编辑计算机目录,请注意以下限制:
- 如果当前计算机目录支持休眠,您将无法:
- 将 VM 大小更改为不支持休眠功能的 VM 大小。
- 将计算机配置文件更改为不支持休眠功能的配置文件。
- 如果当前计算机目录不支持休眠,您将无法:
- 当前,使用 Web Studio 将计算机配置文件更改为具有休眠功能的配置文件。但是,您可以使用 PowerShell 命令来执行此操作。请参阅在现有的 MCS 预配的 VM 上启用休眠。
创建计算机目录来管理现有的具有休眠功能的 VM
如果您已经拥有具有休眠功能的 VM 并希望将其挂起并恢复,请创建计算机目录以导入这些 VM 进行电源管理。
注意:
可以创建包含具有休眠功能和不支持休眠功能的 VM 的计算机目录。但是,如果您想要与休眠相关的功能,则必须创建仅包含具有休眠功能的 VM 的计算机目录。
要使用 Web Studio 为具有休眠功能的现有 VM 创建目录,请按照屏幕上的说明完成步骤并注意以下关键设置:
- 在 Machine Management(计算机管理)页面上,选择 Machines that are power managed(进行电源管理的计算机),然后选择 Other service or technology(其他服务或技术)作为部署计算机的方法。
- 在虚拟机页面上,仅添加或导入具有休眠功能的 VM。
使用 PowerShell 命令创建计算机目录
满足使用休眠的所有要求后,您可以使用 New-ProvScheme
命令创建具有休眠功能的计算机目录。有关如何使用 Remote PowerShell SDK 创建目录的信息,请参阅 New-ProvScheme。
创建目录时,可以使用以下 PowerShell 命令检查 VM 大小和计算机配置文件是否支持休眠:
-
对于 VM 大小,请运行以下命令并检查属性
supportsHibernation
是否设置为 True。例如,Get-ChildItem -AdminAddress "MyDDC.MyDomain.local" -LiteralPath @("XDHyp:\HostingUnits\ <VirtualNetwork> \serviceoffering.folder") | select Name, AdditionalData | ConvertTo-Json <!--NeedCopy-->
-
对于计算机配置文件,请运行以下命令并检查属性
supportsHibernation
是否设置为 True。例如,Get-ChildItem -AdminAddress "MyDDC.MyDomain.local" -LiteralPath @("XDHyp:\HostingUnits\ <VirtualNetwork> \machineprofile.folder\abc.resourcegroup")|select Name, AdditionalData|ConvertTo-Json <!--NeedCopy-->
如果要编辑计算机目录,请注意以下限制:
- 如果当前计算机目录支持休眠,您将无法:
- 将 VM 大小更改为不支持休眠功能的 VM 大小
- 将计算机配置文件更改为不支持休眠功能的配置文件
- 如果当前计算机目录不支持休眠,您将无法:
- 当前,使用 Web Studio 将计算机配置文件更改为具有休眠功能的配置文件。但是,您可以使用 PowerShell 命令来执行此操作。请参阅在现有的 MCS 预配的 VM 上启用休眠。
有关如何使用 Remote PowerShell SDK 修改目录的 VM 大小和计算机配置文件的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/MachineCreation/Set-ProvScheme/。
在现有的 MCS 预配的 VM 上启用休眠
可以在现有的以下设备上启用 Azure 休眠:
- 不使用临时磁盘创建的计算机目录的 Windows MCS 预配的 VM。
- 使用和不使用临时磁盘创建的计算机目录的 Linux MCS 预配的 VM。
注意:
- 现有的 MCS 预配的 VM 必须安装 Azure VM Agent。
- 当前,您只能使用 PowerShell 命令来启用此功能。
为此,您需要:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*
以加载 Citrix 特定的 PowerShell 模块。 -
检查现有计算机的配置。例如:
Get-ProvScheme | select ProvisioningSchemeName, ProvisioningSchemeVersion <!--NeedCopy-->
-
使用
Set-ProvScheme
命令在此计算机目录上启用休眠。例如:Set-ProvScheme -provisioningSchemeName xxxx -machineprofile <path-to-machineprofile-with-hibernation-enabled> -serviceoffering "XDHyp:\HostingUnits\msc-dev\serviceoffering.folder\Standard_D4as_v5.serviceoffering" <!--NeedCopy-->
-
请求更新计算机目录中的现有 VM。
Set-ProvVMUpdateTimeWindow -ProvisioningSchemeUid xxxx -VMName <String[] <!--NeedCopy-->
-
重新启动 VM 以触发现有 VM 上的更新。例如:
New-BrokerHostingPowerAction -machinename "<name>" -Action Restart <!--NeedCopy-->
检查休眠属性
可以使用 PowerShell 命令检查计算机目录、VM 和 Broker 计算机的休眠属性:
-
要检查预配方案的休眠属性,请运行以下 PowerShell 命令。
HibernationEnabled
参数必须为True
。(Get-ProvScheme -provisioningSchemeName <YourSchemeName>).VMMetadata -join "" | ConvertFrom-Json | Select HibernationEnabled <!--NeedCopy-->
-
要检查预配 VM 的休眠属性,请运行以下 PowerShell 命令。
SupportsHibernation
参数必须为True
。(Get-ProvVM -VMName <YourVMName>).CustomVmData | ConvertFrom-Json | Select SupportsHibernation <!--NeedCopy-->
-
要检查 Broker 计算机的休眠容量,请运行以下 PowerShell 命令。挂起和恢复电源操作表示具有休眠功能。
(Get-BrokerMachine -MachineName <YourMachineName>).SupportedPowerActions <!--NeedCopy-->
具有休眠功能的 VM 的电源管理
可以在具有休眠功能的 VM 上执行以下电源管理操作:
- 将 VM 从运行状态挂起
- 将 VM 从挂起状态恢复
- 从已挂起状态强制关闭 VM
- 从已挂起状态强制重新启动 VM
有关详细信息,请参阅以下内容:
挂起
可以使用以下方法之一挂起 VM:
- 手动使用 Web Studio
- 自动使用超时策略:有关详细信息,请参阅其他设置。
要手动挂起 VM,请执行以下操作:
-
右键单击 VM,然后选择挂起。单击是确认操作。电源状态从正在挂起更改为已挂起。
可以在 Azure 门户中检查 VM 的状态。
继续
要恢复休眠的 VM,请使用以下方法之一:
-
手动:
-
管理员可以使用 Web Studio 恢复 VM。
-
最终用户单击桌面图标后,即可使用 Citrix Workspace 菜单启动 VM。
-
-
自动:
-
如果您正确配置了高峰时间,AutoScale 可以自动打开休眠计算机的电源。可以通过单击时间表每隔 30 分钟设置一次高峰时间。每个蓝框代表一个标记为高峰时间的时段。高峰时段可以有连续和非连续的时段。
-
连续时段
-
非连续时段
-
-
注意:
在管理 AutoScale > 基于负载的设置中,如果将操作配置为挂起,则请确保该交付组中的所有 VM 都具有休眠功能。否则,无法休眠的 VM 将继续运行。
获取休眠失败的警告消息
如果由 MCS 预配的和支持休眠的现有 VM 出现休眠故障,可以使用 PowerShell 命令 Get-ProvOperationEvent
获得警告消息。有关 Powershell 命令的信息,请参阅 SDK 文档 Get-ProvOperationEvent。
为此,您需要:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*
以加载 Citrix 特定的 PowerShell 模块。 -
在休眠失败时运行
Get-ProvOperationEvent
以获取警告消息。Get-ProvOperationEvent -filter { OperationName -eq "Suspend" } <!--NeedCopy-->
输出:
EventAdditionalData : Error code = OperationNotAllowed and Error message = The Hibernate-Deallocate Operation cannot be performed on a VM that has extension 'AzureHibernateExtension' in failed state. For more information, see https://aka.ms/hibernate-resume/errors. Error details from the extension : Enabling hibernate failed. Response from the powercfg command. Exit Code: 1. Error message: Hibernation failed with the following error: The request is not supported. The following items are preventing hibernation on this system. The current Device Guard configuration has disabled hibernation. An internal system component has disabled hibernation. Hypervisor Status: 409 ErrorCode: OperationNotAllowed Content: { "error": { "code": "OperationNotAllowed", "message": "The Hibernate-Deallocate Operation cannot be performed on a VM that has extension 'AzureHibernateExtension' in failed state. For more information, see https://aka.ms/hibernate-resume/errors. Error details from the extension : Enabling hibernate failed. Response from the powercfg command. Exit Code: 1. Error message:\nHibernation failed with the following error: The request is not supported.\r\r\n\r\nThe following items are preventing hibernation on this system.\r\n\tThe current Device Guard configuration has disabled hibernation.\r\n\tAn internal system component has disabled hibernation.\r\n\t\tHypervisor" } } EventCategory : Warning EventDateTime : 1/11/2024 4:18:31 AM EventId : 0 EventMessage : Failed to suspend machine my-resource-group/my-vm. EventSeverity : Important EventSource : AzureRmPlugin EventState : New LinkedObjectType : ProvisioningScheme LinkedObjectUid : 589cb600-6e65-479f-9d47-9715c4732366 OperationName : Suspend OperationTargetName : my-resource-group/my-vm OperationTargetType : VirtualMachine OperationType : PowerManagement Recommendation : <!--NeedCopy-->
解决休眠问题
如果您尝试同时启用休眠和可信启动 VM 功能,您将收到以下错误消息,但是,客户端操作系统的配置不正确。
错误代码 | 错误消息 |
---|---|
OperationNotAllowed | 无法在扩展程序“AzureHibernateExtension”处于故障状态的 VM 上执行 Hibernate-Deallocate 操作。有关详细信息,请参阅 https://aka.ms/hibernate-resume/errors/。来自扩展程序的错误详细信息:启用休眠失败。来自 powercfg 命令的响应。退出代码:1。错误消息:休眠失败并出现以下错误: 不支持该请求。以下项目可防止此系统进入休眠状态。当前 Device Guard 配置已禁用休眠。内部系统组件已禁用休眠。 |
要解决此问题,请务必在来宾 VM 中启用虚拟化。例如,确认在 Windows 环境中启用了 Hyper-V。根据 Microsoft Windows limitation(Microsoft Windows 限制),只有在 VM 上启用可信启动时,嵌套虚拟化才支持休眠。
有关警告消息的详细信息,请参阅 Microsoft 文档 Troubleshooting VM hibernation(排查 Azure 中的休眠问题)。
注意:
与恢复 VM 失败有关的错误消息将在将来的版本中提供。
更多信息
有关 Citrix Azure 休眠的详细信息,请参阅 Citrix Tech Zone 一文。