Citrix DaaS™

管理 Azure VM 的电源

有关所需权限的信息,请参阅所需 Azure 权限

Azure 按需预配

通过 Azure 按需预配,VM 仅在预配完成后,当 Citrix DaaS™ 启动电源开启操作时才创建。

当您使用 MCS 在 Azure 资源管理器中创建计算机目录时,Azure 按需预配功能:

  • 降低存储成本
  • 提供更快的目录创建

当您创建 MCS 目录时,Azure 门户会在资源组中显示网络安全组、网络接口、基础映像和身份磁盘。

Azure 门户不会显示 VM,直到 Citrix DaaS 启动其电源开启操作。然后,VM 在 Studio 中的状态变为。有两种类型的计算机,其区别如下:

  • 对于池化计算机,操作系统磁盘和回写缓存仅在 VM 存在时才存在。当您在控制台中关闭池化计算机时,VM 在 Azure 门户中不可见。如果您定期关闭计算机(例如,在工作时间之外),则可以显著节省存储成本。
  • 对于专用计算机,操作系统磁盘在 VM 首次开机时创建。Azure 门户中的 VM 会一直保留在存储中,直到计算机身份被删除。当您在控制台中关闭专用计算机时,VM 在 Azure 门户中仍然可见。

注意:

对按需预配功能(“旧版”目录)之前创建的 Azure 目录的支持已弃用。因此,请重新创建 Azure 旧版目录 VM。然后,目录将按需预配,从而节省存储成本。

电源循环时保留已预配的虚拟机

选择在电源循环时是否保留已预配的虚拟机。使用 PowerShell 参数 New-ProvScheme CustomProperties。此参数支持一个额外的属性 PersistVm,用于确定已预配的虚拟机在电源循环时是否保留。将 PersistVm 属性设置为 true 可在虚拟机关闭时保留虚拟机,或将属性设置为 false 以确保虚拟机在关闭时不会保留。

注意:

PersistVm 属性仅适用于启用了 CleanOnBootUseWriteBackCache 属性的预配方案。如果未为非持久性虚拟机指定 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 属性确定是否保留 OS 磁盘。要保留已预配的虚拟机,请首先保留 OS 磁盘。您无法在不先删除虚拟机的情况下删除 OS 磁盘。您可以在不指定 PersistVm 参数的情况下使用 PersistOsdisk 属性。

更改存储类型失败时自定义电源开启行为

在开机时,托管磁盘的存储类型可能由于 Azure 上的故障而无法更改为所需的类型。在这些情况下,VM 将保持关闭状态,并向您发送故障消息。但是,您可以选择即使存储无法恢复到其配置的类型也开启 VM,或者选择保持 VM 关闭。

  • 如果您将自定义属性 FailSafeStorageType 配置为 true(默认设置)或未在 New-ProvSchemeSet-ProvScheme 命令中指定它:

    • 开机时,VM 以不正确的存储类型开机。
    • 关机时,VM 保持关闭状态,存储类型不正确。
  • 如果您在 New-ProvSchemeSet-ProvScheme 命令中将自定义属性 FailSafeStorageType 配置为 false

    • 开机时,VM 保持关闭状态,存储类型不正确。
    • 关机时,VM 保持关闭状态,存储类型不正确。

要创建包含 FailSafeStorageType 自定义属性的计算机目录:

  1. 打开 PowerShell 窗口。
  2. 运行 asnp citrix®* 以加载 Citrix 特定的 PowerShell 模块。
  3. 如果尚未创建身份池,请创建一个。
  4. 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-->
    
  5. 创建计算机目录。

要更新现有计算机目录以包含 FailSafeStorageType 自定义属性。此更新不影响现有 VM。

  1. 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 命令。

  1. 运行 Request-ProvVMUpdate 命令。例如:

    Request-ProvVMUpdate -ProvisioningSchemeName <String> -VMName <List-Of-Vm-Names>
    <!--NeedCopy-->
    
  2. 重新启动 VM。

