澳门1495娱乐KVM计算虚拟化原理,偏基础。KVM计算虚拟化原理,偏基础。

Technorati 标签:
云计算,虚拟化

Technorati 标签:
云计算,虚拟化

本文基于网上的素材整理而变成。

本文基于网上的材料整理而改为。

第一章 服务器虚拟化概述

第一章 服务器虚拟化概述

1.1 为什么用服务器虚拟化

若物理机上单布置一栽业务,资源利用率太没有,不便利节省本钱。如果说生区域需要采用物理机来保证安居,对于开发测试区使用虚拟机不但可以节省有限的物理机资源,还得迅猛直达丝。

1.1 为什么要服务器虚拟化

一经物理机上只布置一种植工作,资源利用率太没有,不便宜节成本。如果说生区域要动用物理机来保证平稳,对于开发测试区使用虚拟机不但可节约有限的物理机资源,还足以飞直达丝。

1.2 虚拟化发展历史

  • 提出概念:1959年6月提出,在列国信息处理大会上刊载之《大型高速计算机被的时共享》论文被提出
  • 开发技术:20世纪60年份开始,IBM操作系统虚拟化技术以在了大型机和小型机上
  • 蓬勃发展:20世纪90年代,VMware公司第一实现了X86绑架构上的虚拟化,于1999年推出了x86平台及的第一款虚拟化商业软件VMware
    workstation。
  • 群雄逐鹿:更多的厂商投入了虚拟化技术之大军

第二章 服务器虚拟化

服务器虚拟化主要发生个别种植方法:

  • 硬件虚拟化:通过Hypervisor层虚拟出硬件系统环境,将硬件系统CPU发出的命经过处理后传至大体CPU上。

硬件虚拟化的关键在于Hypervisor层。

所谓Hypervisor层就是当物理服务器和操作系统中运行的软件层,可以本着拟硬件系统,将次第对这硬件系统CPU发送的命经过处理下,加以虚拟传到物理CPU上。同时它可以协调访问服务器上的物理设备和虚拟机,也深受虚拟机监视器(VMM
)。

  • 容器:只是虚拟化出下运行时之条件,是比轻量的虚拟化,层次较浅。

1.2 虚拟化发展历史

  • 提出概念:1959年6月提出,在列国信息处理大会上刊出之《大型高速计算机中之日子共享》论文被提出
  • 开发技术:20世纪60年间开始,IBM操作系统虚拟化技术下在了大型机和袖珍机上
  • 蓬勃发展:20世纪90年间,VMware公司先是落实了X86劫持构上的虚拟化,于1999年生产了x86平台达成之首先慢慢悠悠虚拟化商业软件VMware
    workstation。
  • 群雄逐鹿:更多之厂商在了虚拟化技术的武力

第二章 服务器虚拟化

服务器虚拟化主要有些许栽艺术:

  • 硬件虚拟化:通过Hypervisor层虚拟出硬件系统环境,将硬件系统CPU发出之命令经过处理后传至大体CPU上。

硬件虚拟化的关键在于Hypervisor层。

所谓Hypervisor层就是当物理服务器和操作系统中运行的软件层,可以针对模拟硬件系统,将次第对是硬件系统CPU发送的指令经过处理下,加以虚拟传到物理CPU上。同时它可以协调访问服务器上的物理设备与虚拟机,也深受虚拟机监视器(VMM
)。

  • 容器:只是虚拟化出下运行时的环境,是比轻量的虚拟化,层次较浅。

2.1 服务器虚拟化架构

  • 裸金属架构:Hypervisor层直接运行于硬件系统上。典型事例是KVM。KVM其实就是是Linux内核提供的虚拟化架构,可拿本直接当Hypervisor,KVM一般需处理器本身支持虚拟化扩展技术,如Intel
    VT等。KVM使用内核模块kvm.ko来兑现基本虚拟化功能,但是就提供了CPU和内存的虚拟化,必须做QEMU才能够结完整的虚拟化技术。

澳门1495娱乐 1

  • 宿主架构:典型的即是QEMU,它好经二进制转换来法CPU,使Guest
    OS认为好还跟硬件打交道。
    澳门1495娱乐 2

2.1 服务器虚拟化架构

  • 裸金属架构:Hypervisor层直接运行于硬件系统上。典型事例是KVM。KVM其实就是是Linux内核供的虚拟化架构,可拿基本直接当Hypervisor,KVM一般用处理器本身支持虚拟化扩展技术,如Intel
    VT等。KVM使用内核模块kvm.ko来促成核心虚拟化功能,但是只提供了CPU和内存的虚拟化,必须做QEMU才会结合完整的虚拟化技术。

澳门1495娱乐 3

  • 宿主架构:典型的哪怕是QEMU,它好通过二进制转换来模拟CPU,使Guest
    OS认为好再和硬件打交道。
    澳门1495娱乐 4

2.2 CPU虚拟化

过程的尽有星星点点种状态

  • 外核态:主要用以硬件访问,修改主要参数,
  • 因此户态:用户运行应用程序。

