×

kvm技术 虚拟化技术 kvm虚拟化

kvm虚拟化技术什么意思?虚拟化技术中KVM,Xen,Qemu的区别和联系

admin admin 发表于2022-05-20 13:21:52 浏览138 评论0

抢沙发发表评论

kvm虚拟化技术什么意思


kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。   KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己到进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列也是基于软件模拟的Para-Virtualization。

虚拟化技术中KVM,Xen,Qemu的区别和联系


虚拟化类型

全虚拟化(Full Virtualization)

全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理。-kvm虚拟化

 

图1 全虚拟化模型

全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源

半虚拟化(Para Virtualization)

半虚拟化是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。-虚拟化技术

 

图2 半虚拟化模型

半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。

虚拟化技术

KVM(Kernel-based Virtual Machine)基于内核的虚拟机

KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。-kvm虚拟化

 

图3 KVM虚拟化平台架构

Xen

Xen 是第一类运行再裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,Xen支持hypervisor和虚拟机互相通讯,而且提供 在所有Linux版本上的免费产品,包括Red Hat Enterprise Linux和SUSE Linux Enterprise Server。Xen最重要的优势在于半虚拟化,此外未经修改的操作系统也可以直接在xen上运行(如Windows),能让虚拟机有效运行而不需要仿 真,因此虚拟机能感知到hypervisor,而不需要模拟虚拟硬件,从而能实现高性能。-虚拟化技术

 

图4 Xen虚拟化平台架构

QEMU

QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。-kvm虚拟化

KVM和QEMU的关系

准确来说,KVM是Linux kernel的一个模块。可以用命令modprobe去加载KVM模块。加载了模块后,才能进一步通过其他工具创建虚拟机。但仅有KVM模块是 远远不够的,因为用户无法直接控制内核模块去作事情,你还必须有一个运行在用户空间的工具才行。这个用户空间的工具,kvm开发者选择了已经成型的开源虚 拟化软件 QEMU。说起来QEMU也是一个虚拟化软件。它的特点是可虚拟不同的CPU。比如说在x86的CPU上可虚拟一个Power的CPU,并可利用它编译出 可运行在Power上的程序。KVM使用了QEMU的一部分,并稍加改造,就成了可控制KVM的用户空间工具了。所以你会看到,官方提供的KVM下载有两 大部分(qemu和kvm)三个文件(KVM模块、QEMU工具以及二者的合集)。也就是说,你可以只升级KVM模块,也可以只升级QEMU工具。这就是 KVM和QEMU 的关系。-虚拟化技术

 

图5 KVM和QEMU关系


云计算与虚拟化的关系是什么


1、云计算指的是资源使用和交互的一种模式 ,虚拟化指的是技术,可以将物理计算机虚拟成多个逻辑计算机,他俩是彼此独立,互不影响,但是云计算又需要使用虚拟化技术。

2、可以理解为云计算包含虚拟化,如Cloudview云计算操作系统,之所以容易混淆虚拟机和云计算,是因为虚拟机确实在云计算中太普遍了,它是云计算中最活跃的主体,也是核心之一,很多服务都是围绕着虚拟机提供服务。-kvm虚拟化

3、在AWS或者其它公有云买云服务,最直接的方式就是申请一台虚拟机。你购买的云数据库,底层也有可能是虚拟机。

4、原理大概是这样的,比如你买一个mysql云数据库,云平台会在后台给你首先起一个虚拟机,这个虚拟机镜像包含了mysql服务,当虚拟机起来,mysql服务就跑起来了。你不仅需要访问数据库,还有可能需要其它相关的功能,比如设置主从、查看日志、创建备份、设置账户权限等,由于虚拟机对用户是不可见的,并且不是所有的用户都会这些操作。-虚拟化技术

5、因此云服务商还提供了非常方便的API接口,用户只需要调用API或者Web界面就可以完成以上所有操作,而不需要自己去学习和关心怎么操作。底层怎么实现?这个没有固定地方法,有可能是在虚拟机跑个agent程序,执行某个操作。-kvm虚拟化

6、比如创建一个数据库用户,agent就跑一个已经定义好的脚本;当然也有可能通过外部程序来完成数据库内部的配置管理,比如ssh/ansible/puppet等。