在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)实时跟踪内存压力。