内存使用情况

Last published : Oct 07, 2026
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
    其中 <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