点滴种植状态的权柄不同,对硬件的访必须在内核态,可以保证系统的可靠性,只给使用人员开放用户态,不会见对OS的周转带来格外的震慑。避免系统于人为攻击。

OS内核数据以及代码区应该跟用户区完全割裂,也就是说程序可以望底地址都是故户态地址,当程序执行系统调用的当儿,进程会切入内核态进行基础访问,这时页表也得切换到内核态的页表,带来的题目是性于差。因为页表在内存中,切换会带来性能的低落。

之所以时主流的OS的做法是将本代码和数据区放到用户进程虚拟地址控制器的高位区,32bit系统放到3~4G,windows默认占用2~4G区,64bit系统也位于高位。这样带来的利是,进程空间的内核区也深受射到大体内存区,进程的切换不会见招致TLB中前缓存的对内核区页表失效,保证了性。

实则进程是无法访问内核区,因为强行访问的说话,页表条目有权限位(进程时权限保存在寄存器的CPL字段,为Ring3,而本页表的权力为Ring0,所以CPU会禁止访问。)

总一下哪怕是x86 架构提供四独特权级别为操作系统及应用程序来拜访硬件。
Ring 是指 CPU 的运转级别,Ring 0是最高级别,Ring1蹩脚的,Ring2再浅的……

  • 本需要直接访问硬件和内存,因此她的代码用周转于高高的运行级别
    Ring0上,这样它们可以采用特权指令以控制中断、修改页表、访问设备等等。
  • 应用程序的代码运行在低运行级别达到Ring3及,如何使拜磁盘,那就是用实施系统调用,此时CPU的运作级别会生出起ring3到ring0的切换,并超越反到系统调用对应之基业代码位置执行,这样基本就也而成功了设施看,完成以后重新起ring0返回ring3。以此进程也如打算户态和内核态的切换。

澳门1495娱乐 5

对此非虚拟化操作系统而言,应用程序和系统发出的寻常指令都运作于用户级别指令中,只有特权指令运行在中心级别中,这样操作系统及应用解耦合。

那,虚拟化在此地虽碰到了一个难题,因为物理机OS是干活在 Ring0
的,虚拟机的操作系统就是不克啊于 Ring0
了,所以有的特权指令是从来不实行权的

CPU虚拟化的主意就是

  • 特权解除:让Guest
    OS运行于用户级别,让hypervisor运行在核心级别,这样就是免去了Guest
    OS的特权级别。
  • 陷入模拟:运作在Guest
    OS的平凡指令像过去同等运行,当运行到特权指令时,会时有发生很并被hypervisor捕获。
    澳门1495娱乐 6

这就是说难在:

  • 何以模拟x86保护模式
  • 哪堵住并施行虚拟机的Ring0指令。
    解决智如下

2.2 CPU虚拟化

过程的执行有半点种状态

  • 外核态:主要用以硬件访问,修改主要参数,
  • 故户态:用户运行应用程序。

区区种植状态的权杖不同,对硬件的走访必须在内核态,可以保证系统的可靠性,只给使用人员开放用户态,不会见对OS的周转带来格外的震慑。避免系统为人工攻击。

OS内核数据以及代码区应该跟用户区完全割裂,也就是说程序可以见见底地址都是故户态地址,当程序执行系统调用的时节,进程会切入内核态进行基本访问,这儿页表也欲切换到内核态的页表,带来的题目是性质比不同。因为页表在内存中,切换会带来性能的下挫。

故此时主流的OS的做法是以根本代码和数据区放到用户进程虚拟地址控制器的高位区,32bit系统放到3~4G,windows默认占用2~4G区,64bit系统也坐落高位。这样拉动的补是,进程空间的内核区也受射到大体内存区,进程的切换不见面造成TLB中前缓存的针对内核区页表失效,保证了性能。

实际进程是无法访问内核区,因为强行访问的话语,页表条目有权限位(进程时权限保存在寄存器的CPL字段,为Ring3,而基本页表的权力为Ring0,所以CPU会禁止访问。)

总一下即是x86 架构提供四只特权级别为操作系统及应用程序来做客硬件。
Ring 是指 CPU 的周转级别,Ring 0是最高级别,Ring1次于的,Ring2再糟糕的……

  • 本需要一直看硬件和内存,因此它的代码用周转于最高运行级别
    Ring0上,这样它可以动用特权指令以控制中断、修改页表、访问设备等等。
  • 应用程序的代码运行在低于运行级别达到Ring3及,如何使拜磁盘,那就是用实施系统调用,此时CPU的周转级别会生起ring3及ring0的切换,并超越反至网调用对应之木本代码位置执行,这样基本就为而成功了设备看,完成以后又由ring0返回ring3。此历程吧称打算户态和内核态的切换。

澳门1495娱乐 7

对此非虚拟化操作系统而言,应用程序和系统发出的便指令都运行在用户级别指令中,只有特权指令运行在主导级别中,这样操作系统和下解耦合。

那,虚拟化在这边就碰到了一个难题,因为物理机OS是工作于 Ring0
的,虚拟机的操作系统就是非可知为当 Ring0
了,所以有的特权指令是从来不执行权的

