KVM整体架构

KVM整体架构

*图2*

KVM中的一个客户机作为一个用户空间进程(qemu-kvm)运行的,它和其他普通的用户进程一样由内核来调度使其运行在物理cpu上,不过它由KVM模块控制,可以在三种执行模式下运行。


1.KVM架构中的3个组件:
1) Guest: 客户机系统

2) KVM:运行在Linux内核空间,成为内核模块
提供CPU 和内存的虚级化,以及客户机的 I/O 拦截;
Guest 的 I/O 被KVM 拦截后,交给 QEMU 处理;
KVM驱动给用户空间的QEMU提供了/dev/kvm字符设备。

3) QEMU
修改过的为 KVM虚拟机使用的 QEMU 代码(称为qemu-kvm),运行在用户空间,
提供硬件 I/O 设备的模拟,
还通过对/dev/kvm设备执行IOCTL来和 KVM 交互执行创建虚拟机、vCPU等对guest的控制操作。

2. Qemu-KVM
KVM只负责CPU和内存的虚拟化,用户无法直接控制内核去做事情(KVM只提供接口,怎么创建虚拟机,分配vCPU等并不在它上面进行)
还必须有个运行在用户空间的工具才行,KVM的开发者选择了比较成熟的开源虚拟化软件QEMU来作为这个工具,并对其进行了修改,最后形成了QEMU-KVM。
QEMU-KVM具有两大作用:
1) 提供对cpu,内存(KVM负责),IO设备(QEMU负责)的虚拟
2) 对各种虚拟设备的创建,调用进行管理(QEMU负责)

3.Libvirtd是一个daemon进程,virsh、virt-manager等工具呼叫libvirtd,而Libvirtd则调用qemu-kvm操作虚拟机。

原文地址:https://www.cnblogs.com/stellar/p/8399183.html