创建支持休眠的 VM

在 Azure 环境中,您可以创建支持休眠的 MCS 计算机目录。使用此功能,您可以挂起 VM,然后在用户再次登录时重新连接到 VM 的先前状态。

休眠功能适用于以下情况:

  • 单会话操作系统
  • 持久性和非持久性 VM
  • 静态和随机(池化)VDI 桌面

无论 VDI 桌面是静态还是随机,您都可以在休眠 VM 后恢复到同一会话。

在本节中,请参阅以下内容:

使用休眠的先决条件

要使用休眠,请确保完成以下任务:

  • 在 Windows 和 Linux 的主映像上安装 Azure VM 代理。Windows 映像的页面文件可以位于临时磁盘上。当计算机目录上启用休眠时,MCS 会将页面文件位置设置为基础磁盘中的 C: 驱动器。
  • MCS 会自动为生成的资源设置休眠属性。您无需配置主资源的属性来支持休眠。
  • 在您的订阅中使用支持休眠的 VM 大小。
  • 创建支持休眠的计算机配置文件(VM 或模板规范),以便 VM 继承休眠功能。要创建 VM,请参阅 Getting started with hibernation

    注意:

    根据 Microsoft 的说法,您可以从 OS 磁盘部署启用休眠的 VM。此功能目前支持某些区域,并将很快适用于所有区域。有关详细信息,请参阅 Deploy hibernation enabled VMs from an OS disk

    要创建模板规范,请执行以下操作:

    1. 打开 Azure 门户。选择要用于模板的 VM 配置。在左侧窗格中选择导出模板
    2. 清除包含参数复选框。复制上下文并将其保存为 JSON 文件,例如 VMExportTemplate.json
    3. 确保模板上的参数 hibernationEnabledtrue。如果参数不为 true,请检查您使用的 VM 配置。您可以在模板文件中指定支持的 VM 大小。但是,您也可以在创建目录时指定计算机大小。
    4. 将网络接口资源的模板添加到 JSON 文件 VMExportTemplate.json。因此,您将拥有一个包含两个资源的 ARM 模板文件。
    5. 选择 Azure 门户 > 模板规范 > 导入模板 > 选择本地模板文件以将此模板文件作为 ARM 模板规范导入。
    6. 创建 ARM 模板规范后,您可以将其用作计算机配置文件。

    注意:

    同步到 Citrix Studio 可能需要几分钟。

有关详细信息,请参阅 Microsoft 文档 Prerequisites to use hibernation

限制

  • 仅支持单会话操作系统计算机目录(持久性和非持久性)。
  • 临时 OS 磁盘和 MCS I/O 功能不支持 Azure 休眠。
  • 休眠可能在 Windows 自动更新期间失败。
  • 当 Hyper-V 启用时,受信任启动是休眠的先决条件。

有关详细信息,请参阅 Microsoft 文档

创建和管理支持休眠的计算机目录

要创建支持休眠的 VM,您可以使用以下方式创建和管理支持休眠的计算机目录:

使用 Studio 创建目录

  1. 登录到 Citrix Cloud。
  2. DaaS 磁贴中,单击管理以打开 Studio。
  3. 在左侧窗格中,选择计算机目录
  4. 选择创建计算机目录。目录创建向导随即打开。
  5. 计算机类型页面上,为此目录选择单会话操作系统计算机类型。
  6. 计算机管理页面上,按如下方式选择设置:

    1. 选择电源管理的计算机(例如,虚拟机或刀片式 PC)
    2. 选择 Citrix Machine Creation Services™ (MCS)
    3. 资源下拉列表中选择一个资源位置。
  7. 桌面体验页面上,根据需要选择随机或静态桌面体验。
  8. 映像页面上,选择一个主映像。选中使用计算机配置文件复选框,然后选择一个支持休眠的计算机配置文件。单击工具提示以了解计算机配置文件是否支持休眠。

    注意:

    如果您选择 Azure 托管的主映像,则仅显示与所选资源位置位于同一区域的映像。

  9. 存储和许可证类型页面上,选择要用于此目录的存储和许可证。
  10. 虚拟机页面上,选择 VM 数量、VM 大小和可用性区域。

    注意:

    仅显示支持休眠的计算机大小供您选择。GPU VM 系列处于预览阶段。

  11. NIC 页面上,添加您希望 VM 使用的 NIC。
  12. 磁盘设置页面上,选择回写缓存磁盘的存储类型和大小。
  13. 资源组页面上,选择要预配 VM 的资源组。
  14. 计算机身份页面上,选择创建新的 Active Directory 帐户。然后,指定帐户命名方案。
  15. 域凭据页面上,单击输入凭据。输入您的域凭据以在目标 Active Directory 域中执行帐户创建。
  16. 摘要页面上,输入计算机目录的名称,然后单击完成

