QEMU源码全解析 —— 块设备虚拟化(1)

本文内容参考:

《趣谈 Linux操作系统 》 —— 刘超, 极客时间

QEMU /KVM源码解析与应用》 —— 李强,机械工业出版社

详解全虚拟半虚拟及硬件辅助虚拟化技术-百度开发者中心

特此致谢!

序言

本专栏之前的系列文章,讲了很多QEMU/KVM相关知识,其中一部分内容是设备的虚拟化,如Machine、CPU、内存等。除了要虚拟化主板、CPU和内存,存储和网络(设备)也需要虚拟化。这两者属于外部设备(外设)了,要通过virtio来实现虚拟化。虽然笔者有专门针对于virtio的系列文章,但是在此要以存储也可以说块设备的角度,来看一下其虚拟化细节,同时在此过程中也会加深对于Virtio的理解。

磁盘设备虚拟化方式

虚拟化方式

(1)全虚拟化(Full Virtualization)

全虚拟化也称完全虚拟化,是指通过在宿主操作系统上安装一个虚拟化软件层(即虚拟机监视器VMM或Hypervisor),将物理硬件资源完全虚拟化成多个独立的虚拟机(VM)。每个虚拟机都可以独立运行其自己的操作系统和应用程序,且无需对操作系统进行修改。

全虚拟化方式下,虚拟机(监视器)里边的操作系统意识不到自己是运行在虚拟机中的。

特点与优势

  • 兼容性强 :能够运行未经修改的操作系统,兼容多种类型的软件。
  • 隔离性好 :虚拟机之间相互隔离,确保安全性和稳定性。
  • 灵活度高 :适用于需要运行多个不同操作系统的环境。

适用场景

  • 企业数据中心
  • 云服务提供商
  • 需要高隔离性和安全性的应用场景

缺点

全虚拟化方式最大的问题(缺点)是,QEMU模拟的设备充当“翻译官”的角色,每个指令都需要翻译,速度慢、效率低。

(2)半虚拟化(Paravirtualization)

半虚拟化则要求虚拟机需要与宿主操作系统进行协作,共同完成虚拟化过程。这通常需要对虚拟机的操作系统进行修改,以使其能够与虚拟化软件层进行直接通信。

半虚拟化方式下,虚拟机(监视器)里边的操作系统知道自己是运行在虚拟机中的。

特点与优势

  • 性能优越 :通过减少虚拟化层的开销,提高了性能。
  • 针对性强 :适用于特定的操作系统和环境,如专用的服务器环境。

适用场景

  • 需要高性能和低延迟的应用场景
  • 对兼容性要求不高的特定操作系统环境

缺点

半虚拟化的缺点就是虚拟化得不够完全、彻底。

(3)硬件辅助虚拟化(Hardware-Assisted Virtualization)

硬件辅助虚拟化是利用现代处理器的硬件特性来优化虚拟机的执行和管理。处理器中集成了特定的指令集来支持虚拟机管理程序(Hypervisor),从而大幅减少了虚拟化开销。

特点与优势

  • 性能接近原生 :借助硬件支持,虚拟机的性能接近裸机。
  • 安全性高 :硬件特性增强了虚拟机之间的安全性。
  • 易于部署 :无需对操作系统进行修改,简化了部署和维护的难度。

适用场景

  • 云计算
  • 大数据处理
  • 服务器整合
  • 需要高性能和高安全性的应用场景

(4)三种虚拟化方式的对比

性能对比

  • 全虚拟化:由于需要模拟所有硬件功能,性能开销相对较大。
  • 半虚拟化:通过减少虚拟化层的开销,性能优于全虚拟化。
  • 硬件辅助虚拟化:借助硬件支持,性能接近原生硬件。

兼容性对比

  • 全虚拟化:兼容性强,能够运行未经修改的操作系统。
  • 半虚拟化:需要操作系统支持和修改,兼容性较差。
  • 硬件辅助虚拟化:无需修改操作系统,兼容性好。

更多内容请看下回。