我在 VMware ESXi 上运行了几个虚拟机(大部分是 Centos,但很少是 Ubuntu),似乎有两种不同的内存分配方法。以下是两个示例:
(a)为虚拟机分配 4GB 内存并创建 2GB 交换文件。
(b)为虚拟机分配 6GB 内存,不分配交换文件。
这些方法的优缺点是什么?
答案1
ESXi、过度使用、交换和膨胀绝非易事。很容易陷入性能极差的情况,例如让虚拟机执行内存映射 IO 到由虚拟机管理程序交换的内存中。根据您发布的有限信息给出建议实际上是不可能的。
我建议你先阅读vSphere 资源管理指南。特别是关于记忆系统的章节应该会让你感兴趣。如果你在阅读指南后有更具体的问题,请返回并再次提问。
答案2
从性能角度来看,交换空间并不是普通物理 RAM 的真正扩展。您的计算机是否需要交换空间在很大程度上取决于它们所扮演的角色。例如,建议运行 Oracle 数据库的计算机具有一定数量的交换空间(Oracle 对此有官方建议),无论安装了多少 RAM。
ESX 可以过度提交内存,因此如果您为每台机器分配 6GiB 的 RAM,并不意味着每台机器实际上都会消耗这 6GiB 的每一位。
ESX 还会自行交换内存。ESX 将为每个 VM 创建一个交换文件,并在需要时将 VM 的内存交换到磁盘。对于 VM 而言,内存块似乎仍位于 RAM 中,尽管它们来自磁盘。
如果您有多余的 RAM 并且您的 VM 需要它,请为它们分配 6GiB。但这并不意味着它们不会从 VM 内部的交换分区中受益。默认情况下,Linux 将尝试换出未使用的内存。这由“vm.swapiness”sysctl 参数定义。
长话短说,仅列出选项并不能为您提供有关如何配置 RAM 的统一答案。请告诉我们更多信息:用途、硬件等。