KVM 是 Linux 内核自带的虚拟化能力,装好 qemu-kvm 与 libvirt 只是起点。真正让它在生产环境稳定跑起来的,是宿主机内核参数、CPU 与内存超分策略、存储与网络路径选择,以及虚拟机从创建到回收的整套治理规则。本页从极客运维的日常视角,把 KVM 拆成可落地的几个运维层面,不重复安装向导,只讲上线后真正会遇到的事。
很多 KVM 性能问题并不在虚拟机里,而在宿主机没打开该开的开关。上线前先确认 CPU 虚拟化指令集已透传、大页内存与透明大页策略符合业务预期、swap 行为与 NUMA 亲和性设置合理,再考虑超分比例。
kvm_intel.nested 等模块参数与业务是否需要嵌套虚拟化一致KVM 的磁盘与网卡性能,八成取决于后端选型。qcow2 灵活但写放大明显,raw + LVM 更稳;网络侧 virtio 是默认答案,但多队列与 vhost-net 是否开启,直接决定高并发场景下的吞吐表现。
本地盘用 LVM thin 或 raw 直通;共享存储优先 Ceph RBD,注意缓存模式与 io 调度器匹配。
桥接适合传统业务,OVS 适合多租户;开启 vhost-net 与多队列降低软中断压力。
虚拟机不是建完就结束。命名规范、模板化交付、快照策略、迁移窗口与下线回收,构成一条完整的治理链。建议用 libvirt 域 XML 做版本管理,把变更纳入流程而不是手工改配置。
| 阶段 | 关键动作 | 风险点 |
|---|---|---|
| 创建 | 模板 + cloud-init 注入 | 镜像漂移 |
| 运行 | 监控 + 快照策略 | 快照链过长 |
| 回收 | 磁盘与网络资源释放 | IP 与卷泄漏 |
KVM 排障要分清是宿主机瓶颈、存储延迟还是虚拟机内部问题。用 virsh domstats、perf、iostat 与监控平台交叉比对,先定位层级再动手调参。