首页/云/云平台与虚拟化速查/QEMU 模拟器与设备模型
虚拟化基础63 条

QEMU 模拟器与设备模型

QEMU 是提供完整设备模型的开源模拟器:既可在 KVM 加速下以接近原生的速度运行同架构系统,也可用 TCG 跨架构软件模拟,是 KVM 平台上虚机的执行本体。

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

QEMU 是什么

QEMU 是提供完整设备模型的开源模拟器:它既能借助 KVM 以接近原生的速度运行同架构系统,也能用纯软件模拟的方式跨架构运行完全不同的指令集。在 KVM 平台上,QEMU 是虚机的执行本体,负责网卡、磁盘、芯片组与显示等设备的呈现。

基本信息

定位设备模拟与虚拟机执行容器
运行模式KVM 加速(同架构)或纯软件模拟(跨架构)
设备模型多种主板类型;磁盘总线可选半虚拟化、SCSI、SATA 等
可执行文件按目标架构命名,如 x86_64 与 aarch64 各自独立
网络后端用户态网络、桥接、tap 设备等,性能与连通性各有取舍
常用配套qemu-img 处理镜像,libvirt 提供统一管理接口

用 QEMU 直接起一台虚机

用 QEMU 直接起一台虚机
qemu-system-x86_64 \
  -enable-kvm -cpu host -smp 2 -m 2048 \
  -drive file=disk.qcow2,if=virtio \
  -netdev user,id=n0 -device virtio-net-pci,netdev=n0 \
  -nographic
# -enable-kvm 走硬件加速,缺少权限时会退回纯软件模拟
# -cpu host 让客体继承宿主 CPU 特性,跨代宿主集群应改用统一基线

常用参数与作用

参数作用常见误用
-enable-kvm启用硬件加速缺少权限时静默回退,性能下降不易察觉
-cpu host透传宿主 CPU 特性跨代宿主集群中导致迁移失败
-m分配内存容量超配过多引发宿主内存压力
-smp设置 vCPU 数量核数与宿主不匹配时互相争抢
-drive挂载磁盘镜像与旧式磁盘参数同时使用造成设备重复
-netdev 与 -device组合定义网卡后端与前端后端标识写错导致网卡缺失

典型使用场景

  • 本地实验:不依赖管理平台直接起虚机验证引导与内核参数
  • 跨架构验证:在 x86 主机上模拟 ARM 环境做兼容性测试
  • 镜像调试:挂载镜像检查内容或修复引导配置
  • 手工排障:绕过管理平台,用最小参数复现问题
判断是否真正走硬件加速,可查看虚机进程的启动参数与宿主内核日志;若缺少设备节点权限或嵌套虚拟化未开启,程序会回落到纯软件模拟,表现是启动慢、CPU 占用高但功能正常,容易被误判为磁盘性能问题。

易错点

  • 同时传入旧式磁盘参数与通用磁盘参数:设备重复注册,引导顺序混乱甚至无法启动
  • 网络后端标识与前端引用不一致:虚机内看不到网卡,日志里只有一行警告
  • 缺少设备节点访问权限:加速模式失效后性能骤降,而功能测试全部通过
  • 把宿主 CPU 特性直传给客体后跨代迁移:目标宿主缺少对应指令集,迁移失败或启动异常
  • 命令行参数写成长参数与短参数混用且未记录:出问题时无法复现原始启动条件

数据来源与参考

  • QEMU 官方文档(qemu.org)
  • QEMU wiki:Features/KVM
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