QEMU架构和使用详解

QEMU架构

QEMU是一种开源的虚拟化软件,几乎可以模拟任何硬件设备,能够模拟一台能够独立运行操作系统的虚拟机。虚拟机认为自己和硬件打交道,但其实是和QEMU模拟出来的硬件打交道。QEMU将这些指令转译给真正的硬件。

纯软件实现

由于QEMU是纯软件实现的,所有指令都要经过QEMU处理,性能较低。在生产环境中,大多数情况下会配合KVM来完成虚拟化工作。KVM是一种硬件辅助的虚拟化技术,主要负责CPU和内存虚拟化,而QEMU则负责I/O虚拟化。两者结合可以发挥各自的优势,显著提高性能。

QEMU源代码结构

QEMU软件虚拟化的实现思路是采用二进制指令翻译技术,主要是提取guest代码,然后将其翻译成TCG中间代码,最后再将中间代码翻译成host指定架构的代码。如x86体系翻译成其支持的代码形式,ARM架构同理。

Target -> QEMU -> TCG -> Host
Guest Code -> TCG -> Host Code

QEMU的使用

软件安装

在服务器操作系统上,可以通过如下命令安装QEMU:

# yum install qemu -y

安装完成后,会生成以下应用程序:

  • qemu-img
  • qemu-io
  • qemu-nbd
  • qemu-pr-helper
  • qemu-system-x86_64
  • qemu-system-i386
  • qemu-system-x86_64-spice
  • qemu-make-debian-root
具体应用程序说明
  • ivshmem-client/ivshmem-server:这是一个guest和host共享内存的应用程序,遵循C/S架构。
  • qemu-ga:这是一个不利用网络实现guest和host之间交互的应用程序(使用virtio-serial),运行在guest中。
  • qemu-io:这是一个执行QEMU I/O操作的命令行工具。
  • qemu-system-x86_64:QEMU的核心应用程序,虚拟机由它创建的。
  • qemu-img:创建虚拟机镜像文件的工具。
  • qemu-nbd:磁盘挂载工具。
示例

以下是一个使用qemu-system-x86_64创建虚拟机的简单示例:

# qemu-system-x86_64 -m 512 -hda ubuntu.img -boot c -net nic -net user

以上命令创建了一台具有512MB内存的虚拟机,使用ubuntu.img作为硬盘镜像文件,并从硬盘启动,配置了一个网络接口和用户模式网络。

本文由mdnice多平台发布


逼格高的汤圆
7 声望2 粉丝