KVM架构与原理详解架构与原理详解
1.KVM架构
KVM 基本上有两个组件构成:
1. kvm 驱动 现在已经是Linux内核的一个模块了,它的作用主要是负责虚拟机的创建,虚拟内存的分配 虚拟CPU寄存器的读
写和虚拟cpu的运行
2. 另一个组件是 Qemu QEMU是一个通用的开源机器模拟器和虚拟器,其主要的功能是用于模拟虚拟机的用户空间组件,提
供io 设备模型,访问外设的途径
Qemu 是什么?
Qemu 是纯软件设计的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的
虚拟机,虚拟机认为自己和虚拟机打交道,但其实是和Qemu模拟出来的硬件打交道,Qemu 将这些真正的指令转译给真正的
硬件
正因为Qemu是纯软件实现的,所有的指令都要经过qemu过一手,性能非常低,所以,在生产环境中,所以在生产环境
中,Qemu配合KVM来完成虚拟化工作,因为kvm是硬件辅助的虚拟化技术,主要负责比较繁琐的cpu虚拟化和内存虚拟化,
而QEMU则负责IO设备虚拟化,两者合作发挥自身的优势,相得益彰
从本质上看,虚拟出的每个虚拟机对应宿主机上的一个QEMU 进程,而虚拟机的执行线路(cpu线路,io线路)对用qemu 进
程中的一个线程,
下面通过启动一个虚拟机来讲解kvm 与QEmu是怎么交互工作的
// 第一步,获取到 KVM 句柄
kvmfd = open("/dev/kvm", O_RDWR);
// 第二步,创建虚拟机,获取到虚拟机句柄。
vmfd = ioctl(kvmfd, KVM_CREATE_VM, 0);
// 第三步,为虚拟机映射内存,还有其他的 PCI,信号处理的初始化。
ioctl(kvmfd, KVM_SET_USER_MEMORY_REGION, &mem);
评论0
最新资源