KVM虚拟化:(一)虚拟化基础

admin 2022年08月12日 1,005次浏览

1、虚拟化概念

虚拟化是一种资源管理技术,它将计算机的各种实体资源(CPU、内存、存储、网络等)予以抽象和转化出来,并提供分割、重新组合,以达到最大化利用物理资源的目的

Virtual Machine Monitor(VMM,虚拟机监控器,也称为 Hypervisor)层,就是为了达到虚拟化而引入的一个软件层。它向下掌控实际的物理资源;向上呈现给虚拟机 N 份逻辑的资源。为了做到这一点,就需要将虚拟机对物理资源的访问截取并重定向,让虚拟机误以为自己是在独享物理资源。虚拟机监控器运行的实际物理环境称为宿主机;在上面虚拟出来的逻辑主机称为客户机

1.1、软件虚拟化和硬件虚拟化

  • 软件虚拟化

    软件虚拟化,就是通过软件模拟来实现 VMM 层,通过纯软件的环境来模拟执行客户机里的指令

  • 硬件虚拟化

    硬件虚拟化技术是指计算机硬件本身提供能力让客户机指令独立执行,而不需要 VMM 截获重定向。硬件虚拟化技术的性能接近于原生系统,并且极大地简化了 VMM 的软件设计架构

1.2、半虚拟化与全虚拟化

  • 半虚拟化

    半虚拟化能让客户机意识到自己是运行在虚拟化环境里,并做相应修改以配合 VMM,一方面,可以提升性能和简化 VMM 软件复杂度;另一方面,也不需要太依赖硬件虚拟化的支持,从而使得其软件设计可以跨平台

  • 全虚拟化

    在全虚拟化中,客户机的操作系统完全不需要改动。敏感指令在操作系统和硬件之间被 VMM 捕捉处理,客户操作系统无须修改,所有软件都能在虚拟机中运行。因此,全虚拟化需要模拟出完整的、和物理平台一模一样的平台给客户机,但是这样就增加了虚拟化层 (VMM)的复杂度

1.3、Type1和Type2虚拟化

  • Type1

    这类虚拟化层直接运行在硬件之上,没有所谓的宿主机操作系统。它们直接控制硬件资源以及客户机。典型地如 Xen 和 VMware ESX

  • Type2

    Hypervisor 运行在一个宿主机操作系统之上(VMware Workstation)或系统里(KVM),这类 Hypervisor 通常就是宿主机操作系统的一个应用程序,像其他应用程序一样受宿主机操作系统的管理

2、KVM简介

KVM 全称是 Kernel-based Virtual Machine(基于内核的虚拟机),是采用硬件虚拟化技术的全虚拟化解决方案

KVM 以内核模块的形式加载之后,就将 Linux 内核变成了一个 Hypervisor,但硬件管理等还是通过 Linux kernel 来完成的,所以它是一个典型的 Type2 Hypervisor

一个 KVM 客户机对应于一个 Linux 进程,每个 vCPU 则是这个进程下的一个线程,还有单独的处理 IO 的线程,也在一个线程组内。所以,宿主机上各个客户机是由宿主机内核像调度普通进程一样调度的,即可以通过 Linux 的各种进程调度的手段来实现不同客户机的权限限定、优先级等功能

2.1、KVM功能特性

  • 内存管理

    KVM 依赖 Linux 内核进行内存管理

  • 存储和客户机镜像的格式

    • KVM 能够使用 Linux 支持的任何存储来存储虚拟机镜像,包括具有 IDE、SCSI 和 SATA 的本地磁盘,网络附加存储(NAS),或者支持 iSCSI 和光线通道的 SAN。多路径 I/O 可用于改进存储吞吐量和提供冗余

    • 磁盘镜像支持稀疏文件形式,支持通过仅在虚拟机需要时分配存储空间,而不是提前分配整个存储空间,这就提高了存储利用率

    • KVM 的原生磁盘格式为 QCOW2,它支持快照,允许多级快照、压缩和加密

  • 实时迁移

    KVM 支持实时迁移,这提供了在宿主机之间转移正在运行的客户机而不中断服务的能力,实时迁移对用户是透明的,客户机保持打开,网络连接保持活动,用户应用程序也持续运行,但客户机转移到了一个新的宿主机上。除了实时迁移,KVM 支持将客户机的当前状态(快照,snapshot)保存到磁盘,以允许存储并在以后恢复它

  • 设备驱动程序

    KVM 支持混合虚拟化,其中半虚拟化的驱动程序安装在客户机操作系统中,允许虚拟机使用优化的 I/O 接口而不使用模拟的设备,从而为网络和块设备提供高性能的 I/O

    KVM 也支持 Intel 的 VT-d 技术,通过将宿主机的 PCI 总线上的设备透传给客户机,让客户机可以直接使用原生的驱动程序高效地使用这些设备,这种使用是几乎不需要 Hypervisor 的介入的

  • 性能和可伸缩性

    KVM 继承了 Linux 的性能和可伸缩性。KVM 在 CPU、内存、网络、磁盘等虚拟化性能上表现出色,大多都在原生系统的95%以上