MCS 计算机目录创建完成后,在目录列表中找到该目录,然后单击模板属性选项卡。参数休眠的值必须为支持

如果要编辑计算机目录,请考虑以下限制:

  • 如果当前计算机目录支持休眠,则不能:
    • 将 VM 大小更改为不支持休眠的大小。
    • 将计算机配置文件更改为不支持休眠的配置文件。
  • 如果当前计算机目录不支持休眠,则不能:

为管理现有支持休眠的 VM 创建计算机目录

如果您已经拥有支持休眠的 VM,并且想要挂起和恢复它们,请创建一个计算机目录以导入这些 VM 进行电源管理。

注意:

您可以创建包含支持休眠和不支持休眠的 VM 的计算机目录。但是,如果您需要休眠相关功能,则必须仅使用支持休眠的 VM 创建计算机目录。

要使用 Studio 为现有支持休眠的 VM 创建目录,请按照屏幕上的说明完成步骤,并注意以下关键设置:

  1. 计算机管理页面上,选择电源管理的计算机,然后选择其他服务或技术作为部署计算机的方式。
  2. 虚拟机页面上,仅添加或导入支持休眠的 VM。

使用 PowerShell 命令创建计算机目录

满足所有使用休眠的先决条件后,您可以使用 New-ProvScheme 命令创建支持休眠的计算机目录。有关如何使用远程 PowerShell SDK 创建目录的信息,请参阅 Manage Citrix DaaS using Remote PowerShell SDKs

创建目录时,您可以使用以下 PowerShell 命令检查 VM 大小和计算机配置文件是否支持休眠:

  • 对于 VM 大小,运行以下命令并检查属性 supportsHibernation 是否为 True。例如:

     Get-ChildItem -LiteralPath @("XDHyp:\HostingUnits\ <VirtualNetwork> \serviceoffering.folder") | select Name, AdditionalData | ConvertTo-Json
     <!--NeedCopy-->
    
  • 对于计算机配置文件,运行以下命令并检查属性 supportsHibernation 是否为 True。例如:

     Get-ChildItem -LiteralPath @("XDHyp:\HostingUnits\ <VirtualNetwork> \machineprofile.folder\abc.resourcegroup")|select Name, AdditionalData|ConvertTo-Json
     <!--NeedCopy-->
    

如果要编辑计算机目录,请考虑以下限制:

  • 如果当前计算机目录支持休眠,则不能:
    • 将 VM 大小更改为不支持休眠的大小
    • 将计算机配置文件更改为不支持休眠的配置文件
  • 如果当前计算机目录不支持休眠,则不能:

有关如何使用远程 PowerShell SDK 修改目录的 VM 大小和计算机配置文件,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/MachineCreation/Set-ProvScheme/

在现有 MCS 预配的 VM 上启用休眠

您可以在现有以下 VM 上启用 Azure 休眠:

  • 未创建临时磁盘的 Windows MCS 预配的计算机目录 VM。
  • 已创建和未创建临时磁盘的 Linux MCS 预配的计算机目录 VM。

