KVM概述
一、KVM简介:
1、在开源的虚拟化技术中 KVM是全虚拟化,而Xen同时支持半虚拟化和全虚拟化。
2、KVM是Kernel-based Virtual Machine的简称(基于内核的虚拟机)是一种Ⅱ型全虚拟化
3、kVM 其就是Linux的一个内核模块该内核模块使得 Linux 变成了一个 Hypervisor(虚拟机监视器)
4、KVM自从 Linux 2.6.20 起就作为一模块被包含在yu Linux 内核中

当Linux系统安装了KVM模块后会增加三种运行模式

  • ·Guest Mode:此模式主要是指虚拟机,包括虚拟机的 CPU、内存、磁盘等虚拟设 备,该模式被置于一种受限的 CPU 模式下运行; 
  • User Mode:用户空间,此模式下运行的主要是 QEMU,它用来为虚拟机模拟执行 I/O 类的操作请求;
  • Kernel Mode:内核空间,在此模式下可以真正的操作硬件,当 Guest OS 执行 I/O 类操作或特权指令操作时需要向用户模式提交请求,然后由用户模式再次发起 硬件操作请求给内核模式从而真正操作硬件。

二、KVM工作原理:
在KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU

KVM虚拟化 = KVM内核模块 + /dev/kvm + QEMU
KVM与FusionCompute简介_第1张图片

 

  • kvm.ko内核模块
    KVM 内核模块是 KVM 虚拟机的核心部分,其主要功能是初始化 CPU 硬件,打开虚拟化模 式,然后将 Geust Machine 运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。 KVM 内核模块中,实现虚拟化功能的是 kvm.ko,还包括一个和处理器强相关的模块如 kvmintel.ko 或 kvm-amd.ko kvm.ko模块在用户空间可通过系统调用ioctl()与内核中的kvm模块交互,从而完成虚拟机的创建、启动、停止、删除等各种管理功能

  • /dev/kvm
    KVM 本身不能实现任何模拟功能,它仅仅是提供了一个/dev/kvm 接口,这个接口可被宿主机用来主要负责 vCPU 的创建、虚拟内存的地址空间分配、vCPU 寄存 器的读写以及 vCPU 的运行 作用:将不同的GuestOS之间的地址隔离,或将GuestOS和HostOS(VMM)之间的地址隔离

  • Qemu架构:
    QEMU 原本不是 KVM 的一部分,它是一个通用的开源的使用纯软件来实现的虚拟 化的模拟器,Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。KVM 是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 Qemu 则负责 I/O 虚拟化,两者合作各自发挥自身的优势,相得益彰QMEU 本身可以模拟 CPU 和内存,在 KVM 中,只使用 QEMU 来模拟 IO 设备,KVM 的开发者将其进行了改造,形成了 QEMU-KVM。。

QEMU 是一个软件实现 I/O 虚拟化的模拟工具,性能较差,有时候一些应用对网卡速率有要求时,就不能再使用 QEMU 了,我们需要引入一个新的技术,它 就是 Virtio,是用了 Virtio
KVM与FusionCompute简介_第2张图片
1、 虚拟机中的磁盘设备发起一次 IO 操作请求;
2、 KVM 模块中的 I/O Trap Code(I/O 捕获程序)将这个 IO 操作请求捕获到,进行 相应的处理,然后将处理后的请求放到 I/O 共享页中;
3 、KVM 模块会通知 QEMU,告诉它有新的 I/O 操作请求放到了共享页中;
4 、QEMU 收到通知后,到共享页中获取该 I/O 操作请求的具体信息;
5 、QEMU 对该请求进行模拟,同时根据 I/O 操作请求的信息调用运行在内核态的设备 驱动,去进行真正的 IO 操作;
6 、通过设备驱动去对物理硬件执行真正的 IO 操作;
7 、QEMU 将执行后的结果返回到共享页中,同时通知 KVM 模块已完成了此次的 I/O 操作;
8 、I/O 捕获程序从共享页中将返回的结果读取出来;
9 、I/O 捕获程序将操作结果返回给虚拟机;
10、 虚拟机的将结果返回给发起操作的应用程序。

使用 Virtio 的时候,具体的操作流程如下
KVM与FusionCompute简介_第3张图片
1 、第一步也是由虚拟机发起 I/O 操作请求;
2 、第二步的时候和使用默认模型不一样,这个 I/O 操作请求不会经过 I/O 捕获程序, 而是直接以前后端的形式放到环形缓冲区,同时 KVM 模块通知后端驱动; 3 QEMU 到环形缓冲区获取到操作请求的具体信息;
4 、后端驱动直接调用真实的物理设备驱动进行具体的 I/O 操作;
5 、由真实的设备驱动完成此次操作;
6 、QEMU 将完成结果返回到环形缓冲区,并且由 KVM 模块通知前端驱动;
7 、前端驱动从环形缓冲区获取到此次 I/O 操作的结果;
8 、前端驱动将结果返回给具体发起该操作的应用程序。

三、FusionCompute 简介

1)华为FusionSphere虚拟化套件是业界领先的虚拟化解决方案,能够帮助客户带来如下的价值,从而大幅提升数据中心基础设施的效率。

  • 帮助客户提升数据中心基础设施的资源利用率
  • 帮助客户成倍缩短业务上线周期
  • 帮助客户成倍降低数据中心能耗
  • 利用虚拟化基础设施的高可用和强恢复能力,实现业务快速自动化故障恢复,降低数据中心成本和增加系统应用的正常运行时间
    2)FusionSphere虚拟化解决方案由服务器虚拟化产品(FusionCompute)、虚拟化管理软件(FusionManager)、备份软件(eBackup )和容灾软件(UltraVR)组成
    3)FusionCompute:是云操作系统软件,主要负责硬件资源的虚拟化,以及对虚拟资源、业务资源、用户资源的集中管理。它采用虚拟计算、虚拟存储、虚拟网络等技术,完成计算资源、存储资源、网络资源的虚拟化。同时通过统一的接口,对这些虚拟资源进行集中调度和管理,从而降低业务的运行成本,保证系统的安全性和可靠性,协助运营商和企业构筑安全、绿色、节能的云数据中心能力
    FusionCompute产品架构

KVM与FusionCompute简介_第4张图片

  • CNA英文全称: Compute Node Agent, CNA部署在需要虚拟化的服务器上。

  • VRM英文全称: Virtual Resource Management, VRM可以部署成VM或者部署在物理服务器上; VRM对外提供网页操作界面供管理维护人员。

FusionCompute 的架构和 KVM 非常相似,其中 VRM 相当于 KVM 中的管理工具,管理 员和用户可以通过图形化的 Portal 对 FusionCompute 进行管理和使用。它是基于 Linux 操作 系统的,所以我们登录 VRM 后,很多 Linux 的命令可以使用。CNA 相当于 KVM 中 QEMU+KVM 模块,主要提供了虚拟化功能,通常是以集群的方式部 署,将集群内的计算、存储和网络资源虚拟化成资源池供用户使用。同样,CNA 也是基于 Linux 操作系统的KVM与FusionCompute简介_第5张图片