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

kvm虚拟化的作用


一、KVM与XEN虚拟化环境究竟有何不同

虚拟化的概念近年来变得非常流行。原因很简单:虚拟化可以最大限度地提高资源利用率,为企业节省成本。目前市场上比较流行的虚拟架构主要有KVM、XEN和VMware。其中KVM和XEN是免费开源的,而VMware是付费的。

如果简单地对KVM和XEN进行分类的话,KVM是一种全虚拟化技术,也称为硬件辅助虚拟化技术(FullVirtualization)。相反,XEN是一种半虚拟化技术,也称为半虚拟化技术。

全虚拟化技术(左)和半虚拟化技术(右)

KVM在虚拟机和硬件之间添加了一个软件层-虚拟机管理程序或作为虚拟机管理器(VMM),KVM管理程序直接运行在物理硬件上。XEN基于全虚拟化,并添加了特殊的API,以便客户操作系统集成虚拟化代码。此方法不需要重新编译或导致陷阱,因为操作系统本身可以与虚拟进程很好地配合。

KVM架构

也有人将KVM构分为两部分:KVM驱动程序,它是Linux内核的一个模块,以及Qemu,用于模拟虚拟化。机器的用户空间组件提供I/O设备模型和用于访问外围设备的选项。最大的优点是KVM内置于Linux内核中,因此速度更快。同时KVM是完全虚拟的,所以不需要区分pv和hvm。它可以安装各种Linux发行版和Windows发行版。并且可以在支持虚拟化的系统上运行。关于扩展的X86和X86-64硬件架构。

XEN其实比KVM更早出现。它由剑桥大学开发,是一个开源虚拟机监视器。半虚拟化架构决定了这不是一个真正的虚拟机,而是一个内核独立执行的例子。它还区分了Xen+pv+和Xen+hvm,其中pv仅支持Linux,而hvm支持Windows系统。此外,XEN还提供更多可用资源、平台支持、可管理性、实施、实时迁移支持和性能基准等优势。

参考资料:


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

探究虚拟化本质:QEMU-KVM的棱角高效运行


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


2007年,KVM正式加入Linux家族,支持多核架构(SMP)和NUMA。它的LiveMigration和KernelSame-pageMerging(KSM)功能得到了动态显着改进。虚拟机。启动时,以RootMode初始化内核模块,通过UserApplicationQEMU,虚拟硬件模拟虚拟机并提供虚拟机服务。


QEMU由天才FabriceBellard于2001年开发,称为TYPE2Hypervisor,基于动态二进制翻译技术,使其能够兼容各种CPU架构和模拟技术,尽管其性能较差略低于KVMInferior,但灵活性允许QEMU与KVM连接,催生了强大的QEMU-KVM分支。


KVM软件包括:核心模块、开源虚拟机管理器QEMU、AWS、阿里云等云服务商中的QEMU-KVM,以及构建坚实基础的电源驱动程序用于技术虚拟化。虽然QEMU-KVM分支是QEMUKVM环境的一部分,但我们更喜欢称其为QEMU而不是KVM实现。KVM工作得非常出色。QEMU通过open、close、jokes等系统调用访问KVM接口,实现CPU、内存和I/O的虚拟化,而VM管理和模拟I/O由QEMU独立处理。


创建虚拟机的过程和技术一样精确:首先打开/dev/kvm,通过ioctl命令创建VM,并配置硬件抽象层(HVA)和物理地址(HPA)和设备PCI仿真。接下来,下载QEMU映像、构建vCPU并启动主机。在此过程中,主线程不断监听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)负责底层调度。KVM支持SMP和NUMA,允许用户自定义虚拟机的vCPU布局,以确保安全的CPU迁移模型。


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


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