用户空间的代码就是 qemu-kvm 的代码。 Qemu-kvm 是从 qemu 分支出来的项目 , 其目的就是利用传统 qemu 的功能,来实现各种虚拟设备的仿真,并提供对 KVM 进行控制的用户空间接口。 Qemu-kvm 实现的功能包括如下方面 : 1. 实现与KVM内核接口的用户空间逻辑。包括对x86 虚拟机 PC 结构的定义,虚拟机的创建,平台设备的创建,虚拟 CPU 的创建接口linux。 2. 各种层次和类型的硬件设备的仿真。包括 BIOS, PCI Hub,PCI 设备 ( 包括 USB 控制器,IDE 控制器,SCSI适配器, 声卡,显卡,网卡等 ),USB 设备, IDE 磁盘, SCSI 磁盘。Qemu-kvm 采用一个 qdev 的设备模型,来简化不同类型设备的仿真实现。 3. 虚拟块设备的不同磁盘Image文件格式的支持。包括 qcow2, qed, vmdk, vpc 等。 这方面的能力影响 KVM 平台的可管理及 KVM 虚拟化技术和管理软件的兼容性。 4.VNC,SPICE等表示层协议的支持。这方面的支持能力决定声卡,显卡的仿真在用户使用层次的效果。 5.Virtio设备的后端。VirtIO 是 KVM 上设备虚拟化的标准,即完全虚拟出来的网络和块设备,客操作系统端使用虚拟的前端驱动和 Qemu-kvm 实现的后端之间紧密合作实现的网络和块设备逻辑, VirtIO 设备的效率要远高于完全由 Qemu-kvm 仿真出的传统的网络和块设备。 6.QMP 协议的支持。 QMP 即 QemuMonitor Protocol, 是虚拟化管理接口层,如 libvirtd, 用来控制和查询 Qemu-kvm 状态及信息的协议。
|