qemu-kvm


一、QEMU

QEMU是一个虚拟操作系统模拟器,几乎能够模拟任何硬件设备,采用C语言编写,通过二进制翻译技术,提取guest的代码,翻译成TCG 中间代码,最后再将中间代码翻译成 host 指定架构的代码。所以,虚拟机是通过qemu来和硬件进行交流,其可以在任何支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。

架构图

在这里插入图片描述

Hypervisor管理程序

Hypervisor(虚拟机管理程序)是一种创建和运行虚拟机的虚拟机监视器。 QEMU中的Hypervisor(虚拟机管理程序)从磁盘映像加载二进制机器代码,使用TCG将其转换为本机机器代码,连接到虚拟或实际设备,并启动软件MMU,然后开始在磁盘映像中模拟操作系统。其中,TCG和软件MMU是实现虚拟化CPU和内存的关键。

而集成KVM后,QEMU将使用Linux内核的KVM功能以纯模式执行虚拟机。KVM基本上是Linux内核中的Hypervisor(虚拟机管理程序)。它可以并行运行多个操作系统。QEMU可以在KVM中启动一个新线程以执行模拟操作系统,然后KVM控制执行。从这部分来说,KVM的Hypervisor(虚拟机管理程序)替换掉了QEMU的Hypervisor(虚拟机管理程序)。

TCG

将源处理器机器代码转换为虚拟机运行所需的机器代码块,翻译过的代码会放进缓存中。

二、KVM

KVM(kernel-based virtual machine)是一种在Linux内核中使用的虚拟化基础设施,是一个Linux内核模块,Linux通过装载KVM模块将成为hypervisor。

工作原理

KVM创建并暴露一个特殊的/dev/kvm接口,这个接口可被宿主机用来主要负责vCPU的创建,虚拟内存的地址空间分配,vCPU寄存器的读写以及vCPU的运行。有了KVM以后,guest os的CPU指令不用再经过QEMU来转译便可直接运行,大大提高了运行速度。但KVM的kvm.ko本身只提供了CPU和内存的虚拟化,需要有一个在用户空间下的工具进行管理操作,所以它结合QEMU才能构成一个完整的虚拟化技术。

采用KVM配合QEMU

因为QEMU是使用纯软件进行开发的,经过翻译后的代码往往性能低下,所以常使用KVM来虚拟化CPU和内存,而I/O设备则交给QEMU来进行虚拟化,KVM运行在内核空间,采用硬件辅助全虚拟化技术,QEMU运行在用户空间,采用软件全虚拟化技术。QEMU将KVM整合了进来,通过/ioctl 调用 /dev/kvm,从而将CPU指令的部分交给内核模块来做,KVM实现了CPU和内存的虚拟化,但kvm不能虚拟其他硬件设备,因此qemu还有模拟IO设备(磁盘,网卡,显卡等)的作用(因为模拟IO的效率问题,现常采用半虚拟化技术),KVM加上QEMU后就是完整意义上的服务器虚拟化。
在这里插入图片描述

运行模式

在这里插入图片描述

参考文章1
参考文章2
参考文章3

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值