當給 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>