CPU虚拟化的道就是是

  • 特权解除:让Guest
    OS运行于用户级别,让hypervisor运行在着力级别,这样就是免去了Guest
    OS的特权级别。
  • 沦为模拟:运作在Guest
    OS的便指令像过去同运行,当运行至特权指令时,会生很并为hypervisor捕获。
    澳门1495娱乐 8

那么困难在于:

  • 怎么模拟x86保护模式
  • 怎么样阻止并实行虚拟机的Ring0指令。
    缓解智如下
2.2.1 CPU虚拟化技术解决措施
  • 全虚拟化:客户操作系统运行于 Ring
    1,它在实施特权指令时,会硌异常,然后
    hypervisor捕获这个那个,在老大里面做翻译,最后回到到客户操作系统内,客户操作系统认为好的特权指令工作正常,继续运行。所以啊受二进制翻译技术(Binary
    Translate)。
    唯独这个特性损耗大的大,简单的同漫漫指令现在可要经过复杂的酷处理过程
    澳门1495娱乐 9

    • 可取:不用修改GuestOS内核可以直接动用
    • 缺陷:在VMM捕获特权指令与翻译过程会招致性的大跌。
      澳门1495娱乐 10
      从上图可以见见,当虚拟机中之以要运行在内核态的时候,会经过Hypervisor层的仿,通过二进制翻译技术,将指令替换为另外的命令。
  • 半虚拟化:修改操作系统内核,替换掉不克虚拟化的通令,通过超级调用(hypercall)直接跟底部的虚拟化层hypervisor来报道,
    对立于意虚拟化性能更强,因为省去了翻译的过程。但是要对Guest
    OS进行改动,应用场景不多。
    澳门1495娱乐 11
  • 硬件辅助虚拟化: 2005年后,CPU厂商Intel 和 AMD 开始支持虚拟化了。
    Intel 引入了 Intel-VT (Virtualization Technology)技术
    重中之重的实现方式是增多了一个VMX
    non-root操作模式,运行VM时,客户机OS运行在non-root模式,依然有Ring0~ring3等级别
    当运行特权指令时或者来中断的早晚,通过VM_EXIT就可切换到root模式,拦截VM对虚拟硬件的访问。执行完毕,通过VM_ENTRY回到non-root即可。
    澳门1495娱乐 12
    这种技能主要代表吧intel VT-X,AMD的AMD-V
    澳门1495娱乐 13

全虚拟化

半虚拟化

硬件辅助虚拟化

实现技术

BT和直接执行

Hypercall

客户操作系统修改/兼容性

无需修改客户操作系统,最佳兼容性

客户操作系统需要修改来支持hypercall,因此它不能运行在物理硬件本身或其他的hypervisor上,兼容性差,不支持Windows

性能

好。半虚拟化下CPU性能开销几乎为0,虚机的性能接近于物理机。

应用厂商

VMware Workstation/QEMU/Virtual PC

Xen

KVM 是基于CPU
帮的全虚拟化方案,它需要CPU虚拟化特性的支持。
总结:
澳门1495娱乐 14

2.2.1 CPU虚拟化技术解决办法
  • 全虚拟化:客户操作系统运行于 Ring
    1,它于推行特权指令时,会接触异常,然后
    hypervisor捕获这个充分,在很里面做翻译,最后回来到客户操作系统内,客户操作系统认为自己之特权指令工作正常化,继续运行。所以呢给二进制翻译技术(Binary
    Translate)。
    而是特性损耗大之可怜,简单的如出一辙漫长指令现在倒是使由此复杂的很处理过程
    澳门1495娱乐 15

    • 长:不用修改GuestOS内核可以一直行使
    • 短:在VMM捕获特权指令和翻译过程会造成性的狂跌。
      澳门1495娱乐 16
      从今上图可以望,当虚拟机中的行使要运行在内核态的早晚,会透过Hypervisor层的模拟,通过二进制翻译技术,将下令替换为其他的吩咐。
  • 半虚拟化:修改操作系统内核,替换掉不能够虚拟化的下令,通过顶尖调用(hypercall)直接与脚的虚拟化层hypervisor来报道,
    对立于完全虚拟化性能再胜,因为省去了翻的历程。但是急需针对Guest
    OS进行修改,应用场景不多。
    澳门1495娱乐 17
  • 硬件辅助虚拟化: 2005年晚,CPU厂商Intel 和 AMD 开始支持虚拟化了。
    Intel 引入了 Intel-VT (Virtualization Technology)技术
    要害的兑现方式是多了一个VMX
    non-root操作模式,运行VM时,客户机OS运行于non-root模式,依然有Ring0~ring3等级别
    当运行特权指令时或者有搁浅的上,通过VM_EXIT就好切换至root模式,拦截VM对虚拟硬件的看。执行完毕,通过VM_ENTRY回到non-root即可。
    澳门1495娱乐 18
    这种技能主要代表吧intel VT-X,AMD的AMD-V
    澳门1495娱乐 19

全虚拟化

