计算虚拟化:采用 KVM 技术对物理计算资源进行切割和虚拟化 - 似水流年的博客

计算虚拟化:采用 KVM 技术对物理计算资源进行切割和虚拟化

系统架构设计 2026-08-29 796 次浏览

KVM(Kernel-based Virtual Machine,基于内核的虚拟机)的核心思想,是将Linux内核本身变成一个Hypervisor(虚拟机监控器)。

简单来说,它让一台物理服务器“分身”成多台相互隔离的虚拟服务器(VM),每台都拥有自己独立的CPU、内存、I/O设备等,从而实现资源的最大化利用。它的架构主要分为内核态和用户态两部分。

🧠 核心架构:内核态的KVM与用户态的QEMU

KVM的架构由一个内核模块和一个用户态进程协同工作。

1. 内核态:KVM内核模块 (kvm.ko)

这是KVM的核心,直接集成在Linux内核中。

  • 核心职责:主要负责CPU和内存的虚拟化。它利用硬件辅助虚拟化技术(Intel VT-x / AMD-V),负责创建和管理虚拟机(VM)、分配虚拟内存及调度vCPU。

2. 用户态:QEMU进程

每个虚拟机在宿主机上其实就是一个QEMU进程。

  • 核心职责:主要负责I/O设备(如磁盘、网卡)的模拟。当虚拟机需要进行I/O操作时,KVM会将请求交给对应的QEMU进程去处理。

⚙️ 关键资源的虚拟化实现

1. CPU虚拟化:vCPU = 线程

  • 实现方式:虚拟机里的每个虚拟CPU(vCPU),在宿主机上其实就是一个普通的Linux线程。
  • 调度机制:这些vCPU线程由Linux内核的标准调度器(如CFS)统一管理,和浏览器、编辑器等普通进程一起排队,公平地获得物理CPU时间。
  • 执行流程:当vCPU线程获得CPU资源时,会借助硬件辅助虚拟化技术,让虚拟机内的操作系统直接在物理CPU上高效运行,性能接近物理机。
  • 高级特性:支持CPU超配(Overcommit),即虚拟机的vCPU总数可以超过物理CPU核心数,以充分利用物理CPU的计算能力。

2. 内存虚拟化

  • 地址转换:虚拟机使用客户机物理地址(GPA),需要转换为宿主机物理地址(HPA)才能实际访问内存。
  • 硬件加速:现代CPU通过扩展页表(EPT) 技术,在硬件层面高效完成GPA到HPA的转换,性能极佳。
  • 高级管理:KVM还能利用Linux内核的内存管理功能,如大页(HugePages) 提升性能,以及KSM(内核同页合并) 技术合并内存中内容相同的页面以节省内存。

3. I/O虚拟化:从模拟到加速

  • 纯软件模拟:最初由QEMU纯软件模拟硬件,性能较差。
  • 半虚拟化加速(VirtIO):目前的主流方案。虚拟机安装专门的virtio驱动,与宿主机上的QEMU后端高效通信,大幅提升I/O性能。
  • 硬件直通(SR-IOV/VT-d):性能最高的方案。允许将物理设备(如网卡)直接“穿透”给虚拟机使用,几乎不经过Hypervisor,性能接近原生。

🚀 关键特性与优势

  • 开源与成本:作为Linux内核的一部分,KVM是完全开源的,无额外许可成本。
  • 高性能:通过硬件虚拟化技术,其性能损耗极小。
  • 强隔离性:每个虚拟机都是独立的进程,天然具备良好的安全隔离性。
  • 丰富的生态:可通过libvirt等统一API进行管理,并得到了OpenStack等主流云平台的广泛支持。

💎 总结

对于一些高并发场景,采用KVM技术构建的云平台,本质上是将物理服务器的大块资源,通过内核级的虚拟化技术,切割成一个个独立的、可灵活调度的“资源池”。每个虚拟机(VM)都是一个独立的QEMU进程,而它的每个vCPU则是一个被宿主机内核调度的线程。这种精细的切割和调度能力,正是云平台实现弹性伸缩、高资源利用率和稳定隔离的基石。


本文由 似水流年 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

life runs on code

标签 : KVM, Linux, 云原生

还不快抢沙发

添加新评论