CPU虚拟化:
目标是使虚拟机上的指令能被正常执行,且效率接近物理机
内存虚拟化:
目标是能做好虚拟机内存空间之 间的隔离,使每个虚拟机都认为自己拥有了整个内存地址,且效率页能接近物理机。
I/O虚拟化:
目标使不仅让虚拟机访问到他们所需 要的I/O资源,而且要做好它们之间的隔离工作,更重要的是减轻由于虚拟化所带来的开销。
全虚拟化:
使用VMM实现CPU、内存、设备I/O的虚拟化,而Guest OS和计算机系统硬件都不需要进行修改。
优点 | 缺点 |
---|---|
不需要修改guest os | 虚拟化层的开销大 |
半虚拟化:
使用VMM实现CPU和内存虚拟化,设备I/O虚拟化由Guest OS实现。
优点 | 缺点 |
---|---|
虚拟化层开销小,性能好 | 需要修改guest os |
硬件辅助虚拟化:
借助硬件(主要是处理器)的支持来实现高效的全虚拟化。
优点 | 缺点 |
---|---|
让物理硬件直接支持虚拟化功能能够识别敏感指令 | 需要CPU支持虚拟化 |
指令类别 | 含义 |
---|---|
敏感指令 | 可以读写系统关键资源的指令 |
特权指令 | 绝大多数的敏感指令是特权指令特权指令只能在处理器最高特权级(内核态)执行 |
用户仅能使用CPU的两种指令:
分级保护域:
Ring0
:拥有最高级别权限,一般只有操作系统和驱动才会允许拥有此权限Ring1
Ring2
Ring3
:权限最低,所有程序都可以拥有此权限
虚拟机的特权指令,仅在虚拟机中是Ring 0级别,当敏感指令出现将会交付给VMM层进行判断,若是需要会给物理硬件进行执行,不然直接在虚拟机中就可使用Ring 0级别的权限
虚拟化层之上为虚拟机,可以说虚拟机是一个拥有了Ring3权限的APP, 但在虚拟机中的系统需要获得Ring0权限才可以进行一系列操作
利用Native操作系统类似的机制,通过定时器中断(所有CPU都会有的功能),在中断触发时陷入VMM,从而根据调度机制进行调度
KVM:
当某台虚拟机需要使用指令时,会中断虚拟机陷入VMM层里,在VMM层中KVM的内核CPU(VCPU)就会捕捉到指令,对指令进行识别。
便于编程和管理
的优点。
基于电子商务应用对内存访问提出的更高的要求,NUMA也向复杂的结构设计提出了挑战。
KVM全称:Kernel-base Virtual Machine
KVM是什么:它属于II型虚拟化
Libvirt是用于管理虚拟化平台的开源的API,后台程序和管理工具。 它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。 这些API在云计算的解决方案中广泛使用。
它是由C语言写的软件包,它属于一个管理工具,用于对接各种hypervisor(VMM),同时内部设计了多种语言的api接口
用处:
管理工具/命令行: 可以管理本服务器上的libvirt页可以通过网络管理其他服务器上的libvirt
将物理机内存进行统一管理,引入一个新的内存空间,让虚拟机运行于新的内存空间中
物理机 资源流转至 虚拟机过程
HPA(物理内存地址)–>GPA(虚拟机OS获取的地址)–>GVA(虚拟机应用程序获取的地址)
Native操作系统对内存的认识与管理达成以下两点认识:
内存虚拟化需要解决两个的问题:
TLB(Translation Lookaside Buffer) —— 转译后备缓冲区
页表缓存
、转址旁路缓存
这是为CPU提供的一种缓存,有存储器管理单元用于改进虚拟地址到物理地址的转译速度
TLB为典型的
结合存储
(content-addressable memory,首字母缩略字:CAM)
用处:
TLB具有固定数目的空间槽,用于存放将虚拟地址映射至物理地址的标签页表条目 其搜索关键字为虚拟内存地址,其搜索结果为物理地址。
有些系统允许标签页表被交换到次级存储器,那么虚实地址转换可能要花非常长的时间。
从软件实现GVA到GPA的转换,由VMM将影子页表载入物理上的内存管理单元(MMU)
场景复现:
CPU是轮流分别处理它们的请求当CPU执行到A的时候,会将A请求的VA(Virtual Address)经影子MMU转换为真机的PA(Physical Address),并缓存在TLB中存储;
当GuestOS A使用完本次的CPU时间片后,CPU需要将A切到后台,将B切到前台执行, 但为了防止B在执行过程中误用A缓存在TLB中的结果,故必须将其清空;
当GuestOS A再次被调入前台执行时,发现自己的TLB被清空了,因此它会再次向影子MMU发出内存空间的请求, 经转换后在经结果缓存在TLB中,这时B的TLB缓存已经被清空了,这使得TLB缓存目的变的没有意义了。
然而,EPT
和NPT
两个技术则通过在TLB中为每个Guest OS加入一个标记位,来区分各自的缓存结果,这样每次Guest OS切换回来后,直接在TLB中找到自己的标记就可以获取影子MMU的转换结果。
Intel 和AMD分别通过EPT(Extended Page Tables)和 NPT(Nested Page Tables)为虚拟化应用提升影子MMU的性能, 并通过标记(tagged)TLB来避免虚拟机切换时频繁清写(flush)TLB以提高TLB缓存的命中率。
拓展页表(EPT(Extended Page Tables)): 这是用于内存管理单元 (MMU)的英特尔第二代x86虚拟化技术,用于提高MMU的性能而推出的解决方案
AMD-NPT(Nested Page Tables):由AMD推出的用于提高MMU性能的解决方案
EPT:Intel推出的忆体分页虚拟化机制
Intel的CPU提供了EPT (Extended Page Tables,扩展页表)技术,直接在硬件上支持GVA->GPA->HPA的地址转换,从而降低内存虚拟化实现的复杂度,也进一步提升内存虚拟化性能。
NPT:AMD推出的忆体分页虚拟化机制
NPT的两阶段记忆体转换,特点就是将Guest Physical Address→System Physical Address,VMM不用再保留一份SPT(Shadow Page Table),以及以往还得经过SPT这个转换过程。除了降低各部虚拟机器在切换时所造成的效能损耗外,硬体指令集也比虚拟化软体处理来得可靠与稳定。
类别 | 作用 |
---|---|
云计算 | 一种商业模式或服务模式 |
虚拟化 | 实现云计算的重要手段之一 |
虚拟化技术:
VRM——————————虚拟机资源管理,会与cna进行对接,可以控制多台cna
KVM——————————虚拟机中的模块,存储在linux内核里
XEN——————————虚拟机中的内核模块,06年以前主流的虚拟机架构
libvirt——————————软件包,负责对接驱动和管理工具,它拥有多种语言的api接口,可以用根据对应语言的api直接进行管理libvirt对kvm操作
Guest Os——————————虚拟机操作系统
Huest Os——————————硬件操作系统
driver——————————硬件驱动
HPA——————————物理机的物理内存
HVA——————————物理机的虚拟内存
GPA——————————虚拟机的物理内存
GVA——————————虚拟机的虚拟内存
TLB——————————转译后备缓冲区
CAM——————————结合存储