当给 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>

转载于:https://www.cnblogs.com/weiweifeng/p/8194356.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