首页/云/云平台与虚拟化速查/KVM CPU 模型选择与迁移兼容
虚拟化操作94 条

KVM CPU 模型选择与迁移兼容

CPU 模型决定 guest 可见的指令集:host-passthrough 透传宿主特性(性能好、迁移受限),自定义模型可对齐不同代宿主机,用 cpu-models 查看可用模型。

云平台与虚拟化速查云更新于 2026-10-13

KVM CPU 模型选择

CPU 模型决定 guest 里能看到哪些指令集与 CPU 特性。host-passthrough 把宿主 CPU 特性整体透传,性能最好但 guest 依赖具体硬件;host-model 跟随宿主但按虚拟化环境做收敛;自定义模型则在一组型号之间取交集,用于保证跨代宿主可迁移。模型选择直接决定迁移兼容性与 guest 内应用能否使用新指令集。

基本信息

查看可用模型virsh cpu-models x86_64 列出 libvirt 已知的 CPU 型号
常用模式host-passthrough(性能优先)、host-model(跟随宿主)、custom(自定义基线)
迁移权衡跨代宿主迁移要用各代都支持的基线模型,或统一宿主硬件
检查手段virsh domcapabilities 查看与宿主匹配的可用模型与特性
生效方式修改 CPU 模型属于结构性变更,通常需关机后启动

典型使用场景

  • 新集群规划:统一 CPU 模型,避免日后迁移才发现不兼容
  • 跨代宿主迁移:用较旧一代的基线模型作为公共交集
  • 性能优先场景:单机运行且不迁移时用 host-passthrough
  • 兼容老旧系统:虚拟机需要特定 CPU 型号时用手工模型
  • 排障对比:怀疑指令集问题时切换模型后复测

查看与配置

查看与配置
# 域 XML 中的配置片段
# <cpu mode='host-passthrough' check='none'/>
virsh cpu-models x86_64                     # 列出可用模型
virsh domcapabilities | grep -A2 host-passthrough
virsh dumpxml vm1 | grep -A5 '<cpu '       # 查看当前生效的模型

模式对比

模式行为适用
host-passthrough原样透传宿主 CPU 特性单机或同批硬件内,性能优先
host-model按宿主推导并适配虚拟化环境希望兼顾特性与一定迁移性
custom使用指定型号加特性开关跨代宿主、要求可迁移的集群
同集群内建议统一 CPU 模型,避免迁移后 guest 内应用意外使用新指令集导致不兼容。
CPU 模型的可见特性还受宿主固件与内核参数影响:同一台机型不同内核版本可能给出不同的特性集合,规划时以 domcapabilities 的实际输出为准。
改完模型后进 guest 用 lscpu 或 /proc/cpuinfo 核对实际可见特性,与域定义比对,才能确认模型真的生效。

易错点

  • host-passthrough 跨异构宿主迁移:目标核不支持时迁移失败或 guest 异常
  • 集群内 CPU 模型不统一,迁移后 guest 内应用行为出现差异
  • 自定义模型漏掉业务必需特性,guest 内出现性能下降或功能缺失
  • 修改 CPU 模型后未重启域,配置未生效却以为已经改好

数据来源与参考

  • libvirt 文档:CPU model(cpu-models)
  • QEMU 文档:-cpu 选项
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