对 Azure VM 进行电源管理
有关所需权限的信息,请参阅 所需的 Azure 权限.
Azure 按需预配
使用 Azure 按需配置时,只有在配置完成后 Citrix DaaS 启动开机操作时,才会创建 VM。
当您使用 MCS 在 Azure Resource Manager 中创建计算机目录时,Azure 按需配置功能:
- 降低您的存储成本
- 提供更快的目录创建
创建 MCS 目录时,Azure 门户会显示资源组中的网络安全组、网络接口、基础映像和身份磁盘。
在 Citrix DaaS 为 VM 启动开机操作之前,Azure 门户不会显示 VM。 然后,VM 在 Studio 中的状态将更改为 上. 有两种类型的机器,它们有以下区别:
- 对于共用计算机,仅当 VM 存在时,操作系统磁盘和回写缓存才存在。 在控制台中关闭共用计算机时,VM 在 Azure 门户中不可见。 如果您经常关闭计算机(例如,在工作时间之外),则可以节省大量存储成本。
- 对于专用计算机,操作系统磁盘是在首次打开 VM 电源时创建的。 Azure 门户中的 VM 将保留在存储中,直到删除计算机标识。 在控制台中关闭专用计算机时,VM 仍显示在 Azure 门户中。
注意:
支持在按需预配功能之前创建的 Azure 目录(“旧”目录)已弃用。 因此,请重新创建 Azure 旧版目录 VM。 然后,将目录预置为按需目录,以节省存储成本。
重启电源时保留已置备的虚拟机
选择是否在重启电源时保留已置备的虚拟机。 使用 PowerShell 参数 New-ProvScheme CustomProperties
. 此参数支持一个额外的属性 PersistVm
,用于确定已置备的虚拟机在重新启动时是否仍然存在。 将 PersistVm
property 设置为 真 在关闭电源时保留虚拟机,或将属性设置为 假 确保在关闭电源时不保留虚拟机。
注意:
这
PersistVm
属性仅适用于具有清洁靴
和使用WriteBackCache
启用。 如果PersistVm
属性,则在关闭电源时,它们将从 Azure 环境中删除。
在以下示例中, New-ProvScheme CustomProperties
参数设置 PersistVm
property 设置为 真:
<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
参数通过设置 持久虚拟机
自 真:
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
属性确定是否保留 OS 磁盘。 要保留已置备的虚拟机,请先保留操作系统磁盘。 如果不先删除虚拟机,则无法删除操作系统磁盘。 您可以使用PersistOsdisk
属性,而不指定PersistVm
参数。
自定义存储类型更改失败时的开机行为
开机时,由于 Azure 上的故障,托管磁盘的存储类型可能无法更改为所需的类型。 在这些情况下,VM 将保持关闭状态,并向您发送一条失败消息。 但是,您可以选择打开 VM 的电源,即使无法将存储还原到其配置的类型,也可以选择关闭 VM 的电源。
-
如果配置自定义属性
FailSafeStorageType
如 真 (默认设置)或不在New-ProvScheme 新提案
或Set-ProvScheme
命令:- 打开电源时,VM 使用不正确的存储类型打开电源。
- 关闭时,VM 将保持关闭状态,但存储类型不正确。
-
如果配置自定义属性
FailSafeStorageType
如 假 在New-ProvScheme 新提案
或Set-ProvScheme
命令:- 打开电源后,VM 将保持关闭状态,但存储类型不正确。
- 关闭时,VM 将保持关闭状态,但存储类型不正确。
创建要包含的计算机目录 FailSafeStorageType
custom 属性:
- 打开 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-->
- 然后,创建计算机目录。
更新现有计算机目录以包括 FailSafeStorageType
custom 属性。 此更新不会影响现有 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,请运行 Request-ProvVMUpdate
命令。
-
运行 Request-ProvVMUpdate 命令。 例如:
Request-ProvVMUpdate -ProvisioningSchemeName <String> -VMName <List-Of-Vm-Names> <!--NeedCopy-->
-
重新启动 VM。
创建支持休眠的 VM
在 Azure 环境中,您可以创建支持休眠的 MCS 计算机目录。 使用此功能,您可以挂起 VM,然后在用户再次登录时重新连接到 VM 的先前状态。
休眠功能适用于以下各项:
- 单会话操作系统
- 持久性和非持久性 VM
- 静态和随机(池化)VDI 桌面
在使 VM 休眠后,您可以恢复到同一会话,无论 VDI 桌面是静态的还是随机的。
在本节中,请参阅以下内容:
使用休眠的先决条件
要使用休眠,请确保完成以下任务:
- 在 Windows 和 Linux 的主映像上安装 Azure VM 代理。 Windows 映像的页面文件可以位于临时磁盘上。 在计算机目录上启用休眠时,MCS 会将页面文件位置设置为基础磁盘中的 C: 驱动器。
- MCS 会自动为生成的资源设置 hibernation 属性。 您无需配置主资源的属性来支持休眠。
- 在订阅中使用支持休眠的 VM 大小。
-
创建支持休眠的计算机配置文件(VM 或模板规范),以便 VM 继承 hibernation-capability。 要创建 VM,请参阅 休眠入门.
注意:
根据 Microsoft,您可以从 OS 磁盘部署启用了休眠的 VM。 目前某些区域支持此功能,并且很快将在所有区域推出。 有关更多信息,请参阅 从 OS 磁盘部署已启用休眠的 VM.
要创建模板规范,请执行以下操作:
- 打开 Azure 门户。 选择要在模板中使用其配置的 VM。 选择 导出模板 在左侧窗格中。
- 清除 包含参数 复选框。 复制上下文并将其另存为 JSON 文件,例如
VMExportTemplate.json
. - 确保参数
hibernationEnabled 已启用
是真
在模板上。 如果参数不是真
中,检查您使用的 VM 配置。 您可以在模板文件中指定支持的 VM 大小。 但是,您也可以在创建目录时指定计算机大小。 - 将网络接口资源的模板添加到 JSON 文件
VMExportTemplate.json
. 因此,你有一个包含两个资源的 ARM 模板文件。 - 选择 Azure 门户 > 模板规格 > 导入模板 > 选择本地模板文件 将此模板文件作为 ARM 模板规范导入。
- 创建 ARM 模板规范后,您可以将其用作计算机配置文件。
注意:
同步到 Citrix Studio 可能需要几分钟时间。
有关详细信息,请参阅 Microsoft 文档 使用休眠的先决条件.
限制
- 仅支持单会话操作系统计算机目录(持久性和非持久性)。
- 临时 OS 磁盘和 MCS I/O 功能不支持 Azure 休眠。
- 在 Windows 自动更新期间,休眠可能会失败。
有关更多信息,请参阅 Microsoft 文档.
创建和管理支持休眠的计算机目录
要创建支持休眠的 VM,您可以使用以下方法创建和管理支持休眠的计算机目录:
使用 Studio 创建目录
- 登录 Citrix Cloud。
- 在 DaaS 软件即服务 磁贴中,单击 管理 以打开 Studio。
- 在左侧窗格中,选择 计算机目录.
- 选择创建计算机目录。 目录创建向导将打开。
- 在 机器类型 页面上,选择 单会话操作系统 此目录的 machine type 进行搜索。
-
在 机器管理 页面上,选择如下设置:
- 选择进行电源管理的计算机(例如,虚拟机或刀片式 PC)。
- 选择 Citrix Machine Creation Services (MCS).
- 从 资源 下拉列表。
- 在 桌面体验 页面上,根据需要选择随机或静态桌面体验。
-
在 图像 页面上,选择主映像。 选中复选框 使用计算机配置文件 并选择支持休眠的计算机配置文件。 单击工具提示可了解计算机配置文件是否支持休眠。
注意:
如果选择 Azure 托管的主映像,则仅显示与所选资源位置位于同一区域中的映像。
- 在 存储和许可证类型 页面上,选择要用于此目录的存储和许可证。
-
在 虚拟机 页面上,选择 VM 计数、VM 大小和可用区。
注意:
支持休眠的计算机大小仅显示供您选择。 GPU VM 系列处于预览状态。
- 在 网卡 页面上,添加希望 VM 使用的 NIC。
- 在 磁盘设置 页面上,选择回写式缓存磁盘的存储类型和大小。
- 在 资源组 页面上,选择要预置 VM 的资源组。
- 在 计算机标识 页面上,选择 创建新的 Active Directory 帐户. 然后,指定账户命名方案。
- 在 域凭证 页面上,单击 输入凭据. 输入您的域凭证以在目标 Active Directory 域中执行账户创建。
- 在 总结 页面上,输入计算机目录的名称,然后单击 完成.
MCS 计算机目录创建完成后,在目录列表中找到该目录,然后单击 模板属性 标签。 参数的值 冬眠 必须是 支持.
如果要编辑计算机目录,请考虑以下限制:
- 如果当前计算机目录支持休眠,则不能:
- 将 VM 大小更改为不支持休眠的 VM 大小。
- 将计算机配置文件更改为无法休眠的配置文件。
- 如果当前计算机目录不支持休眠,则不能:
- 目前,使用 Studio 将计算机配置文件更改为支持休眠的配置文件。 但是,您可以使用 PowerShell 命令执行此操作。 看 在现有 MCS 置备的 VM 上启用休眠.
创建计算机目录以管理支持休眠的现有 VM
如果您已经拥有支持休眠的 VM,并且想要暂停和恢复它们,请创建一个计算机目录以导入这些 VM 以进行电源管理。
注意:
您可以创建包含支持休眠和无法进入休眠状态的 VM 的计算机目录。 但是,如果需要与休眠相关的功能,则必须创建仅包含支持休眠的 VM 的计算机目录。
要使用 Studio 为支持休眠的现有 VM 创建目录,请按照屏幕上的说明完成这些步骤,并注意以下关键设置:
- 在 机器管理 页面上,选择 电源管理的计算机,然后选择 其他服务或技术 作为部署机器的方式。
- 在 虚拟机 页面上,仅添加或导入支持休眠的 VM。
使用 PowerShell 命令创建计算机目录
在你遇到所有 要求 要使用休眠功能,您可以使用 New-ProvScheme 新提案
命令。 有关如何使用远程 PowerShell SDK 创建目录的信息,请参阅 使用远程 PowerShell SDK 管理 Citrix DaaS.
创建目录时,您可以使用以下 PowerShell 命令检查 VM 大小和计算机配置文件是否支持休眠:
-
对于 VM 大小,请运行以下命令并检查属性
支持休眠
是 真. 例如,Get-ChildItem -LiteralPath @("XDHyp:\HostingUnits\ <VirtualNetwork> \serviceoffering.folder") | select Name, AdditionalData | ConvertTo-Json <!--NeedCopy-->
-
对于机器配置文件,运行以下命令并检查属性
支持休眠
是 真. 例如,Get-ChildItem -LiteralPath @("XDHyp:\HostingUnits\ <VirtualNetwork> \machineprofile.folder\abc.resourcegroup")|select Name, AdditionalData|ConvertTo-Json <!--NeedCopy-->
如果要编辑计算机目录,请考虑以下限制:
- 如果当前计算机目录支持休眠,则不能:
- 将 VM 大小更改为不支持休眠的 VM 大小
- 将计算机配置文件更改为无法休眠的配置文件
- 如果当前计算机目录不支持休眠,则不能:
- 目前,使用 Studio 将计算机配置文件更改为支持休眠的配置文件。 但是,您可以使用 PowerShell 命令执行此操作。 看 在现有 MCS 置备的 VM 上启用休眠.
有关如何使用远程 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 代理。
- 目前,您只能使用 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-->
检查 hibernation property
您可以使用 PowerShell 命令检查计算机目录、VM 和代理计算机的休眠属性:
-
要检查预配方案的休眠属性,请运行以下 PowerShell 命令。 这
HibernationEnabled 已启用
parameter 必须为真
.(Get-ProvScheme -provisioningSchemeName <YourSchemeName>).VMMetadata -join "" | ConvertFrom-Json | Select HibernationEnabled <!--NeedCopy-->
-
要检查预配 VM 的休眠属性,请运行以下 PowerShell 命令。 这
支持休眠
parameter 必须为真
.(Get-ProvVM -VMName <YourVMName>).CustomVmData | ConvertFrom-Json | Select SupportsHibernation <!--NeedCopy-->
-
要检查代理计算机的休眠容量,请运行以下 PowerShell 命令。 这 暂停 和 恢复 电源操作表示休眠功能。
(Get-BrokerMachine -MachineName <YourMachineName>).SupportedPowerActions <!--NeedCopy-->
支持休眠的 VM 的电源管理
您可以在支持休眠的 VM 上执行以下电源管理操作:
- 暂停 VM 处于 Running 状态
- 恢复 处于已暂停状态的 VM
- 强制关闭 VM 从挂起状态关闭
- 强制重启 处于 suspended 状态的 VM
有关更多信息,请参阅以下内容:
挂起
您可以使用以下方法之一暂停 VM:
- 手动地 使用 Studio
- 自然而然 使用超时策略:有关更多信息,请参阅 其他设置.
要手动暂停 VM,请执行以下操作:
-
右键单击 VM,然后选择 暂停. 点击 是的 以确认操作。 这 电源状态 更改从 暂停 自 暂停.
可以在 Azure 门户中检查 VM 的状态。
继续
要恢复休眠的 VM,请使用以下方法之一:
-
手动地:
-
管理员可以使用 Studio 恢复 VM。
-
最终用户单击桌面图标后,可以使用 Citrix Workspace 菜单启动 VM。
-
-
自然而然:
-
如果您正确配置了高峰时间,AutoScale 可以自动打开休眠计算机的电源。 您可以通过单击时间表以 30 分钟为间隔设置高峰时间。 每个蓝色帧代表一个标记为高峰时间的时隙。 高峰时间可以有连续和非连续的时间段。
-
连续的时间段
-
非连续时间段
-
-
注意:
在 管理 AutoScale > 基于负载的设置,如果 行动 配置为 暂停,然后确保该交付组中的所有 VM 都具有休眠功能。 否则,无法休眠的 VM 将继续运行。
获取休眠失败的警告消息
您可以使用 PowerShell 命令获取警告消息 Get-ProvOperationEvent
如果 MCS 预置的 VM 和现有的支持休眠的 VM 休眠失败。 有关 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 限制,仅当在 VM 上启用受信任启动时,嵌套虚拟化才支持休眠。
有关警告消息的更多信息,请参阅 Microsoft 文档 VM 休眠问题排查.
注意:
与恢复 VM 失败相关的错误消息将在将来的发行版中提供。
更多信息
有关 Citrix Azure 休眠的更多信息,请参阅 Citrix Tech Zone 文章.