qemu-kvm: unable to map backing store for guest RAM: Cannot allocate memory

当给 KVM 虚拟机设置 hugepage 时,需要在虚拟机的配置文件里加上下面一段:

<memoryBacking>
    <hugepages/>
</memoryBacking>

但是,加上这么一段之后,再次启动虚拟机,可能起不来,service libvirtd restart 可能会得到如标题的错误。

这个问题的原因可能是:

1. host 没有设置足够多的 hugepage

2. guest 设置的内存大小超出了 host 的 hugepage

解决办法:

1. 检查 host hugepage 设置

cat /proc/meminfo |grep -i huge

Hugepagesize * HugePages_Free 就是 guest 可以分配的内存。

2. 检查 guest 内存配置

用下面的命令查看虚拟机的配置,<kvm> 是虚拟机的名字

virsh edit <kvm>

如下,memory 是 16G,那么 host 的 hugepage 必须设置大于16G,否则就会出现标题的错误。

  <memory unit='KiB'>16777216</memory>
  <currentMemory unit='KiB'>16777216</currentMemory>
  <memoryBacking>
      <hugepages/>
  </memoryBacking>
posted @ 2018-01-04 17:03  湖风雨晚晴  阅读(4384)  评论(0编辑  收藏  举报