news 2026/4/16 13:47:07

KVM 核心组件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
KVM 核心组件

KVM(Kernel-based Virtual Machine)本质是Linux 内核模块 + 用户态工具的完整虚拟化栈,核心组件分为内核层用户态层硬件辅助层三大部分。

内核核心组件(KVM 本体)

这些是 Linux 内核里的模块,提供底层虚拟化能力:

  1. kvm.ko,KVM 核心框架模块,负责虚拟机管理、VCpu 调度、内存虚拟化、中断注入等通用虚拟化逻辑。

  2. kvm-intel.ko / kvm-amd.ko,硬件架构相关模块:

    • Intel:依赖VT-x技术
    • AMD:依赖AMD-V技术提供 CPU 硬件虚拟化指令集支持,实现 Guest 与 Host 隔离。
  3. kvmgt.ko(可选),Intel GVT-g 显卡虚拟化相关,用于 GPU 直通 / 虚拟化。

用户态核心组件

KVM 本身只做 CPU / 内存虚拟化,I/O 与设备模拟靠 QEMU:

  1. QEMU-KVM,最核心用户态组件,负责:

    • 模拟各种虚拟硬件(网卡、磁盘、显卡、BIOS/UEFI)
    • 处理虚拟机 I/O 请求
    • 与内核 kvm.ko 交互,启动 / 管理虚拟机
  2. libvirt & libvirtd,虚拟化管理库与守护进程,统一管理 KVM/QEMU、LXC、Xen 等:

    • 提供标准 API(virsh、virt-manager 都基于它)
    • 虚拟机生命周期管理、网络、存储编排
  3. virsh,libvirt 命令行工具,用于命令行控制虚拟机。

  4. virt-manager,图形化管理界面,方便可视化操作 KVM 虚拟机。

关键虚拟化支撑组件

  1. EDK2 / OVMF,UEFI 固件,替代传统 BIOS,支持安全启动、大硬盘、GPT 等。

  2. VirtIO 系列驱动,高性能半虚拟化设备标准,是 KVM 性能核心:

    • virtio-net:网卡
    • virtio-blk:磁盘
    • virtio-scsi:SCSI 控制器
    • virtio-gpu:显卡
    • virtio-balloon:内存 balloon 动态调整
  3. IOMMU / VT-d / AMD IOMMU,硬件 I/O 虚拟化,用于设备直通(PCI Passthrough),让虚拟机直接独占物理设备。

  4. qemu-guest-agent,虚拟机内部代理,实现宿主机与虚拟机高效交互(关机、同步时间、获取信息等)。

ARM64 KVM

核心依赖 ARMv8-A 系列的EL2 异常级别两阶段地址翻译(Stage 2)

kvm.ko + kvm-arm.ko

通用虚拟化框架与 ARM64 特化模块,合为一体,提供/dev/kvm字符设备接口。

  • 职责:vCPU 调度、异常捕获与注入(Trap-and-Emulate)、Stage 2 内存管理、中断虚拟化、KVM/ARM 特定 hypercall 处理。
  • 关键路径:kvm-arm-init完成模块加载与 CPU 热插拔初始化;kvm_vm_ioctl处理用户态创建 VM/VCPU 等请求。

关键寄存器与机制

  • HCR_EL2:控制虚拟化开关,如置位VM位启用 Stage 2 地址翻译。
  • VTTBR_EL2 / VTCR_EL2:Stage 2 页表基址与控制寄存器,定义 IPA 空间与页表属性。
  • VMID:用于 Stage 2 地址空间标识,减少 TLB 刷新开销。

硬件辅助依赖

  • EL2 异常级别:ARMv8 定义,KVM 驻留于此,实现 Guest/Host 严格隔离。
  • 两阶段地址翻译(Stage 2)
    • Stage 1:Guest VA → IPA(由 Guest 页表控制)。
    • Stage 2:IPA → PA(由 KVM 控制,实现内存隔离与懒分配)。
  • VHE(Virtualization Host Extensions,ARMv8.1+):让 Host 内核与 KVM 共驻 EL2,消除特权切换开销,接近 Type-1 虚拟化性能。

ARM64 特有关键支撑组件

