KVM虚拟化技术计划介绍

1.背景介绍

KVM(Kernel-based Virtual Machine)

开源全虚拟化计划

  • 支持体系结构
    • x86(32位,64位)、IA64、PowerPC、S390
  • 依赖x86硬件支持:Intel VT-x/ AMD-V
  • 内核模块,使得linux内核成为hypervisor

XEN架构

  • domainU:普通用户虚拟机

  • domain0:特权虚拟机

    • 仅有

    • 具有设备驱动,能够直接知道硬件设备

    • 具有后端驱动,能够与很多普通虚拟机交互,完结IO虚拟化

    • 最先启动。

    • 能够办理其他domainU虚拟机

前期是半虚拟化,现在是全虚拟化。功能较差,可是安全性较好。

云计算运营—03 KVM虚拟化技术方案介绍

KVM架构

  • KVM:内核中的一个模块,布置在linux kernel中,使得linux kernel变为hypervisor。能够完结CPU虚拟化、内存虚拟化。无法完结IO虚拟化。运转内核态。
  • QEMU-KVM:完结IO虚拟化。运转在用户空间中,用户态。

长处:全虚拟化功能较好

QEMU:与KVM、XEN相同,也是属于虚拟化处理计划的一种,也便是说,它能够完结CPU虚拟化、内存虚拟化、IO虚拟化。轻量级,功能较差。单线程

KVM调用QEMU完结IO虚拟化,反过来,也能够认为是QEMU调用KVM,增强CPU、内存虚拟化的功能。

KVM运用的QEMU不相同的。多线程。QEMU-KVM

云计算运营—03 KVM虚拟化技术方案介绍

2.KVM简介

UVP虚拟化架构中KVM架构

FusionCompute,简称FC。有2部分组成:CNA+VRM。

  • CNA又由两部分组成:UVP+VNA。UVP完结底层硬件的虚拟化,VNA完结对接VRM。
  • VRM是集群级的一个办理平台(具体是以2台虚拟机主备方式布置在2个办理节点上)。

云计算运营—03 KVM虚拟化技术方案介绍

libvirtd

libvirtd:一致的接口。兼容不同的虚拟化计划,一致办理。

  • 南向能够接入不同虚拟化产品
  • 北向供给一致接口,经过不同东西(cli\图形化),办理虚拟机。
  • 经过xml文件,一致界说虚拟机。

云计算运营—03 KVM虚拟化技术方案介绍

CPU虚拟化

X86架构CPU具有四种等级的指令:

  • ring0特权指令,给操作系统运用

  • ring1\2给驱动程序运用

  • ring3非特权指令,给应用程序运用

操作系统对CPU的知道与办理达成以下两点知道:

  1. CPU资源永远安排妥当
  2. OS对CPU具有最高权限

云计算运营—03 KVM虚拟化技术方案介绍

引入虚拟化后呈现的问题:

  • 多个VM之间同享CPU资源
  • 部分指令只有hypervisor有权限运用
  1. 多个VM之间同享CPU资源的问题?———》 将VM的vCPU调度到CPU的线程上运转,完结物理CPU资源的分时复用

  2. 虚拟机指令越级的问题?———》 传统架构中,操作运用ring0,应用程序运用ring3。 在虚拟化架构傍边,VM可看作上面的应用程序,只能运用ring3。但里边实践上有OS,需求运用ring0。所以,指令越级。

    经典虚拟化:特权免除、堕入模仿。 当虚拟机操作系统需求运用ring0指令,免除特权,由host os的ring1模仿。

缺陷:在X86架构中,遇到问题:在非特权指令中,有19条灵敏指令。

处理计划

1、操作系统辅佐的全虚拟化

修正host OS,接纳VM全部指令进行处理。

长处:处理灵敏指令的问题。

缺陷:1、host OS压力较大,2、host 0S需求修正,难度较大。

云计算运营—03 KVM虚拟化技术方案介绍

2、半虚拟化

修正guest os,VM不宣布灵敏指令。

长处: host OS压力较小

缺陷:需求修正guest 0S,只有开源能够修正,不能运转闭源操作系统。

云计算运营—03 KVM虚拟化技术方案介绍

3、硬件辅佐的全虚拟化:

在CPU层面,引入根与非根,分别具有ring0-3,根给host os 运用,非根给Guest os

云计算运营—03 KVM虚拟化技术方案介绍

全虚、半虚 差异:虚拟机操作系统(Guest OS)是否修正。假如修正便是半虚,不修正便是全虚

KVM CPU虚拟化

  • 非根形式:客户机形式
  • 根形式ring0:内核态形式
  • 根形式ring3:用户态形式

云计算运营—03 KVM虚拟化技术方案介绍

