一、KVM 架构介绍

1. 虚拟化(系统虚拟化)

  • 定义: 虚拟化技术确实可以将一台物理计算机虚拟化为多台逻辑计算机(虚拟机),每个虚拟机可以运行不同的操作系统和应用程序,彼此之间相互独立,互不干扰。这种方式可以提高物理资源的利用率和灵活性。

  • 优势: 通过虚拟化,可以实现资源的动态分配和管理,提高系统的灵活性和可扩展性,同时降低硬件成本和维护复杂度。

2. 名词解释

  • 物理机或宿主机(Host): 这是指实际的物理计算机,承载虚拟化软件和多个虚拟机。

  • 虚拟机(Guest OS): 这是指在宿主机上运行的虚拟操作系统。每个虚拟机都认为自己在独立的硬件上运行,但实际上是由宿主机提供虚拟资源。

3. 虚拟机管理程序(VMM/Hypervisor)

  • 定义: VMM(Virtual Machine Monitor)或 Hypervisor 是虚拟化软件的核心,负责管理物理资源并将其分配给虚拟机。它在虚拟机和物理硬件之间充当中介。

  • 类型:

    • Type 1 Hypervisor(裸金属虚拟化): 直接运行在物理硬件上,如 KVM、Xen、VMware ESXi。

    • Type 2 Hypervisor(托管虚拟化): 运行在现有的操作系统之上,如 VirtualBox、VMware Workstation。

4. KVM(Kernel-based Virtual Machine)

架构: KVM 是 Linux 内核的一部分,将 Linux 转变为 Hypervisor。它依赖于 CPU 的硬件虚拟化扩展(如 Intel VT-x 或 AMD-V)来实现高效的虚拟化。

  • 组件:

    • KVM 内核模块: 负责 CPU 和内存的虚拟化。

QEMU: 提供 I/O 设备的虚拟化,与 KVM 一起工作以实现完整的虚拟化解决方案。

虚拟机访问物理资源: 虚拟机确实需要通过 Hypervisor(KVM 和 QEMU)来访问物理资源。KVM 通过拦截虚拟机对 I/O 的请求,并将其转发给 QEMU 进行处理,从而实现对物理资源的访问。

虚拟化类型

全虚拟化(本地虚拟化、硬件辅助全虚拟化):虚拟机中运行的软件与系统不需经过任何修改,就好比运行在真实硬件一样;但依然使用虚拟硬件设备,并且需要硬件支持,物理机需支持虚拟化功能 (grep -E ‘vmx svm’ /proc/cpuinfo,查询intel与AMD是否支持)

  • 半虚拟化:另一种类似于全虚拟化的热门技术,它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件, 但是它的客户操作系统集成了虚拟化方面的代码,该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作;但半虚拟化需要客户操作系统做一些修改(配合VDSM),这是一个不足之处,但是半虚拟化提供了与原始系统相近的性能,与全虚拟化一样,半虚拟化可以同时能支持多个不同的操作系统