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

kvm虚拟化技术的特点(虚拟化技术的特征)


一、虚拟化技术—QEMU-KVM基于内核的虚拟机

探索虚拟化巅峰:QEMU-KVM的基石与高效运行


QEMU-KVM作为与Linux内核集成的高效虚拟化解决方案,其核心是TYPE1Hypervisor,采用硬件辅助虚拟化技术,与Linux内核紧密配合,以其优异的性能和资源管理能力脱颖而出。要了解KVM,首先要知道它是如何利用内核模块等硬件支持来提供对虚拟环境的控制和优化,以保证兼容性和效率。


2007年,KVM正式加入Linux家族,支持多核架构(SMP)和NUMA。其功能已扩展到LiveMigration和KernelSame-pageMerging(KSM),显着提高了虚拟机的动态性。迁移和内存管理的效率。启动时,KVM内核模块在RootMode下初始化,并通过UserApplicationQEMU神奇地模拟虚拟硬件,为虚拟机提供服务。


QEMU是由天才开发者FabriceBellard于2001年推出的,和TYPE2Hypervisor一样,都是基于动态二进制翻译技术来兼容多种CPU架构和设备模拟,虽然性能稍差一些。低于LowerKVM,但QEMU的灵活性使其可以与KVM结合,从而产生强大的QEMU-KVM分支。两者共同推动虚拟化技术的创新。


KVM软件组件包括:内核模块、QEMU开源虚拟机管理器、AWS、阿里云等云提供商使用的QEMU-KVM以及virtio驱动程序,我们一起构建一个为虚拟化技术奠定了坚实的基础。


虽然QEMU-KVM分支是QEMU的一部分,但在KVM环境中我们更喜欢将QEMU称为KVM执行引擎。KVM的工作方式非常巧妙。位于内核空间,通过/dev/kvm与用户空间实时交互,并提供libkvm库。QEMU通过open、close、ioctl等系统调用访问KVM接口,实现CPU、内存和I/O虚拟化,而VM管理和I/O模拟则由QEMU独立处理。


创建虚拟机的过程就像一门艺术一样精确:首先打开/dev/kvm,通过ioctl命令创建VM并配置硬件抽象层(HVA)和物理地址(HPA),以及模拟PCI设备。然后映射QEMU映像、创建vCPU并启动GuestOS。在此过程中,主线程不断监听VM退出事件,以响应虚拟环境中的中断和设备访问。


当页面错误中断或设备访问触发退出事件时,KVM会控制CPU,Linux内核通过ioctl与QEMU交互来管理虚拟机及其vCPU。KVM支持三种操作模式:User、Kernel(root模式)和Guest(非root模式)。QEMU通过/dev/kvm实现内存虚拟化,并创建全局页表(GPA)映射以确保GuestOS隔离。对于I/O虚拟化,QEMU负责模拟设备并捕获I/O请求,构建QEMU-KVM架构,由vCPU、虚拟内存、虚拟I/O和GuestOS构建,形成独特的用户进程结构。


QEMU-KVM的架构经过智能化设计。vCPU在HostOS调度下由GuestOS和HostOS共同管理,形成两级调度:GuestOS负责高层。HostOS(LinuxScheduler)负责底层调度,涉及vCPU线程、QEMU线程和物理CPU。KVM支持SMP和NUMA,允许用户自定义虚拟机的vCPU布局,保证迁移过程中CPU型号的安全。


使用-qemu-kvm命令,开发人员可以自定义虚拟机的CPU配置并选择自定义模板和功能。但是,应该注意的是,软件模拟会影响性能。默认使用-host模式,磁盘设备选项丰富多样,包括文件路径、接口类型、索引、格式等。像-boot这样的引导选项用于指定引导设备并根据体系结构支持不同的字符标识符。QEMU的网络适配器模拟功能强大,支持多种网卡类型、MAC地址和VLAN。它甚至可以通过Tap接口连接到物理网络,并支持用户模式网络堆栈设计。


QEMU-KVM是虚拟化技术的卓越之旅,以其卓越的性能和灵活性,带我们探索更高层次的计算世界。无论是基本配置还是高级功能,QEMU-KVM以其优秀的工程设计为云计算和虚拟化环境提供了强有力的支持。


二、kvm与vmware的区别存在实现方法的差异、性能的差异、安全性的差异、管理的差异、应用的差异。
1.实现方式的差异:KVM是一种基于Linux内核的硬件虚拟化技术,它将Linux内核转换为可用于虚拟化的Hypervisor。VMware是一个独立的第三方虚拟机管理程序,可以安装在各种不同的操作系统上。
2。性能差异:在性能方面,KVM由于直接访问物理硬件,因此在高强度工作负载下具有明显的优势。VMware需要一定的虚拟化技能,因此在这方面相对较弱。
3。安全性区别:在安全性方面,KVM非常安全,因为它是基于Linux内核实现的,继承了Linux内核的安全机制。VMware是基于操作系统的虚拟化技术,安全性较低,因为VMware运行在操作系统上,因此受到操作系统的限制。
4。管理差异:为了管理虚拟机,Linux中可以包含一个KVM虚拟机管理器。如果你熟悉Linux,使用KVM虚拟机会更容易。VMware需要特殊的管理软件来管理它,这对于不熟悉VMware技术的管理员来说可能很困难。
5。应用差异:KVM虚拟机是基于Linux内核实现的,因此更适合在Linux系统上运行。VMware更适合在Windows系统上运行。
三、虚拟化技术中KVM,Xen,Qemu的区别和联系

虚拟化类型

全虚拟化(FullVirtualization)

全虚拟化也成为最初的虚拟化技术。该模型使用虚拟机来协调来宾操作系统和本机硬件,VMM为了协调来宾操作系统和纯硬件之间的工作,必须由虚拟机管理程序捕获并处理一些受保护的指令。

图1全虚拟化模型

全虚拟化运行速度比硬件模拟快,但性能不如裸机,因为hypervisor必须占用一些空间资源

半虚拟化

半虚拟化是另一种类似于全虚拟化的技术。它使用虚拟机管理程序来共享对底层硬件的访问,但其客户操作系统集成了虚拟化代码。这种方法不需要重新编译或陷阱,因为操作系统本身可以很好地与虚拟进程配合使用。

图2半虚拟化模型

半虚拟化需要客户操作系统进行一些修改,使客户操作系统意识到自己处于虚拟化环境中。是的,但是半虚拟化提供了与原始操作系统类似的性能。

虚拟化技术

KVM(Kernel-basedVirtualMachine)基于内核的虚拟机

KVM是集成到Linux内核中的Hypervisor,它是X86架构,具有硬件支持使用虚拟化技术(IntelVT或AMD-V)的Linux完整虚拟化解决方案。它是Linux的一个小模块,利用Linux来做很多事情,比如任务调度、内存管理、与硬件设备交互等。

图3KVM虚拟化平台架构

Xen

Xen是第一种运行在裸机上的虚拟化管理程序(Hypervisor)。它支持全虚拟化和半虚拟化,Xen支持相互通信的虚拟机管理程序和虚拟机,并在所有Linux版本上提供免费产品,包括RedHatEnterpriseLinux和SUSELinuxEnterpriseServer。Xen的主要优点是半虚拟化。此外,未经修改的操作系统也可以直接在必须模拟的虚拟硬件上运行,以便实现高性能。

图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关系