SLES Hyper-V-Guest没有看到所有的RAM

在Windows 2016标准主机上,我的Hyper-V-Guest(SLES系统)出现问题。 在Hyper-V中,我为这台机器分配了120000MB的内存。 但是,如果在SLES guest total used free shared buffers cached Mem: 67961 2038 65923 219 11 807 -/+ buffers/cache: 1219 66742 Swap: 122879 0 122879键入free -m ,则会得到以下输出: total used free shared buffers cached Mem: 67961 2038 65923 219 11 807 -/+ buffers/cache: 1219 66742 Swap: 122879 0 122879因此,只有66 GB内存。

我试图打开/closuresdynamic内存,NUMA,改变NUMA参数,但没有成功。 有一段时间,更多的内存是由free -m显示出来的,但是重启后我又遇到了同样的问题。

在Windows主机上,内存被分配,所以如果我启动虚拟机(在这个主机上没有其他虚拟机),我看到使用了124/256 GB。

目前,我已经没有想法了。

编辑:我启动了一个Ubuntu机器作为来宾具有相同的设置,并显示正确数量的内存。 我将SLES虚拟机作为vmWare映像,并将磁盘文件转换为Hyper-V。 我现在升级了SLES系统,用一个普通的内核代替vmware特定的内核(如果我看到的话),但问题仍然是一样的。

有时在互联网上发布一个问题提供了一些新的想法。

我在Linux日志中发现了以下消息:

dmesg | grep -i memory WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losng 51008MB of RAM

我不知道微软是否提供了错误的Hyper-V-BIOS,或者如果Linux在这里是错误的,或者它们是两者的组合。 问题是MS堆栈是最新的,我不能升级Linux内核,因为运行在VM中的软件需要这个版本。

解决方法:不是增加RAM,而是将其减less到40GB。 这不会触发Linux错误消息。 当我启动业务应用程序时,我想在虚拟机中运行,Hyper-Vdynamic地为虚拟机dynamic分配更多的内存(在我的情况下高达105GB),没有任何问题。 Horray!