XenServer

内存使用情况

XenServer® 主机的内存占用由两个组件构成。首先是 Xen 虚拟机管理程序本身消耗的内存。其次是主机 控制域 消耗的内存。控制域也称为“Domain0”或“dom0”,是一个安全、特权的 Linux 虚拟机,运行 XenServer 管理工具栈 (XAPI)。除了提供 XenServer 管理功能外,控制域还运行驱动程序栈,为用户创建的虚拟机提供对物理设备的访问。

控制域内存

分配给控制域的内存量会自动调整,并基于物理主机上的物理内存量。默认情况下,XenServer 为控制域分配 1 GiB 加上总物理内存的 5%,初始最大可达 8 GiB。

注意:

XenCenter® 中 XenServer 部分报告的内存量包括控制域 (dom0)、Xen 虚拟机管理程序本身以及崩溃内核使用的内存。因此,XenCenter 中报告的内存量可能会超过这些值。对于使用更多内存的主机,虚拟机管理程序使用的内存量会更大。

更改分配给控制域的内存量

您可以使用 XenCenter 或命令行更改分配给 dom0 的内存量。如果您将分配给控制域的内存量增加到超出默认分配量,此操作将导致可用于虚拟机的内存减少。

在以下情况下,您可能需要增加分配给 XenServer 主机控制域的内存量:

  • 您在主机上运行许多虚拟机
  • 您正在使用 PVS-Accelerator
  • 您正在使用读取缓存

重要提示:

如果您正在使用 GFS2 SR,并且这些情况中的任何一种也适用于您的环境,则必须增加控制域内存量。控制域内存不足可能导致网络不稳定,从而给使用 GFS2 SR 的集群池带来问题。

分配给控制域的内存量取决于您的环境和虚拟机的要求。

您可以监控以下指标,以判断控制域内存量是否适合您的环境以及您所做的任何更改会产生什么影响:

  • 交换活动: 如果控制域正在进行交换,请增加控制域内存。
  • Tapdisk 模式: 您可以在 XenCenter 主机的“性能”选项卡中监控您的 tapdisk 是否处于低内存模式。选择“操作”>“新建图表”,然后选择“低内存模式下的 Tapdisk”图表。如果 tapdisk 处于低内存模式,请增加控制域内存。
  • 页面缓存压力: 使用 top 命令监控 buff/cache 指标。如果此数字变得过低,您可能需要增加控制域内存。

使用 XenCenter 更改 dom0 内存

有关使用 XenCenter 更改 dom0 内存的信息,请参阅 XenCenter 文档中的更改控制域内存

注意:

您不能使用 XenCenter 将 dom0 内存减少到低于 XenServer 安装期间最初设置的值。要进行此更改,您必须使用命令行。

使用命令行更改 dom0 内存

注意:

对于内存较小(小于 16 GiB)的主机,您可能希望将分配给控制域的内存减少到低于安装默认值。您可以使用命令行进行此更改。但是,我们建议您不要将 dom0 内存减少到 1 GiB 以下,并且在支持团队的指导下执行此操作。

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

  2. 输入以下内容:

    xe host-list uuid=host_uuid params=control-domain-uuid
    xe vm-memory-set uuid=<control domain uuid> memory=<nn>M
    <!--NeedCopy-->
    

    其中 <nn> 表示要分配给 dom0 的内存量(以 MiB 为单位)。

  3. 使用 XenCenter 或 XenServer 控制台上的 reboot 命令重新启动 XenServer 主机。

    当主机重启后,在 XenServer 控制台上,运行 free 命令以验证新的内存设置。

虚拟机有多少可用内存?

要了解有多少主机内存可分配给虚拟机,请通过运行 memory-free 查找主机的空闲内存值。然后键入命令 vm-compute-maximum-memory 以获取可分配给虚拟机的实际空闲内存量。例如:

xe host-list uuid=host_uuid params=memory-free
xe vm-compute-maximum-memory vm=vm_name total=host_memory_free_value
<!--NeedCopy-->
内存使用情况