虚拟化技术详解:KVM、Xen、CPU内存IO虚拟化原理

云计算入门|虚拟化技术详解:KVM、Xen、CPU/内存/I/O虚拟化原理

前言

摘要:本文系统讲解云计算背后的核心虚拟化技术。首先介绍虚拟化的本质、核心名词、发展简史、三种实现类型(全虚拟化、半虚拟化、硬件辅助虚拟化)及四大核心特点;随后深入剖析 CPU、内存、I/O 三大资源的虚拟化底层原理,包括硬件辅助虚拟化、EPT 扩展页表、Virtio 半虚拟化等关键技术;接着对比 Xen 与 KVM 两大主流 Hypervisor 的架构差异,最后介绍统一管理框架 Libvirt。读完可建立完整的虚拟化技术知识体系。

云计算背后最核心的技术就是虚拟化。物理服务器硬件性能很强,如果一台服务器只跑一套业务,硬件资源会大量闲置浪费。虚拟化技术可以把一台物理机的CPU、内存、硬盘、网卡抽象成资源池,切分成多台独立虚拟机,充分压榨硬件算力。

读完本文你将掌握:

  1. 虚拟化的本质、核心概念与四大特性
  2. 全虚拟化、半虚拟化、硬件辅助虚拟化三种技术区别
  3. CPU、内存、I/O虚拟化底层实现原理
  4. Xen、KVM主流Hypervisor架构对比
  5. Libvirt虚拟化管理框架的作用

一、虚拟化技术概览

1.1 什么是虚拟化

虚拟化是把物理资源做抽象逻辑表示的技术,解除操作系统和物理硬件之间的强耦合。

  • 传统物理机:操作系统必须跟硬件紧耦合,一台硬件只能跑一套系统。
  • 虚拟化之后:硬件被抽象为共享资源池,多套操作系统从资源池中按需分配资源,一台物理服务器同时运行多台虚拟机。

1.2 虚拟化核心名词

名词释义
Host Machine物理服务器,宿主机硬件
Host OS运行在物理机上的操作系统
Hypervisor(VMM)虚拟机监控程序,虚拟化中间层,管理虚拟机
Guest Machine虚拟机,虚拟出来的计算机
Guest OS虚拟机内部安装的操作系统

1.3 虚拟化发展简史

  1. 1964:IBM大型机,最早尝试虚拟化技术
  2. 1972:IBM大型机正式推出虚拟机功能
  3. 1999:VMware发布x86平台虚拟化产品
  4. 2002:Xen开源
  5. 2006:HP-UX Integrity虚拟机
  6. 2007:KVM诞生
  7. 2008:Hyper‑V发布;LXC容器技术推出
  8. 2010:RHEL6默认采用KVM虚拟化
  9. 2013:Docker发布
  10. 2014:Rocket容器项目推出

1.4 虚拟化的三种实现类型

类型说明优缺点
全虚拟化VMM模拟CPU、内存、IO;Guest OS无需修改兼容性好;CPU开销大
半虚拟化CPU内存由VMM实现,IO驱动需要修改Guest OS;虚拟机感知虚拟化环境性能优秀;需要修改虚拟机内核,兼容性差
硬件辅助虚拟化依靠CPU硬件扩展指令(Intel‑VT‑x / AMD‑V)实现全虚拟化无需修改虚拟机,兼容性好,性能高,现在主流方案

1.5 虚拟化四大核心特点

  1. 分区:单台物理服务器同时运行多台虚拟机,资源切分给多个虚拟机。
  2. 隔离:虚拟机之间相互隔离,一台虚拟机故障不会影响其他虚拟机。
  3. 封装:虚拟机整套运行环境封装为文件,迁移虚拟机直接移动文件即可。
  4. 相对硬件独立:虚拟机不用修改系统,可在任意支持虚拟化的物理服务器运行。

二、三大资源虚拟化底层原理

2.1 CPU虚拟化

CPU虚拟化要解决两大问题:

  1. 敏感指令模拟:敏感/特权指令只能在CPU最高特权环执行,虚拟机内部执行特权指令要被VMM捕获处理。
  2. CPU调度共享:多个虚拟机vCPU分时复用物理CPU核心,依靠定时器中断交给VMM调度。

x86 CPU分为4个特权级别Ring0~Ring3:Ring0内核态,Ring3用户态。

  • 二进制翻译全虚拟化:捕获虚拟机指令,翻译模拟执行,软件开销高。
  • 硬件辅助虚拟化:CPU新增root/non‑root模式,虚拟机运行在non‑root模式,硬件自动完成特权指令处理,是现在主流方案。

vCPU与物理CPU
物理CPU核心/超线程作为物理资源,vCPU是虚拟CPU,虚拟机配置的vCPU会被Hypervisor调度到物理CPU上执行。

2.2 内存虚拟化