半虚拟化

硬件辅助虚拟化

实现技术

BT和直接执行

Hypercall

客户操作系统修改/兼容性

无需修改客户操作系统,最佳兼容性

客户操作系统需要修改来支持hypercall,因此它不能运行在物理硬件本身或其他的hypervisor上,兼容性差,不支持Windows

性能

好。半虚拟化下CPU性能开销几乎为0,虚机的性能接近于物理机。

应用厂商

VMware Workstation/QEMU/Virtual PC

Xen

KVM 是基于CPU
帮的全虚拟化方案,它要CPU虚拟化特性的支撑。
总结:
澳门1495娱乐 20

2.3 内存虚拟化原理

内存虚拟化指的是共享物理系统内存,动态分配给虚拟机。虚拟机的内存虚拟化很象虚拟内存方式

虚拟内存是计算机体系内存管理之等同栽技术,目的是被应用程序认为她具有连续的可用的内存(一个连连完整的地方空间)。其实就算是操作系统将内存资源的虚拟化,屏蔽了内存调用的底细,对应用程序而言,不需关爱内存访问的细节,可以拿内存当作线性的内存池。

x86 CPU 都连了一个名为内存管理的模块MMU(Memory Management Unit)和
TLB(Translation Lookaside Buffer),通过MMU和TLB来优化虚拟内存的性质。

OS将内存以4KB为单位进行分页,形成虚拟地址和物理地址之映射表。若是OS在物理机上运行,只要OS提供这页表,MMU会于访存时自动开虚拟地址(Virtual
address, VA)到大体地址(Physical address, PA)的转速。

但一旦虚拟机上运行OS,Guest
OS经过地方转化到的“物理地址”实际上是QEMU的逻辑地址,因此还需采用软件以该转会为实物理内存地址

对OS运行于物理机上的情事

澳门1495娱乐 21

假使经过看内存的时光,发现映射表中还并未物理内存进行相应。如下图

澳门1495娱乐 22

此时MMU向CPU发出缺页中断,操作系统会因页表中的外存地址,在外存中找到所缺少的同等页,将那调入内存。同时创新页表的投关系。产一致不好访问的时刻可直接命中物理内存。

澳门1495娱乐 23

对OS在虚拟机中的景况,过程将复杂很多。

对虚拟机内之过程的变换,需要进行两次变。也就是说首先用应用的逻辑地址转换为虚拟机的物理地址,而这实际是QEMU进程的逻辑地址,所以要是投到骨子里内存的情理地址还需要开相同糟糕变。

澳门1495娱乐 24

  • VA:应用的虚拟地址
  • PA:虚拟机物理地址,也是QEMU进程的逻辑地址
  • MA:物理机的大体地址

看得出,KVM
为了在同一华机械上运行多只虚拟机,需要多一个新的外存虚拟化层,也就是说,必须虚拟
MMU 来支持客户OS,实现 VA -> PA -> MA 的翻译。

客户操作系统继续控制虚拟地址到客户内存物理地址之映射 (VA ->
PA),但是客户操作系统不能够一直看实际机器内存,因此VMM
需要担映射客户物理内存到实际机器内存 (PA -> MA)。

澳门1495娱乐 25

VMM 内存虚拟化的落实方式:

  • 软件方式:通过软件实现内存地址的翻,比如 Shadow page table
    (影子页表)技术
  • 硬件实现:基于 CPU 的辅助虚拟化功能,比如 AMD 的 NPT 和 Intel 的 EPT
    技术

2.3 内存虚拟化原理

外存虚拟化指的凡共享物理系统内存,动态分配给虚拟机。虚拟机的内存虚拟化很象虚拟内存方式

虚拟内存是电脑体系内存管理的同等种植技术,目的是让应用程序认为它具备连续的可用之内存(一个总是完整的地址空间)。其实就是操作系统将内存资源的虚拟化,屏蔽了外存调用底细节,对应用程序而言,不待关注内存访问的底细,可以将内存当作线性的外存池。

x86 CPU 都连了一个名叫内存管理的模块MMU(Memory Management Unit)和
TLB(Translation Lookaside Buffer),通过MMU和TLB来优化虚拟内存的性能。

OS将内存以4KB为单位展开分页,形成虚拟地址和情理地址之映射表。假使OS在物理机上运行,只要OS提供者页表,MMU会在访问存时自动开虚拟地址(Virtual
address, VA)到大体地址(Physical address, PA)的转账。

但只要虚拟机上运行OS,Guest
OS经过地方转化及之“物理地址”实际上是QEMU的逻辑地址,因此还得动用软件将那转会为真实物理内存地址

对此OS运行在大体机上的情

澳门1495娱乐 26

假定经过看内存的时候,发现映射表中尚没有物理内存进行相应。如下图

澳门1495娱乐 27

此刻MMU向CPU发出缺页中断,操作系统会因页表中的外存地址,在外存中找到所缺的平等页,将那个调入内存。同时创新页表的映射关系。下一样不善访问的上可直接命中物理内存。

澳门1495娱乐 28