VGIC(Virtual Generic Interrupt Controller)

  • 版本:VGICv3/v4(对应硬件 GICv3/v4),支持 vIRQ/vFIQ 虚拟化Linux Kernel。
  • 核心:减少中断 Trap,提升中断响应效率;包含虚拟分发器(VGICD)、虚拟 CPU 接口(VGICR)与中断翻译服务(ITS)Linux Kernel。

IOMMU / SMMU(System Memory Management Unit)

  • 职责:实现PCIe 设备直通(Passthrough)与 DMA 重映射,隔离 Guest 设备访问,保障安全性。
  • 关键:支持 Stage 1/Stage 2 双重翻译,与 KVM 协同控制设备地址空间。

PMU 虚拟化(Performance Monitoring Unit)

  • 职责:让 Guest 直接访问硬件性能计数器,支持性能分析与调优,减少 Trap 开销。
  • 接口:通过kvm_pmu_*系列函数实现计数器读写与溢出处理。

Protected KVM(pKVM,可选)

  • 机制:基于 ARM 安全扩展(如 TrustZone)或硬件隔离,保护 Hypervisor 自身与 Guest 内存,提升安全性。
  • 场景:边缘计算、机密计算等对安全要求极高的环境。

与 x86_64 KVM 核心差异

维度ARM64 KVMx86_64 KVM
虚拟化入口EL2 异常级别VMX 根模式
内存虚拟化强制两阶段(Stage 1+Stage 2)可选影子页表 / EPT
中断控制器VGICv3/v4(ITS)APICv/AVIC
硬件扩展VHE(ARMv8.1+)、SMMUVT-x、EPT、APICv

核心要点

  • EL2 是地基:KVM 必须运行于此,依赖硬件辅助实现隔离与高效异常处理。
  • Stage 2 是关键:决定内存虚拟化效率与安全性,2MB/1GB 大页配置可显著降低 TLB Miss。
  • VGIC 是性能瓶颈优化点:合理配置可大幅减少中断开销 。
  • VirtIO + SMMU是高性能与高安全的标配组合。

总结

CPU / 内存虚拟化→ 内核kvm.ko+ 硬件 VT-x/AMD-V

设备模拟与 I/O→ QEMU-KVM

统一管理→ libvirt + virsh / virt-manager

高性能→ VirtIO 半虚拟化

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:46:13

顶会论文模块复现与二次创新:顶会 ICCV 2025 模块:Focal Modulation(焦点调制)替换自注意力,计算量减半

⚡ 核心价值提炼 计算量减半:Focal Modulation 将自注意力的 O(N) 复杂度降为 O(N),相同精度下计算量减少约 50% 即插即用:可无缝替换 Transformer 中的自注意力模块,或 YOLO 系列中的 SPPF 模块 性能显著提升:ImageNet-1K 分类准确率达 83.9%(超越 Swin Transformer 81.…

作者头像 李华
网站建设 2026/4/16 13:43:16

供应链创新试点DID

领取步骤如下:1、进入数据皮皮侠,数据编号17152、使用兑换码6J25l1mH1220L1S0A94A61q1时间跨度2007-2023区域跨度城市层面数据格式Excel形式数据简介在经济全球化的大背景下,优质的供应链效率和表现不断提高企业的竞争力、优化其存货管理并且…

作者头像 李华
网站建设 2026/4/16 13:34:38

res-downloader终极配置指南:三步解决macOS HTTPS嗅探难题

res-downloader终极配置指南:三步解决macOS HTTPS嗅探难题 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还在为…

作者头像 李华
网站建设 2026/4/16 13:32:39

Camera Shakify:让Blender动画告别僵硬感的终极解决方案

Camera Shakify:让Blender动画告别僵硬感的终极解决方案 【免费下载链接】camera_shakify 项目地址: https://gitcode.com/gh_mirrors/ca/camera_shakify Camera Shakify是一款革命性的Blender插件,专门为3D动画和电影制作提供专业级相机抖动效果…

作者头像 李华
网站建设 2026/4/16 13:32:21

PyFluent 终极指南:Python自动化CFD仿真的完整教程

PyFluent 终极指南:Python自动化CFD仿真的完整教程 【免费下载链接】pyfluent Pythonic interface to Ansys Fluent 项目地址: https://gitcode.com/gh_mirrors/pyf/pyfluent PyFluent 是 Ansys Fluent 的 Python 接口库,为计算流体动力学&#x…

作者头像 李华