Citrix Hypervisor

和 IntelliCache

注意:

此功能仅在将 Citrix Hypervisor 与 Citrix Virtual Desktops 结合使用时受支持。

使用 GFS2 SR 的 VM 不支持 Intellicache。

通过将 Citrix Hypervisor 与 IntelliCache 结合使用,可以组合使用共享存储和本地存储,从而提高所托管虚拟桌面基础结构部署的成本效益。当多个虚拟机 (VM) 共享一个公用的操作系统映像时,优势尤其明显。既降低了存储阵列的负载,又提高了性能。此外,当本地存储从共享存储中缓存主映像时,进出共享存储的网络流量会减少。

IntelliCache 的工作原理是从 VM 主机上本地存储中的 VM 父 VDI 中缓存数据。然后,在从父项 VDI 中读取数据时,会填充此本地缓存。当多个 VM 共享一个公用父 VDI 时,某个 VM 可以使用从另一个 VM 读入到缓存的数据。不需要再访问共享存储上的主映像。

精简预配的本地 SR 是 IntelliCache 的必备条件。精简预配是一种优化可用存储空间使用情况的方式。通过这种方式,可以更多地利用本地存储来代替共享存储。它依赖于数据块的按需分配。在其他方法中,将预先分配所有块。

重要提示:

精简预配将主机的默认本地存储类型由 LVM 改为 EXT4。要正常进行 Citrix Virtual Desktops 本地缓存,必须启用精简预配。

精简预配允许管理员为连接到存储库 (SR) 的 VM 提供比 SR 中可用的空间更多的空间。但对空间没有保证,并且在 VM 写入数据前,分配的 LUN 不会要求获得任何数据块。

警告:

由于空间中 VM 数量不断增加,从而占用所需磁盘容量,因此精简预配的 SR 可能会出现物理运行空间不足的情况。IntelliCache VM 处理此情况的方法是在本地 SR 缓存满载时自动故障恢复到共享存储。由于 IntelliCache VM 的大小会快速增加,因此请不要在同一个 SR 中混合使用传统虚拟机与 IntelliCache VM。

IntelliCache 部署

IntelliCache 必须在主机安装期间启用,或在主机运行期间使用 CLI 手动启用。

我们建议您使用高性能本地存储设备来保证实现最快速的数据传输。例如,使用固态磁盘或高性能 RAID 阵列。在确定本地磁盘大小时,对数据吞吐量和存储容量均应加以考虑。用于托管源虚拟磁盘映像 (VDI) 的共享存储类型必须基于 NFS 或 EXT3/EXT4。

安装主机时启用

要在安装主机过程中启用 IntelliCache,请在 Virtual Machine Storage(虚拟机存储)屏幕上选择 Enable thin provisioning (Optimized storage for XenDesktop)(启用精简预配(用于 XenDesktop 的优化存储))。此选项将选择主机的本地 SR 作为要用于 VM VDI 的本地缓存的 SR。

安装屏幕中的“Virtual Machine Storage”(虚拟机存储)面板。

将现有主机转换为使用精简预配

要删除现有 LVM 本地 SR,并将其替换为精简预配的 EXT3/EXT4 SR,请输入以下命令。

警告:

这些命令将删除现有的本地 SR,并且该 SR 上的 VM 将被永久删除。

    localsr=`xe sr-list type=lvm host=hostname params=uuid --minimal`
        echo localsr=$localsr
        pbd=`xe pbd-list sr-uuid=$localsr params=uuid --minimal`
        echo pbd=$pbd
        xe pbd-unplug uuid=$pbd
        xe pbd-destroy uuid=$pbd
        xe sr-forget uuid=$localsr
        sed -i "s/'lvm'/'ext'/" /etc/firstboot.d/data/default-storage.conf
        rm -f /var/lib/misc/ran-storage-init
        systemctl restart storage-init.service
        xe sr-list type=ext
<!--NeedCopy-->

要启用本地缓存,请输入以下命令:

    xe host-disable host=hostname
        localsr=`xe sr-list type=ext host=hostname params=uuid --minimal`
        xe host-enable-local-storage-caching host=hostname sr-uuid=$localsr
        xe host-enable host=hostname