对此OS在虚拟机中的场面,过程将复杂很多。

对此虚拟机内的长河的转换,需要开展两次转移。也就是说首先以采取的逻辑地址转换为虚拟机的大体地址,而立实际是QEMU进程的逻辑地址,所以只要投到实在内存的物理地址还欲做同样次等变。

澳门1495娱乐 29

  • VA:应用的虚拟地址
  • PA:虚拟机物理地址,也是QEMU进程的逻辑地址
  • MA:物理机的物理地址

足见,KVM
为了当平等华机械上运行多个虚拟机,需要充实一个新的外存虚拟化层,也就是说,必须虚拟
MMU 来支持客户OS,实现 VA -> PA -> MA 的翻译。

客户操作系统继续控制虚拟地址到客户内存物理地址之映射 (VA ->
PA),但是客户操作系统不克一直看实际机器内存,因此VMM
需要担映射客户物理内存到实际机器内存 (PA -> MA)。

澳门1495娱乐 30

VMM 内存虚拟化的兑现方式:

  • 软件方式:通过软件实现内存地址的翻,比如 Shadow page table
    (影子页表)技术
  • 硬件实现:基于 CPU 的鼎力相助虚拟化功能,比如 AMD 的 NPT 和 Intel 的 EPT
    技术
2.3.1 软件方式

黑影页表(SPT,shadow page
table):Hypervisor为虚拟机保障了一个虚拟机的虚拟地址交宿主机物理地址照的之页表。也就是说,在本的一定量叠地址层次基础及加了同重合地下物理地址层次,通过这张表可以以客户机虚拟地址宿主机物理地址期间进行映射。

客户OS创建之后,Hypervisor创建其针对性许影子页表。刚起影子页表是空的,此时外客户OS的访存操作都见面发出缺页中断,然后Hypervisor捕获缺页异常

澳门1495娱乐 31

通过简单次等地址映射转换获得虚拟机虚拟地址物理机物理地址的映射关系,写副影子页表,逐步做到具有虚拟地址到宿主机机器地址之投。
澳门1495娱乐 32

代价是用保障虚拟机的页表和宿主机的阴影页表的合。

2.3.1 软件方式

影子页表(SPT,shadow page
table):Hypervisor为虚拟机维护了一个虚拟机的虚拟地址至宿主机大体地址炫耀的底页表。也就是说,在本来的鲜交汇地址层次基础及加以了一如既往叠地下物理地址层次,通过就张表可以将客户机虚拟地址宿主机物理地址里面开展映射。

客户OS创建之后,Hypervisor创建其针对性诺影子页表。刚开影子页表是拖欠的,此时另客户OS的访存操作都见面产生缺页中断,然后Hypervisor捕获缺页异常

澳门1495娱乐 33

透过个别次地址映射转换获得虚拟机虚拟地址物理机物理地址的炫耀关系,写副阴影页表,逐步做到所有虚拟地址到宿主机机器地址的映射。
澳门1495娱乐 34

代价是需要保持虚拟机的页表和宿主机的阴影页表的同步。

2.3.2 通过INTEL EPT技术来贯彻

KVM 中,虚机的大体内存纵使为 qemu-kvm 进程所占的内存空间。KVM 使用
CPU 辅助的内存虚拟化方式。在 Intel 和 AMD
平台,其内存虚拟化的落实方式分别吗:

  • AMD 平台达成的 NPT (Nested Page Tables) 技术
  • Intel 平台及之 EPT (Extended Page Tables)技术
    EPT 和 NPT采用类似的规律,都是作 CPU
    中新的一模一样重叠,通过硬件因而来拿客户机的大体地址翻译为主机的情理地址。也就是说Guest
    OS完成虚拟机虚拟地址–>虚拟机物理地址第一层转化,硬件同时形成虚拟机物理地址及物理机物理地址这第二重叠转化。第二叠转换对Guest
    OS来说是晶莹剔透底,Guest
    OS访问内存时和当物理机运行时是同一的。这种办法而称为内存辅助虚拟化。

故内存辅助虚拟化就是一直用硬件来兑现虚拟机的物理地址及宿主机的大体地址之一步到位映射。VMM不用再行保留一客
SPT (Shadow Page
Table),通过EPT技术,不再用一块两只页表,虚拟机内部的切换为未待qemu进程切换,所欲之是才是个别糟页表查找,而且是由此硬件来完成的,性能损耗低。

流程如下:

  • VM中的行使发现页没分片,MMU发起中断,从虚拟机的情理地址(QEMU的逻辑地址)中分配一页,然后更新页表。
    澳门1495娱乐 35
  • 这虚拟机页的大体地址还并未针对许物理内存的地址,所以触发了qemu进程在宿主机的page
    fault。宿主机内核分配内存页,并创新页表。
    澳门1495娱乐 36
  • 下次作客就可以借助EPT来进展,只待查阅两不成表明即可。

澳门1495娱乐 37

总结:
澳门1495娱乐 38

2.3.2 通过INTEL EPT技术来实现