注意:

  • 现有 MCS 预配的 VM 必须安装 Azure VM 代理。
  • 目前,您只能使用 PowerShell 命令启用此功能。

为此:

  1. 打开 PowerShell 窗口。
  2. 运行 asnp citrix* 以加载 Citrix 特定的 PowerShell 模块。
  3. 检查现有计算机的配置。例如:

    Get-ProvScheme | select ProvisioningSchemeName, ProvisioningSchemeVersion
    <!--NeedCopy-->
    
  4. 使用 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-->
    
  5. 请求更新计算机目录中的现有 VM。

    Set-ProvVMUpdateTimeWindow -ProvisioningSchemeUid xxxx -VMName <String[]
    <!--NeedCopy-->
    
  6. 重新启动 VM 以触发现有 VM 上的更新。例如:

    New-BrokerHostingPowerAction -machinename "<name>" -Action Restart
    <!--NeedCopy-->
    

检查休眠属性

您可以使用 PowerShell 命令检查计算机目录、VM 和代理计算机的休眠属性:

  • 要检查预配方案的休眠属性,请运行以下 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-->
    
  • 要检查代理计算机的休眠容量,请运行以下 PowerShell 命令。挂起恢复电源操作表示休眠功能。

     (Get-BrokerMachine -MachineName <YourMachineName>).SupportedPowerActions
     <!--NeedCopy-->
    

支持休眠的 VM 的电源管理

您可以对支持休眠的 VM 执行以下电源管理操作:

  • 从运行状态挂起 VM
  • 从挂起状态恢复 VM
  • 从挂起状态强制关闭 VM
  • 从挂起状态强制重新启动 VM

有关详细信息,请参阅以下内容:

挂起

您可以通过以下方式之一挂起 VM:

  • 使用 Studio 手动
  • 使用超时策略自动:有关详细信息,请参阅杂项设置

要手动挂起 VM:

  1. 右键单击 VM,然后选择挂起。单击以确认操作。电源状态正在挂起变为已挂起

    Suspend a hibernation-capable VM

您可以在 Azure 门户中检查 VM 的状态。

Check the status of the VM in the Azure portal

恢复

要恢复已休眠的 VM,请使用以下方式之一:

  • 手动

    • 管理员可以使用 Studio 恢复 VM。

      Resume the VM using Studio

    • 最终用户在单击桌面图标后,可以使用 Citrix Workspace™ 菜单启动 VM。

      Manage Autoscale Load based settings

  • 自动

    • 如果正确配置了高峰时段,Autoscale™ 可以自动开启已休眠的计算机。您可以通过单击时间表以 30 分钟的间隔设置高峰时段。每个蓝色框表示一个标记为高峰时段的时间段。高峰时段可以有连续和非连续的时间段。

      • 连续时间段

        Consecutive peak time slots

      • 非连续时间段

        Non-consecutive peak time slots

注意:

管理 Autoscale > 基于负载的设置中,如果操作配置为挂起,则请确保该交付组中的所有 VM 都具有休眠功能。否则,无法休眠的 VM 将继续运行。

Manage Autoscale Load based settings

获取休眠失败的警告消息

如果 MCS 预配的 VM 和现有支持休眠的 VM 休眠失败,您可以使用 PowerShell 命令 Get-ProvOperationEvent 获取警告消息。有关 Powershell 命令的信息,请参阅 SDK 文档 Get-ProvOperationEvent

为此:

  1. 打开 PowerShell 窗口。
  2. 运行 asnp citrix* 以加载 Citrix 特定的 PowerShell 模块。
  3. 运行 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 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.

要解决此问题,请确保在来宾 VM 中启用了虚拟化。例如,确认在 Windows 环境中启用了 Hyper-V。

有关警告消息的详细信息,请参阅 Microsoft 文档 Troubleshooting VM hibernation

注意:

有关恢复 VM 失败的错误消息将在未来版本中提供。

更多信息

有关 Citrix Azure 休眠的更多信息,请参阅 Citrix Tech Zone 文章

管理 Azure VM 的电源