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多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。