QEMU 开源机器模拟软件,云计算虚拟化的重要软件
QEMU 开源机器模拟软件,云计算虚拟化的重要软件 QEMU(Quick Emulator)是一个通用的开源机器模拟器和虚拟化软件。它在虚拟化技术栈中扮演着至关重要的角色,特别是在与 KVM 配合使用时。缺陷是: QEMU 是运行在用户空间的普通软件,如果虚拟机每次读写硬盘都要经过 QEMU 进行纯软件模拟,性能会非常差。 QEMU 开源机器模拟软件,虚拟化的重要软件 1. QEMU 的两种核心模式 QEMU 最大的特点是它的多功能性,它主要有两种运行模式: 纯软件模拟(Emulator): 原理:通过动态二进制翻译(Dynamic Binary Translation),QEMU 可以将一种 CPU 架构(如 ARM)的指令实时翻译成另一种架构(如 x86)的指令。 用途:这使得你可以在 x86 电脑上运行为 ARM 或 PowerPC 编写的程序。虽然兼容性极强,但由于每条指令都需要软件翻译,性能非常慢。 硬件辅助虚拟化(Virtualizer): 原理:当 QEMU 运行在与宿主机相同的 CPU 架构上(例如都在 x86 上),并且配合 KVM(基于内核的虚拟机)使用时,它可以利用 CPU 的硬件虚拟化扩展(如 Intel VT-x 或 AMD-V)直接执行客户机代码。 用途:这种模式下,QEMU 的性能接近原生硬件,是目前云计算(如 OpenStack)和企业虚拟化的主流方式。 2. QEMU 在 KVM 架构中的角色 虽然 KVM 提供了 CPU 和内存的虚拟化能力,但它本身并不具备完整的计算机功能(如没有硬盘、网卡、显卡等)。QEMU 填补了这一空白,通常被称为 "QEMU-KVM" 架构: KVM (内核态):负责处理“硬核”的计算任务,直接管理 CPU 和内存的执行,处理敏感指令的拦截(Trap)。 QEMU (用户态): 硬件模拟:QEMU 负责模拟虚拟机所需的所有 I/O 设备,包括硬盘控制器、网卡、USB 控制器、显卡、鼠标键盘等。 进程管理:在宿主机看来,每一个 KVM 虚拟机本质上就是一个 QEMU 进程。你可以像管理普通软件一样使用 kill 或 top 命令来管理虚拟机。 交互接口:QEMU 提供了管理虚拟机的接口,支持快照、动态迁移(Live Migration)等高级功能。 3. I/O 性能瓶颈与 VirtIO 由于 QEMU 是运行在用户空间的普通软件,如果虚拟机每次读写硬盘都要经过 QEMU 进行纯软件模拟,性能会非常差。 为了解决这个问题,QEMU 引入了 VirtIO 标准: ...