<!--NeedCopy-->

IntelliCache 的 VM 行为

VDI 标志 on-boot 决定 VM 引导时 VM VDI 的行为,而 VDI 标志 allow-caching 则决定缓存行为。

用于这些参数的值取决于您正在创建的 VM 类型及其预期用途:

  • 对于共享或随机分配的计算机:

    • on-boot 参数设置为 reset
    • allow-caching 参数设置为 true

    例如:

     xe vdi-param-set uuid=vdi_uuid on-boot=reset allow-caching=true
     <!--NeedCopy-->
    

    在 VM 引导时,VDI 还原为上一次引导时的状态。VM 下次引导时,在 VM 运行时所做的所有更改都将丢失。新的 VM 数据仅写入本地存储。不写入共享存储。此方法意味着共享存储上的负载将降低。但是,不能在主机之间迁移 VM。

    如果您打算交付用户无法进行永久性更改的标准化桌面,请选择此选项。

  • 对于静态或专用计算机:

    • on-boot 参数设置为 persist
    • allow-caching 参数设置为 true

    例如:

     xe vdi-param-set uuid=vdi_uuid on-boot=persist allow-caching=true
     <!--NeedCopy-->
    

    在 VM 引导时,VDI 处于上一次关机时的状态。新的 VM 数据同时写入本地存储和共享存储。读取缓存数据不需要传输到共享存储的 I/O 流量,因此,共享存储上的负载将降低。允许将 VM 迁移到其他主机,并且读入数据时会填充新主机上的本地缓存。

    如果您打算允许用户对其桌面进行永久性更改,请选择此选项。

注意:

对于 VDI 位于 GFS2 SR 上的 VM,VM 的引导时行为与在其他类型的 SR 上使用 VDI 的 VM 不同。对于 GFS2 SR 上的 VDI,引导时选项在 VM 关闭时应用,而非在 VM 引导时应用。

实现详细信息和故障排除

问: IntelliCache 是否与实时迁移和高可用性兼容?

答: 当虚拟桌面处于专用模式时(即,on-boot=persist 时),可以将实时迁移功能和高可用性功能与 IntelliCache 结合使用。

警告:

如果任何 VDI 的缓存行为标志都设置为 on-boot=resetallow-caching=true,则不能迁移该 VM。尝试迁移具有这些属性的 VM 将失败。

问: 本地缓存位于本地磁盘的什么位置?

答: 该缓存位于存储库 (SR) 中。每个主机都有一个指示使用哪个(本地)SR 存储缓存文件的配置参数(称为 local-cache-sr)。此 SR 通常为 EXT3/EXT4 类型的 SR。在运行采用 IntelliCache 的 VM 时,您将看到 SR 中名为 uuid.vhdcache 的文件。此文件是与具有指定 UUID 的 VDI 对应的缓存文件。XenCenter 中不会显示这些文件 - 查看这些文件的唯一方法是登录 dom0 并列出 /var/run/sr-mount/sr-uuid 的内容

问: 我如何指定要用作缓存的特定 SR?

答: 主机对象字段 local-cache-sr 引用本地 SR。可以通过运行以下命令查看其值:

xe sr-list params=local-cache-sr,uuid,name-label
<!--NeedCopy-->

该字段的设置:

  • 安装主机后,如果在主机安装程序中选择了“Enable thin provisioning”(启用精简预配)选项,或者

  • 通过运行 xe host-enable-local-storage-caching host=host sr-uuid=sr。此命令要求禁用指定的主机。使用此命令时,请关闭 VM。

第一个选项使用 EXT3/EXT4 类型的本地 SR 并且在主机安装期间创建。第二个选项使用在命令行中指定的 SR。

警告:

只有配置了多个本地 SR 的用户才需要执行这些步骤。

问: 何时删除本地缓存?

答: 只有在删除 VDI 本身时,才会删除 VDI 缓存文件。在将 VDI 附加到 VM(例如,在 VM 启动时)时,会重置缓存。如果删除 VDI 时主机处于脱机状态,则在启动时运行的 SR 同步将对缓存文件进行回收。

注意:

VM 迁移到不同的主机或关闭时,不会从主机中删除缓存文件。

和 IntelliCache