KVM 中,虚机的物理内存纵使为 qemu-kvm 进程所占有的内存空间。KVM 使用
CPU 辅助的内存虚拟化方式。在 Intel 和 AMD
平台,其内存虚拟化的兑现方式分别吗:

  • AMD 平台上之 NPT (Nested Page Tables) 技术
  • Intel 平台达成之 EPT (Extended Page Tables)技术
    EPT 和 NPT采用类似之原理,都是作 CPU
    中初的等同交汇,通过硬件因此来用客户机的大体地址翻译啊主机的情理地址。也就是说Guest
    OS完成虚拟机虚拟地址–>虚拟机物理地址第一叠转化,硬件同时到位虚拟机物理地址及物理机物理地址这第二重合转化。第二交汇转换对Guest
    OS来说是透明的,Guest
    OS访问内存时和于物理机运行时是一致的。这种措施以称为内存辅助虚拟化。

所以内存辅助虚拟化就是直用硬件来实现虚拟机的情理地址及宿主机的物理地址之一步到位映射。VMM不用再行保留一卖
SPT (Shadow Page
Table),通过EPT技术,不再需要共同两只页表,虚拟机内部的切换为无欲qemu进程切换,所用之是只是少潮页表查找,而且是经硬件来就的,性能损耗低。

流程如下:

  • VM中之动发现页没分片,MMU发起中断,从虚拟机的大体地址(QEMU的逻辑地址)中分红一页,然后更新页表。
    澳门1495娱乐 39
  • 这虚拟机页的情理地址还并未针对诺物理内存的地址,所以触发了qemu进程在宿主机的page
    fault。宿主机内核分配内存页,并创新页表。
    澳门1495娱乐 40
  • 下次访问就得借助EPT来展开,只待查阅两赖表明即可。

澳门1495娱乐 41

总结:
澳门1495娱乐 42

2.4 KVM其他内存管理技术

2.4 KVM其他内存管理技术

2.4.1 KSM (Kernel SamePage Merging 或者 Kernel Shared Memory)

KSM 是内核中之看护进程(称为
ksmd),它见面定期开展页面扫描,将副本页面进行合并,然后放多余的页面。KVM使用KSM来压缩多独一般之虚拟机的内存占用,提高内存的使频率,在虚拟机使用同样镜像和操作系统时,效果更不言而喻。但是会多基础开发,所以为了提升效率,可以以之特性关闭。

2.4.1 KSM (Kernel SamePage Merging 或者 Kernel Shared Memory)

KSM 是本中之看护进程(称为
ksmd),它见面定期进行页面扫描,将副本页面进行联,然后释放多余的页面。KVM使用KSM来压缩多只一般的虚拟机的内存占用,提高内存的动效率,在虚拟机使用同样镜像和操作系统时,效果更为旗帜鲜明。但是会大增基础开发,所以为了提升效率,可以将这特性关闭。

2.4.2 KVM Huge Page Backed Memory (巨页内存技术)

Intel 的 x86 CPU 通常采用4Kb内存页,当是经安排,也能使用巨页(huge
page): (4MB on x86_32, 2MB on x86_64 and x86_32
PAE)使用巨页,KVM的虚拟机的页表将用重复少之内存,并且以增进CPU的频率。最高情况下,可以增长20%之频率!

2.4.2 KVM Huge Page Backed Memory (巨页内存技术)

Intel 的 x86 CPU 通常以4Kb内存页,当是由此安排,也能使巨页(huge
page): (4MB on x86_32, 2MB on x86_64 and x86_32
PAE)使用巨页,KVM的虚拟机的页表将运还不见之内存,并且将增长CPU的频率。最高情况下,可以加强20%之效率!

2.5 IO虚拟化

  • 宪章(完全虚拟):使用 QEMU 纯软件的主意来拟 I/O
    设备。使用一个Service VM来模拟实硬件,性能非常不同。
    客户机的设施驱动程序发起 I/O
    请求操作请求,KVM会捕获此IO请求,然后坐IO共享页,同时用户空间的QEMU进程,QEMU模拟出此次IO操作,同样置于共享页中连同时KVM进行结果的取回。

只顾:当客户机通过DMA (Direct Memory Access)访问大块I/O时,QEMU
模拟程序将非会见将结果放上一道享页中,而是通过外存映射的章程以结果直接写到客户机的内存中,然后通知KVM模块告诉客户机DMA操作就成功。

澳门1495娱乐 43

  • 半虚拟化: KVM/QEMU就采取这种模式,它以 Guest OS 内核中安装前端驱动
    (Front-end driver)和在 QEMU
    中贯彻后端驱动(Back-end)的办法。前后端驱动通过 vring
    (实现虚拟队列的环形缓冲区)直接通信,这便绕了了经过 KVM
    内核模块的过程,提高了IO性能,相对于完全虚拟的模式,
    省错过矣纯模仿模式下的杀捕获环节,Guest OS 可以同 QEMU 的 I/O
    模块直接通信。

