存储读取缓存

读取缓存可以改进 VM 的磁盘性能,因为首次从外部磁盘读取后,数据将缓存在主机的可用内存中。在单一基础 VM 上克隆多个 VM 的情况下,读取缓存可以提高性能,因为读取缓存将明显减少从磁盘读取的块数量。例如,在 Citrix Virtual Desktops 环境 Machine Creation Service (MCS) 环境中。

无论何时从磁盘多次读取数据,都可以看到这种性能改进,因为数据缓存在内存中。此变更是在繁重 I/O 情况下发生的最明显的服务降级。例如,在以下情况下:

  • 大量最终用户在短时间内启动时(启动高峰)
  • 安排大量 VM 同时运行恶意软件扫描时(防病毒高峰)。

当您具有恰当的许可证类型时,默认启用读取缓存。

注意:

存储读取缓存适用于 XenServer Enterprise Edition 客户。

存储读取缓存适用于通过 Citrix Virtual Desktops 和 Citrix Virtual Apps 授权访问 XenServer 的客户。

启用和禁用读取缓存

对于基于文件的 SR,例如 NFS 和 EXT3 SR 类型,读取缓存在默认情况下启用。读取缓存对所有其他 SR 禁用。

要对特定 SR 禁用读取缓存,请运行以下命令:

xe sr-param-set uuid=sr-uuid other-config:o_direct=true

限制

  • 读取缓存仅适用于 NFS 和 EXT3 SR。它不适用于其他 SR 类型。

  • 读取缓存仅适用于只读 VDI 和 VDI 父对象。这些 VDI 存在于从“快速克隆”或磁盘快照创建 VM 的位置。从单一“黄金”映像克隆 VM 时,将看到最显著的性能改进。

  • 性能改进取决于主机控制域 (dom0) 中的可用内存量。增加 dom0 的内存量将允许为读取缓存分配更多内存。有关如何配置 dom0 内存的信息,请参阅 CTX134951

与 IntelliCache 比较

IntelliCache 和基于内存的读取缓存在某种程度上互为补充。IntelliCache 不仅缓存在不同层上,还缓存写入和读取。IntelliCache 将读取的数据从网络缓存到本地磁盘。内存中读取缓存将读取的数据从网络或磁盘缓存到主机内存。内存中读取缓存的优势是,内存仍然比固态磁盘 (SSD) 快一个数量级。启动高峰和其他繁重 I/O 情况下的性能会得以改进。

可以同时启用读取缓存和 IntelliCache。在这种情况下,IntelliCache 将读取的数据从网络缓存到本地磁盘。从该本地磁盘读取的数据通过读取缓存缓存在内存中。

设置读取缓存大小

通过为 XenServer 的控制域 (dom0) 分配更多的内存,可以优化读取缓存性能。

重要:

为实现优化,请逐一在池中的所有主机上设置读取缓存大小。此外,还必须在池中的所有主机上设置读取缓存大小的任何后续更改。

在 XenServer 主机上,打开本地 shell,以 root 用户身份登录。

要设置读取缓存的大小,请运行以下命令:

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=nnM,max:nnM

请将初始值和最大值设置为相同的值。例如,将 dom0 内存设置为 2048 MB:

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=20480M,max:20480M

重要:

在更改读取缓存大小后重新启动所有主机。

如何查看当前的 dom0 内存分配?

要查看当前的 dom0 内存设置,请输入:

free -m

free -m 的输出显示当前的 dom0 内存设置。由于各种开销,该值可能低于预期。下面的示例表显示主机输出,其中 dom0 设置为 752 MB

  总数 已使用 可用 已共享 缓冲 已缓存
Mem 594 486 108 0 149 78
-/+ buffers/cache   258 336      
Swap 511 49 462      

可以使用的值范围是什么

由于 XenServer 控制域 (dom0) 是 64 位的,因此可以使用大型值,例如 32768 MB。Citrix 建议不要将初始值设置为小于 752 MB,因为这样会导致主机无法启动。

XenCenter 显示说明

可以将整个主机的内存视为由 Xen 虚拟机管理程序、dom0、VM 和可用内存组成。尽管 dom0 和 VM 的内存大小通常是固定的,但 Xen 虚拟机管理程序使用可变的内存量。使用的内存量取决于多种因素。这些因素包括任意时间主机上正在运行的 VM 的数量以及配置这些 VM 的方式。无法限制 Xen 使用的内存量。限制内存量会导致 Xen 内存不足,并阻止新 VM 启动,即使主机有可用内存亦如此。

要查看分配给主机的内存,在 XenCenter 中选择主机,然后单击内存选项卡。

XenServer 字段显示分配给 dom0 的内存 Xen 内存的总和。因此,显示的内存量可能高于管理员指定的内存量。启动和停止 VM 时内存大小有所差别,即使管理员为 dom0 了设置了固定大小亦如此。

存储读取缓存