我的服务器出现此错误:“系统内存不足,无法启动虚拟机。内存不足 (0x8007000E)“在 12 GB 可用 RAM 服务器上启动 8 GB 虚拟机时。
这是我的设置。
主机规格:32 GB RAM - E3-1240v3 CPU - 4 TB HDD。已启用 Numa 跨接。
创建时间:
- 6 x 2 Gb - 1 vCore - 100 GB HDD。
- 2 x 4 GB - 1 vCore - 100 GB HDD - 启用动态内存,最小值:3.5 GB。因此,虚拟机有 20 GB(未计算动态内存)+ 主机有 2.5 GB,因此总计有 22.5 GB,服务器上仍有大约 11.5 GB 可用。
为什么我无法启动 8 GB VM?欢迎提出任何意见,我到处都搜索过了,但似乎找不到合适的答案。
答案1
您用完了内存。您必须为主机和其他进程保留一些内存,而 2.5G 对于 Windows 作为虚拟机管理程序来说并不算多。内存是空闲的并不意味着它不受更重要的主机进程的常驻分配,而 hyperv 正确地解释了这一点。通常,您永远不会希望单个虚拟机占用主机操作系统的内存。
另外,您可能无法按要求分配内存。我确信您的分配不必像现在这样完美,因此您可以轻松从其他工作负载中抽取一点内存来满足主机的需要。
答案2
服务器上还剩下大约 11.5GB 的内存,但当您尝试为虚拟机分配 8GB 内存时,却无法完成,因为内存不足。因为 Hyper-V 只剩下 3.5GB 的备用内存。
在具有 32GB RAM 的情况下,您需要至少保留 4.5GB 的可用内存:
- 2-2.5GB 预留空间
- 2GB 管理操作系统
答案3
您是否已在 HyperV 设置中启用了 NUMA 跨度?如果没有,我相信这将解决您的问题。
默认情况下,Windows Server 启用 NUMA 跨接,这提供了最大的灵活性,因为虚拟机 (VM) 可以访问和使用任何 NUMA 节点中的内存。但与强制虚拟机使用与处理器核心相同的 NUMA 节点上的内存相比,这可能会导致性能降低。
通过禁用 NUMA 跨接,您可以确保虚拟机使用同一 NUMA 节点中的内存和处理器核心,从而实现最佳性能。如果您作为管理员熟悉 NUMA 和禁用的影响,并且拥有一些可帮助确保最佳配置的其他管理套件,则只需更改一次即可。
要配置 NUMA 跨度,请打开 Hyper-V 设置并选择 NUMA 跨度选项并禁用它,我相信它会得到解决;我在这个问题上挣扎了一个星期,并通过禁用 NUMA 解决了它。
我确信通过在 Hyper-V 管理器中禁用 NUMA 可以将此问题标记为已解决。
答案4
将最小 RAM 增加到 1024,对我来说就好了。默认情况下是 512。