澳门1495娱乐 44

  • IO-through:直接把机物理设备分配为虚拟机,不过要硬件具备IO透传技术;,Intel
    定义的 I/O 虚拟化技术化 VT-d,AMD 的号称 AMD-V。
    KVM 支持客户机以占方式访这个宿主机的 PCI/PCI-E
    设备。通过硬件支撑之 VT-d
    技术将装备分给客户机后,在客户机看来,设备是情理及连年在PCI或者PCI-E总线上的
    差一点拥有的 PCI 和 PCI-E
    设备还支持直接分配,除了显卡以外(显卡的特殊性在此处)。PCI
    Pass-through 需要硬件平台 Intel VT-d 或者 AMD IOMMU
    的支撑。这些特征必须在 BIOS 中给启用
    澳门1495娱乐 45

    • 补:减少了 VM-Exit 陷入到 Hypervisor
      的长河,极大地提高了性,可以高达几乎跟原生系统一样的性质。而且VT-d
      克服了 virtio 兼容性不好以及 CPU 使用频率比较高的题材。
    • 相差:独占设备的话,无法兑现设备的共享,成本增长。
    • 相差之解决方案:(1)在平台物理宿主机上,仅少数 I/O
      如网性要求于高的客户机使用
      VT-d直接分配设备,其他的运用纯模仿或 virtio
      已达多独客户机共享同一个装置的目的
      (2)对于网络I/O的解决办法,可以选取 SR-IOV
      是一个网卡产生多只单身的杜撰网卡,将每个虚拟网卡分配个一个客户机使用。

总结
澳门1495娱乐 46

2.5 IO虚拟化

  • 法(完全虚拟):使用 QEMU 纯软件之艺术来套 I/O
    设备。使用一个Service VM来模拟实硬件,性能大不同。
    客户机的装置驱动程序发起 I/O
    请求操作请求,KVM会捕获此IO请求,然后放到IO共享页,同时用户空间的QEMU进程,QEMU模拟出此次IO操作,同样置于共享页中并以KVM进行结果的取回。

注意:当客户机通过DMA (Direct Memory Access)访问大块I/O时,QEMU
模拟程序将无见面拿结果放上同享页中,而是通过内存映射的艺术拿结果一直写及客户机的内存中,然后通知KVM模块告诉客户机DMA操作都就。

澳门1495娱乐 47

  • 半虚拟化: KVM/QEMU就以这种模式,它在 Guest OS 内核中安装前端驱动
    (Front-end driver)和于 QEMU
    中贯彻后端驱动(Back-end)的方。前后端驱动通过 vring
    (实现虚拟队列的环形缓冲区)直接通信,这就算绕了了经过 KVM
    内核模块的进程,提高了IO性能,相对于意虚拟的模式,
    省错过了纯粹模仿模式下的不得了捕获环节,Guest OS 可以同 QEMU 的 I/O
    模块直接通信。

澳门1495娱乐 48

  • IO-through:直接拿机物理设备分配为虚拟机,不过需要硬件具备IO透传技术;,Intel
    定义的 I/O 虚拟化技术化 VT-d,AMD 的号称 AMD-V。
    KVM 支持客户机以占方式访是宿主机的 PCI/PCI-E
    设备。通过硬件支撑之 VT-d
    技术将配备分吃客户机后,在客户机看来,设备是大体及接连在PCI或者PCI-E总线上的
    几所有的 PCI 和 PCI-E
    设备都支持直接分配,除了显卡以外(显卡的特殊性在此)。PCI
    Pass-through 需要硬件平台 Intel VT-d 或者 AMD IOMMU
    的支持。这些特点必须于 BIOS 中于启用
    澳门1495娱乐 49

    • 补:减少了 VM-Exit 陷入到 Hypervisor
      的历程,极大地提高了性,可以直达几乎和原生系统一样的性质。而且VT-d
      克服了 virtio 兼容性不好与 CPU 使用频率比较高之题材。
    • 不足:独占设备的话,无法落实设备的共享,成本增长。
    • 相差之解决方案:(1)在同等华物理宿主机及,仅少数 I/O
      如网性要求较高之客户机使用
      VT-d直接分配设备,其他的使用纯模仿或 virtio
      已达成多只客户机共享同一个设备的目的
      (2)对于网络I/O的解决办法,可以选取 SR-IOV
      是一个网卡产生多只单身的杜撰网卡,将每个虚拟网卡分配个一个客户机使用。

总结
澳门1495娱乐 50

2.6 网卡虚拟化

VM发出的流量一般有三三两两栽

  • 到物理机外部的装备,
  • 至地头物理服务器上的虚拟机。

之所以我们要保证不同虚拟机流量的相互隔离,同时还要要考虑情理设备内虚拟机的互联互通。

解决方法:
于针对物理机外部的流量,给每个VM分配一个专用通道,共享物理网卡资源。
着重出如下几栽模式:

  • Bridge桥过渡模式:把物理主机上的网卡当交换机,然后虚拟生一个Bridge来接收发朝物理机的担保。
    澳门1495娱乐 51
  • isolation mode:仅guest OS之间通信;不与表面网络与宿主机通信。
    澳门1495娱乐 52
  • routed mode:与外部主机通信,通过静态路由使得各Guest OS
    的流量需要经过物理网卡
    澳门1495娱乐 53
  • nat:地址转换;在编造网卡和情理网卡之间成立一个nat转发服务器;对数据包进行源地址转换。
    澳门1495娱乐 54

