KVM虚拟化技术分层解析

2025-01-22 23:29:16
寻季彬
冶金VPS

kvm虚拟化分为哪三层?

KVM虚拟化技术主要分为三个层次,分别介绍如下: 1、内核层(KVM内核模块):KVM的第一层,即内核层,是Linux内核自带的虚拟化支持。
从Linux内核2.6.20版本开始,KVM正式集成到Linux内核中,并作为模块存在。
这意味着任何使用2.6.20或更高版本的Linux系统在安装过程中都会自动加载KVM模块。
用户可以通过命令行界面(CLI)激活KVM模块。
2、用户空间层(QEMU):KVM的第二层是QEMU提供的用户空间工具。
由于qemu-kvm分支于2012年被集成到主流QEMU项目中,因此通过添加“-enable-kvm”选项,QEMU可以在启用KVM功能的情况下运行。
这样QEMU就可以调用KVM内核,提高了虚拟化操作的效率,相比纯QEMU性能有显着提升。
3、管理工具层(KVM管理工具):基于KVM内核层和QEMU用户空间层,第三层是KVM管理工具。
这些工具提供了多种管理 KVM 环境的方法。
对于较小的团队,例如大约 40 到 50 人的云计算团队,您可以选择使用 WebVirtMgr 和 ProxmoxVE 等管理工具。
对于规模较大的企业,如果员工较多、资源充足,可以考虑使用OpenStack等综合云计算管理平台。

KVM 虚拟化详解

KVM 虚拟化详解 1. KVM 虚拟化架构 1.1 主流虚拟化架构比较 主流虚拟化架构包括ESXi、Xen、KVM。
ESXi内核实现了所有虚拟化功能。
Xen仅执行CPU和内存虚拟化,而I/O虚拟化和调度管理由Domain0执行。
KVM内核实现CPU和内存虚拟化,QEMU实现IO虚拟化,通过Linux进程调度器管理虚拟机。
1.2KVM架构核心模块 KVM架构包括KVM内核模块和QEMU设备仿真。
KVM内核模块负责CPU和内存虚拟化,QEMU实现IO虚拟化。
2、CPU虚拟化 2.1pCPU和vCPU 物理服务器配置了两个物理pCPU,每个pCPU有多个核心。
超线程技术开启后,每个核心有两个线程。
在虚拟环境中,一个线程对应一个虚拟CPU。
KVM 将每个虚拟机视为用户空间中的一个 QEMU 进程,分配给 guest 虚拟机的 vCPU 就是该进程的线程。
2.2 比较虚拟化类型 ESXi 是全虚拟化,VMM 运行在 Ring0 上,完全模拟底层硬件。
Xen支持全虚拟化和虚拟化。
KVM 基于完整的硬件辅助虚拟化。
2.3KVMCPU虚拟化 KVM中的vCPU以三种模式实现:来宾模式运行GuestOS、用户模式运行QEMU、内核模式运行KVM内核。
当KVM内核加载后,执行VMXON指令进入VMX操作模式。
VMM执行VMExit切换到根模式处理特权指令,然后执行VMLANCH或VMRESUME指令切换回非根模式。
3. 3.1EPT内存虚拟化VPIDIntel的EPT和AMD的NPT硬件辅助内存虚拟化技术实现了硬件辅助内存地址转换。
guest 读写 CR3 或 GuestPageFault 寄存器,并执行 INVLPG 指令而无需运行 VMExit,从而降低了内存切换复杂性。
3.2 透明大页THP 透明大页THP 技术自动创建、管理和使用大页内存,提高内存效率和性能,同时避免传统大页的缺点。
3.3 内存过度使用 过度使用结果直到分配给 guest 虚拟机的内存总量大于实际物理内存总量。
内存交换、气球和页面共享技术会产生内存开销。
4. IO 设备虚拟化 4.1 IO 设备虚拟化概述 KVM 支持设备虚拟化、驱动程序权限、设备传递和共享。
4.2 设备模拟和高级操作设备模拟通过QEMU实现。
Virtio驱动将前端驱动部署在Guest中,将后端驱动部署在QEMU中,通过虚拟环形缓冲区队列交换I/O请求和执行信息。
4.3 设备传递和共享设备 通过 PCIPass 的传递直接将主机物理设备映射到客户机。
SR-IOV设备共享标准允许物理设备支持多个虚拟功能接口,并将它们独立分配给不同的guest。
4.4 其他输入输出设备的图像和声音特征是使用QEMU的SDL来实现的。
热插拔支持KVM中的PCI设备,CPU和内存的热插拔受到平台和操作系统的限制。

KVM虚拟化技术

KVM,全称Kernel-basedVirtualMachine,是一种集成到Linux内核中的虚拟化技术,允许您在单个物理硬件上同时运行多个虚拟机。
自 2007 年在 Linux 2.6.20 核心中引入以来,KVM 已被移植到各种平台,包括支持 Intel VT 或 AMD-V 的 x86 架构,以及 S/390、PowerPC 和 IA-64。
KVM的核心是kvm.ko内核模块,它与更高级别的QEMU软件配合提供强大的虚拟化功能,例如完全虚拟化支持,可以在不改变原始镜像的情况下创建具有定制硬件环境的虚拟机。
与VBox等商业软件相比,VBox适合基于图形的桌面应用,支持不需要虚拟化技术的CPU,但具有更好的图形性能。
KVM是Linux内核的一部分,需要支持虚拟化的CPU,特别适合Server场景,但图形性能较差。
KVM内存管理采用Linux内存管理特性,如交换空间、大内存页和NUMA支持,并使用Intel的EPT或AMD的RVI技术来提高性能和吞吐量。
KSM技术可以通过共享内存来减少内存使用,提高效率。
创建KVM虚拟化平台时,必须首先验证您的硬件是否支持虚拟化,然后启用KVM模块。
创建KVM虚拟机主要基于QEMU,QEMU是KVM的补充工具,优化虚拟性能。
此外,libvirt 是管理 KVM 虚拟机、提供多语言界面并支持多种虚拟化技术管理的关键组件。
通过yum源安装相关组件并配置桥接设备,完成虚拟化平台的搭建。
使用 qemu-kvm 时,它是一个强大的工具,可以模拟不同的架构并提供虚拟机创建和管理功能,包括网络、可视化和调试选项。
无论是手动操作还是virt-manager等图形界面工具,GuestOS都可以在虚拟KVM环境中安装和管理,例如Windows 2003系统。