在KVM中配置虚拟机的内存锁定(Memory Locking)功能,主要用于防止虚拟机内存被交换到磁盘(Swap),从而保障关键业务的高性能与低延迟。以下是基于实践的核心步骤和注意事项:
-
XML配置调整:
- 使用
virsh edit <虚拟机名称>编辑虚拟机配置,在<memoryBacking>标签内添加<locked/>,强制锁定内存。 - 示例:
<memoryBacking> <locked/> </memoryBacking>
- 使用
-
内核参数优化:
- 修改
/etc/security/limits.conf,为libvirt用户(如qemu)增加memlock限制,例如:qemu hard memlock unlimited qemu soft memlock unlimited - 通过
sysctl -w vm.swappiness=0减少宿主机交换倾向。
- 修改
-
资源预留验证:
- 使用
virsh dumpxml <虚拟机名称> | grep locked确认配置生效。 - 监控宿主机内存使用(
free -h)及交换状态(vmstat 1),确保物理内存充足。
- 使用
-
安全与性能平衡:
- 内存锁定可能导致宿主机OOM风险,需严格规划虚拟机内存分配。
- 结合NUMA亲和性配置和大页内存(Huge Pages)进一步优化性能。
补充说明:若使用Libvirt 4.10+版本,可通过 <memoryAllocation> 标签的 locked='yes' 属性实现更细粒度控制。生产环境中建议配合监控工具(如Prometheus)实时跟踪内存压力。