当前位置:首页 > 虚拟化 > 正文

kvm半虚拟化


一、虚拟化与云计算中KVM,Xen,Qemu的区别和联系虚拟化类型
全虚拟化(FullVirtualization)
全虚拟化也成为最初的虚拟化技术。该模型使用虚拟机来协调来宾操作系统和本机硬件。为了协调来宾操作系统和裸硬件,虚拟机管理程序必须捕获并处理一些受保护的指令。
图1全虚拟化模型
全虚拟化运行速度比硬件模拟快,但性能不如裸机,因为hypervisor需要占用一些资源
半虚拟化(ParaVirtualization)
半虚拟化是另一种类似于全虚拟化的技术。它使用虚拟机管理程序来共享对底层硬件的访问,但来宾操作系统集成了虚拟化代码。这种方法不需要重新编译或陷阱,因为操作系统本身可以很好地与虚拟进程配合使用。
图2半虚拟化模型
半虚拟化需要客户操作系统进行一些修改,使客户操作系统意识到自己处于虚拟化环境中,但半虚拟化提供的性能与到原来的操作系统。
虚拟化技术
KVM(Kernel-basedVirtualMachine)基于内核的虚拟机
KVM是集成到Linux内核中的Hypervisor,是一个X86架构针对Linux的完整虚拟化解决方案,其硬件支持虚拟化技术(IntelVT或AMD-V)。它是Linux的一个小模块,利用Linux来做很多事情,比如任务调度、内存管理、与硬件设备交互等。
图3KVM虚拟化平台架构
Xen
Xen是第一种运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化Xen支持虚拟机管理程序和虚拟机之间的通信,并在所有Linux版本上提供免费产品,包括RedHatEnterpriseLinux和SUSELinuxEnterpriseServer。Xen的主要优点是半虚拟化,另外,不加修改的操作系统也可以直接运行在xen上(比如Windows),这样虚拟机就可以高效运行,不需要仿真,这样虚拟机就可以去hypervisor了需求。模拟虚拟硬件,从而实现高性能。
图4Xen虚拟化平台架构
QEMU
QEMU是一套由FabriceBellard编写的模拟处理器的免费软件。它与Bochs和PearPC类似,但它具有后两者所不具备的一些特性,例如高速和跨平台能力。通过开源加速器kqemu,QEMU可以模拟接近真实计算机的速度。
KVM与QEMU的关系
准确地说,KVM是Linux
内核的一个模块。您可以使用modprobe命令加载KVM模块。加载模块后,您可以通过其他工具进一步创建虚拟机。但仅靠KVM模块是不够的,因为用户无法直接控制核心模块来做事。您还必须在用户区域中运一个工具。对于这个用户空间工具,kvm开发人员选择了已经成熟的开源虚拟化软件QEMU。说起来,QEMU也是一个虚拟化软件。它的特点是可以虚拟不同的CPU。例如,PowerCPU可以在x86CPU上虚拟化,并且可以用来编译可以在Power上运行的程序。KVM使用了QEMU的一部分,并对其进行了一些修改,成为可以控制KVM的用户空间工具。所以你会看到官方的KVM下载有两个部分(qemu和kvm)和三个文件(KVM模块、QEMU工具和两者的编译)。也就是说,您可以只升级KVM模块或只升级QEMU工具。这就是KVM和QEMU的关系。
图5KVM与QEMU关系


二、KVM网络虚拟化(二)前面介绍的虚拟化技术本质上都是共享设备,其代价是性能较低,在注重性能的场景中并不适用。设备直通技术为虚拟机提供了独占设备的能力。这种情况下,PCIPassthrough网卡可以将物理网卡直接传递给虚拟机使用。虚拟机拥有专属网卡,性能接近物理网卡。
由于采用透明PCI传输的虚拟机只需要占用网卡,因此对​​主机中的网卡数量也有要求。同时,设备透明传输也带来了虚拟机热迁移的问题。
SR-IOV的全称是Single-RootI/OVirtualization。它是一种与虚拟机共享PCI-E设备的解决方案。SR-IOV绕过系统和硬件虚拟化层,允许每个虚拟机拥有单独的内存地址、中断和DMA流。
SR-IOV有两种功能模型:


三、kvm虚拟化分为哪三层?

KVM虚拟化分为以下三种:

1.6.20从版本1开始,KVM完全正式包含在Linux内核中。KVM模块已经存在于Linux内核中,我们在安装系统时安装它。KVM模块已加载,只需在CLI命令模式下启用KVM模块即可。

2.它不需要特殊的qemu-kvm(可以使用它,现在CentOS使用它),但只需要在QEMU的通用选项中添加“-enable-kvm”即可使用KVM功能驱动虚拟机,即QEMU可以调用KVM内核,所以效率比纯QEMU高很多。

3.工具管理的方法有很多种。如果公司的云计算团队只有40-50人,那么WebVirtMgr、ProxmoxVE等管理工具是比较合适的财务助手,可以借助OpenStack这样的计算管理平台玩转云计算。

上一篇:kvm虚拟化教程

下一篇:kvm完全虚拟化