我在 Windows 10 上的 VMWare 虚拟机中运行 Linux Mint 19 作为主机操作系统。VMWare Player 版本为 16.2.3。
问题是它消耗的 RAM 比预期的多得多。除了客户操作系统本身消耗的 RAM 之外,它还消耗了大量 RAM 来将 vmdk 文件映射到内存中。
这里您可以看到,除了为 VM 配置的 10G 之外,它还为内存映射文件消耗了 9G。
是的,它处于待机状态,理论上可以在需要时释放,但实际上,每当我尝试启动需要大量 RAM 的东西时 - 它就会杀死整个主机系统,无法释放待机内存。
更新:另一个例子。
这是运行此虚拟机 5 分钟并在客户机内来回复制文件后的状态。客户机虚拟机在线的时间越长,其内部发生的磁盘 IO 越多,主机的 RAM 就越多进入待机模式,最多 100% 的可用 RAM 被移至待机状态。
- 这是 VMWare 还是主机操作系统的问题?
- 有什么方法可以解决这个问题并阻止它为客户机 vmdk 文件的内存映射文件使用那么多 RAM?我假设我可以创建一个磁盘分区并使用它,而不是将客户的文件系统保存在文件中,但还有其他选择吗?
答案1
VMware 计算机(Workstation 或 Player)的内存是在计算机关闭时在虚拟机设置中设置的。内存未在客户机中设置。
一般经验法则是将分配给机器的内存量限制为不超过主机内存的一半。分配 10 GB 需要主机中有 20 GB 的内存。
以这种方式设置的虚拟机可以使用分配的所有内存,而不会影响主机。
每当我尝试启动需要大量 RAM 的程序时,它都会杀死整个主机系统,因为无法释放备用内存。
这是为客户机分配了过多内存的结果。10 GB 可能超过主机内存的一半。
这不是 VMware 的问题,因为这是 VMware 分配内存的方式。
客户机中可能正在发生内存交换。根据内存设置,可能会发生交换。但过度交换可能是客户机的问题。
确保您有足够的主机内存来运行虚拟机 - 最小(在我看来)是 16 GB。
笔记:
我在 Windows 11 主机上运行了 3 个 VMware 客户机,通过保持机器和客户机内存的良好管理,一切都可以很好地共存。
答案2
好吧,我无法解决 VMDK 文件完全映射到内存中的问题。我认为启用和增加页面文件、减少客户机的 RAM 并不是解决方案。所以我将它转换为 img,然后拿一个 SSD 并在那里克隆 img,添加到 VM,从该 SSD 启动客户机,现在问题解决了。没有 VMDK 文件 - 不再将 VMDK 映射到内存中,根本没有待机内存。这有点贬低了运行独立 VM 的整个想法,但就我而言,我只需要一个 VM,我准备用一个 128Gb SSD 换取 10Gb+ RAM。