KVM概述
1、KVM简介:
一、在开源的虚拟化技术中 KVM是全虚拟化,而Xen同时支持半虚拟化和全虚拟化。
二、KVM是Kernel-based Virtual Machine的简称(基于内核的虚拟机)是一种Ⅱ型全虚拟化
三、kVM 其就是Linux的一个内核模块该内核模块使得 Linux 变成了一个 Hypervisor(虚拟机监视器)
四、KVM自从 Linux 2.6.20 起就做为一模块被包含在yu Linux 内核中前端
当Linux系统安装了KVM模块后会增长三种运行模式后端
2、KVM工做原理:
在KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;虚机的每一个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 可以使用 Linux 内核的已有功能。可是,KVM 自己不执行任何硬件模拟,须要客户空间程序经过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是 QEMU安全
KVM虚拟化 = KVM内核模块 + /dev/kvm + QEMU服务器
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 是一个软件实现 I/O 虚拟化的模拟工具,性能较差,有时候一些应用对网卡速率有要求时,就不能再使用 QEMU 了,咱们须要引入一个新的技术,它 就是 Virtio,是用了 Virtio
一、 虚拟机中的磁盘设备发起一次 IO 操做请求;
二、 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 捕获程序将操做结果返回给虚拟机;
十、 虚拟机的将结果返回给发起操做的应用程序。ide
使用 Virtio 的时候,具体的操做流程以下
1 、第一步也是由虚拟机发起 I/O 操做请求;
2 、第二步的时候和使用默认模型不同,这个 I/O 操做请求不会通过 I/O 捕获程序, 而是直接之前后端的形式放到环形缓冲区,同时 KVM 模块通知后端驱动; 3 QEMU 到环形缓冲区获取到操做请求的具体信息;
4 、后端驱动直接调用真实的物理设备驱动进行具体的 I/O 操做;
5 、由真实的设备驱动完成这次操做;
6 、QEMU 将完成结果返回到环形缓冲区,而且由 KVM 模块通知前端驱动;
7 、前端驱动从环形缓冲区获取到这次 I/O 操做的结果;
8 、前端驱动将结果返回给具体发起该操做的应用程序。工具
3、FusionCompute 简介性能
1)华为FusionSphere虚拟化套件是业界领先的虚拟化解决方案,可以帮助客户带来以下的价值,从而大幅提高数据中心基础设施的效率。操作系统
CNA英文全称: Compute Node Agent, CNA部署在须要虚拟化的服务器上。
FusionCompute 的架构和 KVM 很是类似,其中 VRM 至关于 KVM 中的管理工具,管理 员和用户能够经过图形化的 Portal 对 FusionCompute 进行管理和使用。它是基于 Linux 操做 系统的,因此咱们登陆 VRM 后,不少 Linux 的命令可使用。CNA 至关于 KVM 中 QEMU+KVM 模块,主要提供了虚拟化功能,一般是以集群的方式部 署,将集群内的计算、存储和网络资源虚拟化成资源池供用户使用。一样,CNA 也是基于 Linux 操做系统的