原生操作系统认知内存:内存地址从0开始,内存空间连续。
虚拟化带来矛盾:多台虚拟机都希望自己内存从0开始,物理机只有一份从0开始的真实物理内存。

内存地址三层映射:

  1. GVA 客户机虚拟地址:虚拟机内部应用看到的虚拟地址
  2. GPA 客户机物理地址:虚拟机内核看到的“物理内存地址”,这是虚拟出来的,并不是宿主机真实内存
  3. HPA 宿主机物理地址:服务器硬件真正的物理内存地址

传统方案:影子页表
软件维护一套页表,直接完成GVA到HPA转换,软件实现,开销大。

现代硬件方案:EPT/NPT扩展页表
Intel CPU提供EPT扩展页表,硬件自动完成 GVA → GPA → HPA 两次地址转换,减少VMM介入,大幅降低内存虚拟化开销。

补充:透明大页 THP

  • 使用2M大页,提升TLB快表命中率,减少内存访问开销;
  • 对上层应用完全透明;支持swap、ksm内存复用,需要时自动拆分为4K小页。

2.3 I/O虚拟化(磁盘、网卡等外设)

I/O虚拟化需要解决:设备访问权限控制;截获虚拟机IO端口、MMIO访问;处理DMA内存数据交换。

KVM/QEMU三种I/O实现方案:

  1. 纯软件模拟设备
    QEMU完整模拟硬件设备,虚拟机使用原生普通驱动。
    缺点:每次IO触发VM‑Exit陷入Hypervisor,多次上下文切换,性能损耗大;优点兼容性极强。

  2. Virtio半虚拟化设备(生产环境首选)
    前后端驱动架构:

  • 虚拟机内部:virtio前端驱动
  • 宿主机:virtio后端驱动
  • 通过共享内存+eventfd事件通知完成数据交互,减少VM‑Exit,性能接近物理硬件。
  1. PCI设备直接分配(VT‑d / IOMMU)
    把物理PCI网卡、显卡直接完整分配给一台虚拟机独占。硬件IOMMU技术隔离设备访问。性能最好,但是一台物理设备只能给一个虚机使用,无法多虚机共享。

三、主流Hypervisor介绍:Xen vs KVM

3.1 Xen虚拟化

Xen是经典半虚拟化Hypervisor。

  1. 服务器BIOS优先启动Xen Hypervisor。
  2. 启动特殊特权虚拟机 Dom0,Dom0拥有直接访问物理硬件驱动权限。
  3. 用户虚拟机叫DomU,DomU没有硬件驱动,IO请求全部交给Dom0代理转发。

早期Xen大量依赖半虚拟化修改虚拟机内核;现代Xen也支持硬件辅助全虚拟化。

3.2 KVM虚拟化

KVM全称 Kernel‑based Virtual Machine,基于内核的虚拟机。

  • KVM是Linux内核模块kvm.ko,运行在内核空间;负责CPU、内存虚拟化。
  • QEMU运行在用户空间,负责模拟IO设备(网卡、磁盘、显卡)。
  • 在KVM中,每一台虚拟机本质上是Linux普通进程,由Linux系统调度器调度。

KVM运行三种模式:

  1. 内核模式:KVM模块,处理虚拟化硬件异常。
  2. 用户模式:QEMU进程,处理IO。
  3. 客户模式:虚拟机内部Guest OS执行代码。

KVM已经合并进入主线Linux内核,开源免费,FusionCompute就是基于KVM实现。

3.3 Xen与KVM架构对比

  • Xen:Hypervisor独立程序,Dom0特权虚拟机做硬件代理。
  • KVM:复用Linux完整内核,内核kvm模块做虚拟化,QEMU用户态处理IO。

四、虚拟化管理框架 Libvirt

Libvirt是一套开源C语言API工具集,作用:统一管理多种Hypervisor,屏蔽底层Xen/KVM/VMware/Hyper‑V差异,支持本地和远程管理虚拟机。

上层配套工具:

  • virsh:命令行管理虚拟机
  • virt‑manager:图形界面管理
  • virt‑install:命令行创建虚拟机

关系:Node物理节点 → Hypervisor → 多个Domain(Domain就是虚拟机)。

五、小结

  1. 虚拟化核心:硬件资源池化,解除操作系统和物理硬件紧耦合;四大特征:分区、隔离、封装、硬件无关。
  2. 三类虚拟化:全虚拟化、半虚拟化、硬件辅助虚拟化;现在生产环境优先硬件辅助虚拟化。
  3. CPU虚拟化靠硬件VT‑x;内存虚拟化依靠EPT扩展页表做GVA‑GPA‑HPA三层地址转换;IO有模拟、Virtio半虚拟化、PCI直通三种方案。
  4. Xen:独立Hypervisor,Dom0特权域代理IO;KVM:Linux内核模块,虚拟机是Linux进程,QEMU负责IO模拟。
  5. Libvirt提供统一API,屏蔽不同虚拟化底层差异,是主流虚拟化管理工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值