vm entry:由内核态进入客户机形式

vm exit:由客户机形式进入内核态

以上两个切换,会有切换开支。自身VMM运转,也需求耗费功能。所以,虚拟化后的功能损耗,来自切换开支、VMM的功能耗费。

云计算运营—03 KVM虚拟化技术方案介绍

内存虚拟化

操作系统对内存的知道与办理达成以下两点知道:

  1. 内存都是从物理地址0开端的
  2. 内存都是接连的

引入虚拟化后呈现的问题:

  • 从物理地址0开端的:物理地址0只有一个,无法同时满足一切客户机从0开端的要求;
  • 地址接连:虽然能够分配接连的物理地址,可是内存运用效率不高,缺乏灵活性。

云计算运营—03 KVM虚拟化技术方案介绍

GVA: Guest virtual Address 客户机虚拟地址 客户机给应用程序分配地址,可能是实在内存,也可能是硬盘
GPA: Guest Physical Address 客户机物理地址 客户机认为实在内存
HVA: Host Virtual Address 宿主机虚拟地址 宿主机给应用程序(VM)分配地址,可能是实在内存,也可能是硬盘
HPA: Host Physical Address 宿主机物理地址 实践上便是服务器实在内存

HPA-》 HVA-》GPA-》GVA

HPA-》HVA 自身OS具有MMU,就能够完结

HVA-》GPA MMU虚拟化

GPA-》GVA VM自身OS也具有MMU,也能够完结

MMU虚拟化(MMU本质是是内存办理模块)

  • 软件 XEN 能够是半虚、全虚

    • 直接形式:半虚化,知道自己是处于虚拟化环境傍边,能够直接在hypervisor傍边完结HVA-》GVA的转化。(宿主机虚拟地址-》客户机虚拟地址)

    • 影子列表:全虚化,不知道自己运转在物理服务器或虚拟化环境中,能够在hypervisor傍边完结HVA-》GPA的转化。再由虚拟机自身完结GPA-》GVA的转化。(宿主机虚拟地址-》客户机物理地址-》客户机虚拟地址)

  • 硬件:由CPU直接完结HVA-》GPA的转化。

    • EPT: intel
    • NPT: amd

大页内存

MMU

会具有内存映射表,记载物理地址—》虚拟地址(包括实在内存、硬盘)

该表,一般存在于内存傍边

为了装备大页内存把MMU表存放在CPU寄存器上

装备主机大页内存,优化主机内存拜访效率,然后提升功能。大页虚拟机不支持核算资源调度,无法给出正确的调度策略,主张将大页虚拟机布置到独立集群,所在集群无需开启核算资源调度。

云计算运营—03 KVM虚拟化技术方案介绍

I/O虚拟化

软件与软件、硬件的通信:

需求CPU)——》数据拷进去写入在拷出来

  • Port IO 运用专门的IO空间,由CPU复制
  • MMIO 运用内存空间,由CPU复制

(服务器里边专门担任)——》数据拷进去写入在拷出来

  • DMA 由DMA操控器复制

云计算运营—03 KVM虚拟化技术方案介绍

I/0虚拟化需求处理两个问题

设备发现: 需求操控各虚拟机能够拜访的设备

拜访截获:

  1. 经过I/0端口或者MMIO对设备的拜访
  2. 设备经过DMA与内存进行数据交换

全模仿(完全由软件完结)

原理:

  1. VM中的APP进行IO,经过VM中驱动发送虚拟设备
  2. 虚拟设备往外发送
  3. KVM拦截
  4. KVM发送IO同享环,告诉QEMU,完结操作
  5. QEMU从IO同享环中取出
  6. 经过实在设备驱动,发送设备

长处:兼容很好

缺陷:IO途径长,需求上下文切换,开支大。功能差

云计算运营—03 KVM虚拟化技术方案介绍

virtio(干流)

原理:

  1. VM中的APP进行I0,经过前端驱动发送出去
  2. 发送IO同享环,告诉后端驱动,完结操作
  3. QEMU从IO同享环中取出
  4. 经过实在设备驱动,发送设备

长处:比较全模仿,途径较短,功能较好

缺陷:某些操作系统不支持,比如windows默认不支持,需求额定的驱动

云计算运营—03 KVM虚拟化技术方案介绍

vhost

比较virtio,途径更短,不需求经过qemu,直接由kernel的vhost模块处理。

缺陷:兼容性更差。

对比virtio

Virtio

HW=> Host Kernel

Host Kerne=>qemu

Qemu=>guest

Vhost

HW=> Host Kernel(内核)

Host Kernel=> Guest

云计算运营—03 KVM虚拟化技术方案介绍