本着其中流量:

  • 当hypervisor上树virtual
    switch,不过会耗费CPU资源,而且存在较生安全隐患。(intel的VT-c用VMDq技术如果网卡芯片处理部分vswitch的办事,同时用vFW来保障平安)
  • 可事先为流量产生服务器通过安全设备区域展开数量清洗以后重新回来。主流方式采取硬件SR-IOV对VM流量进行识别和处理

总结

澳门1495娱乐 55

2.6 网卡虚拟化

VM发出的流量一般生半点栽

  • 交物理机外部的设备,
  • 到当地物理服务器上之虚拟机。

就此我们得确保不同虚拟机流量的互动隔离,同时以使考虑情理设备外虚拟机的互联互通。

釜底抽薪办法:
对此对物理机外部的流量,给每个VM分配一个专用通道,共享物理网卡资源。
重点有如下几栽模式:

  • Bridge桥对接模式:把物理主机及之网卡当交换机,然后虚拟发一个Bridge来接收发于物理机的保管。
    澳门1495娱乐 56
  • isolation mode:仅guest OS之间通信;不跟外部网络及宿主机通信。
    澳门1495娱乐 57
  • routed mode:与外表主机通信,通过静态路由使得各Guest OS
    的流量需要经物理网卡
    澳门1495娱乐 58
  • nat:地址转换;在编造网卡和大体网卡之间确立一个nat转发服务器;对数码包进行源地址转换。
    澳门1495娱乐 59

对其中流量:

  • 以hypervisor上建立virtual
    switch,不过会消耗CPU资源,而且在于生安全隐患。(intel的VT-c用VMDq技术如果网卡芯片处理局部vswitch的做事,同时用vFW来保障安全)
  • 足优先给流量产生服务器通过安全设备区域拓展数量清洗以后再次返回。主流方式下硬件SR-IOV对VM流量进行分辨与拍卖

总结

澳门1495娱乐 60

2.7 Hypervisor层底虚拟化实现

操作系统是用户与物理机的接口,也是采取与大体硬件的接口。核心职能在于任务调度和硬件抽象。

今非昔比操作系统的极度深不同在于内核。

单内核、混合本、微内核、外内核的别
澳门1495娱乐 61

  • 单内核:内核所有的效果代码全部还运作于同一个基础空间内,优点是性质性能好高,缺点是规划复杂,稳定性不足够好;
  • 微内核:类似C/S服务模式,只有极端基础的代码会运行为本空间,其他的还运作于用户空间,优点是平安无事强,缺点性能于逊色;
  • 混合本:性能与安宁的妥协产物,完全由设计者进行用户从定义;
  • 外内核:比微内核更加极端,连硬件抽象工作都交用户空间,内核只需要保证应用程序访问硬件资源时,硬件是悠闲之

澳门1495娱乐 62

2.7 Hypervisor层之虚拟化实现

操作系统是用户和物理机的接口,也是行使与物理硬件的接口。核心职能在于任务调度和硬件抽象。

不同操作系统的卓绝可怜异在内核。

单内核、混合本、微内核、外内核的区别
澳门1495娱乐 63

  • 单内核:内核所有的效果代码全部都运作于跟一个本空间内,优点是性性能特别高,缺点是规划复杂,稳定性不敷好;
  • 微内核:类似C/S服务模式,只有极其基础之代码会运作于本空间,其他的且运行于用户空间,优点是平安无事强,缺点性能于逊色;
  • 混本:性能及安宁的投降产物,完全由设计者进行用户从定义;
  • 外内核:比微内核更加极端,连硬件抽象工作都交给用户空间,内核只待确保应用程序访问硬件资源时,硬件是空之

澳门1495娱乐 64

2.7.1 主流的Hypervisor总结

Hypervisor的类别

KVM

Xen

Hyper-v

ESX/ESXi

内核类型

Linux

Linux(修改)&Nemesis

Windows&Hyper-V

Linux&VMernel

内核

单核

外内核

外内核

混合内核

I/O虚拟化方式

类Service VM Model

Service VM Model

Service VM Model

Monolithic Model

特点

集成在Linux内核中

有被KVM取代之势,性能低于KVM

捆绑Windows Server

技术积累深厚,Vmkernel是核心竞争力

2.7.1 主流的Hypervisor总结

Hypervisor的类别

KVM

Xen

Hyper-v

ESX/ESXi

内核类型

Linux

Linux(修改)&Nemesis

Windows&Hyper-V

Linux&VMernel

内核

单核

外内核

外内核

混合内核

I/O虚拟化方式

类Service VM Model

Service VM Model

Service VM Model

Monolithic Model

特点

集成在Linux内核中

有被KVM取代之势,性能低于KVM

捆绑Windows Server

技术积累深厚,Vmkernel是核心竞争力