计算虚拟化技术

  • ​​一、FusionSphere​​
  • ​​1)FusionCompute​​
  • ​​1) CNA​​
  • ​​2 )VRM​​
  • ​​2)FuisonManager​​
  • ​​3)UltraVR(BCManager ereplication)​​
  • ​​4)eBackup​​
  • ​​5)FusionSphere应用场景​​
  • ​​单虚拟化场景​​
  • ​​多虚拟化场景​​
  • ​​私有云场景​​
  • ​​6)虚拟化和云计算有什么关系?​​
  • ​​二、计算虚拟化​​
  • ​​什么是虚拟化?​​
  • ​​1、虚拟化前和虚拟化后的区别​​
  • ​​1)虚拟化前​​
  • ​​2)虚拟化后​​
  • ​​2、CPU虚拟化​​
  • ​​1)CPU运行级​​
  • ​​2)CPU虚拟化模式​​
  • ​​1、全虚拟化​​
  • ​​2、半虚拟化​​
  • ​​3、硬件辅助虚拟化​​
  • ​​3)RISC的CPU虚拟化(全虚)​​
  • ​​4)CISC的CPU虚拟化​​
  • ​​3、虚拟机共享CPU虚拟化(基于硬件辅助虚拟化)​​
  • ​​1)KVM的CPU虚拟化​​
  • ​​2)CPU处理流程​​
  • ​​4、CPU资源用量​​
  • ​​5、内存虚拟化​​
  • ​​1)无内存虚拟化时​​
  • ​​2)有内存虚拟化(全虚)​​
  • ​​1、三个地址​​
  • ​​2、三张映射表​​
  • ​​3、用语言表述​​
  • ​​3)内存全虚拟化优化​​
  • ​​1、影子页表​​
  • ​​4)内存硬件辅助虚拟化​​
  • ​​1、EPT技术​​
  • ​​2、原理​​
  • ​​5)Huge Page和Transparent Huge Page​​
  • ​​6)TLB​​
  • ​​6、IO虚拟化(KVM)​​
  • ​​1)全虚拟化(全模拟)​​
  • ​​2)半虚拟化(virtio)​​
  • ​​3)硬件辅助虚拟化(PCI设备直接分配)​​
  • ​​7、FC平台支持的QOS维度​​
  • ​​1)CPU QOS​​
  • ​​2)内存QOS---开启内存复用​​
  • ​​3)网络的QOS​​
  • ​​4)磁盘的QOS:​​
  • ​​8) 内存复用​​
  • ​​(1)内存气泡​​
  • ​​(2)内存交换​​
  • ​​(3)内存共享​​
  • ​​9、NUMA技术​​
  • ​​(1)Host NUMA​​
  • ​​(2)Guest NUMA​​
  • ​​10、HA的过程​​
  • ​​(1)虚拟机HA原理​​

一、FusionSphere

1、Fusionsphere是华为虚拟化解决方案

由4个软件套件组成。

他们分别是:

1)FusionCompute

服务器虚拟化产品,完成服务器计算资源虚拟化、服务器下挂存储资源虚拟化(本地、共享)、软件定义网络。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kEWEwRrP-1628818997296)(C:\Users\Jack\AppData\Roaming\Typora\typora-user-images\image-20210811213552950.png)]

1) CNA

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

1.提供虚拟计算功能。

2.管理计算节点上的虚拟机。

3.管理计算节点上的计算、存储、网络资源。

2 )VRM

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

•管理集群内的块存储资源

•管理集群内的网络资源(IP/VLAN),为虚拟机分配IP地址。

管理集群内虚拟机的生命周期以及虚拟机在计算节点上的分布和迁移。

•管理集群内资源的动态调整。

•通过对虚拟资源、用户数据的统一管理,对外提供弹性计算、存储、IP等服务。

•通过提供统一的操作维护管理接口,操作维护人员通过WebUI远程访问FusionCompute对整个系统进行操作维护,包含资源管理、资源监控、资源报表等。

2)FuisonManager

FusionManager主要对云计算的软件和硬件进行全面的监控和管理,实现同构,异构VMware虚拟化多资源池管理,软硬件统一告警监控,并向内部运维管理人员提供管理门户。

虚拟化管理软件(华为自主研发的云管理专家平台)

什么是异构?

由不同的元素或部分组成,不一样不均匀的意思

a、异构虚拟化资源统一管理(FC、VMware)
b、异构硬件统一监控(异构厂商服务器、存储、交换机、防火墙等硬件设备运行状态)
c、多数据中心资源统一管理,并创建VDC(虚拟数据中心)分配给租户,VDC资源可跨多个物理DC。
d、提供安全的网络隔离环境,VDC内部的VPC(虚拟私有云),为VDC内部的业务VM创造安全隔离的网络

VPC网络类型:

内部网络—VPC内部VM间通信
直连网络—VPC内部VM直连到网络,网络通信
路由网络—VPC内部VM通过虚拟路由器与网络,网络通信

3)UltraVR(BCManager ereplication)

提供跨站点容灾能力

容灾管理软件,在同城容灾、异地容灾、两地三中心等容灾场景下实现容灾资源接管和一键式快速切换,最大程度降低生产数据中心业务中断时间。

4)eBackup

提供虚拟机的备份能力

VM备份管理软件,针对业务VM做备份策略以及备份和恢复实施,保障业务VM数据的安全性。

5)FusionSphere应用场景

单虚拟化场景

只采用FusionCompute作为统一的操作维护管理平台对整个系统进行操作与维护的应用场景

多虚拟化场景

多套虚拟化环境需要进行统一管理

统一管理和维护:支持同时接入FusionCompute和VMware虚拟化环境,对多虚拟化环境的资源和业务进行统一的管理和维护。

统一监控告警:支持对多个虚拟化环境、多种物理设备的告警进行统一接入、监控和管理。

私有云场景

多租户共享VPC场景

多租户私有VPC场景

6)虚拟化和云计算有什么关系?

虚拟化是云计算的基础,但不等于云计算

二、计算虚拟化

什么是虚拟化?

其实就是一个抽象层,可以屏蔽底层物理资源的差异,将物理资源抽象成统一规格的逻辑资源

举个栗子:我不管底层的服务器是哪个厂家的,华为、H3C,浪潮、联想的,只要你是统一X86架构或者ARM架构的。我都将你的物理资源进行池化给上层使用,我们只知道在池化后CPU量化成多少VCPU给上层使用,上层的虚拟机只是从量化后的虚拟池中取资源,内存,存储类似

1、虚拟化前和虚拟化后的区别

1)虚拟化前

缺陷:

a、资源利用率底下或者不均衡

b、HOS和APP与底层硬件紧耦合

如果服务器硬件故障或者HOS崩溃将造成APP应用无法使用,中断业务**(模块或者系统之间关系太紧密,存在相互调用的关系 )**

c、资源扩容不方便

扩容周期长、考虑硬件兼容性、中断业务实现扩容

d、迁移不灵活

HOS+APP从一台物理主机迁移至另外一台物理主机,需要中断业务,手动制作HOS+APP打包镜像,迁移至目标主机考虑驱动兼容问题,是否需要重装驱动。

2)虚拟化后

将服务器物理资源抽象成逻辑资源

优势:

a、资源利用率提升

一台物理主机上的虚拟化层运行多台VM,多台VM运行不同GOS以及APP。

b、GOS和APP与物理服务器解耦

物理服务器故障或者VMM故障,通过HA机制可以保障VM的GOS和APP还能正常在集群内其他物理服务器上运行(会有短暂业务中断)

c、资源扩容方便

VM侧:在线VCPU、VMEM、VDISK、VNIC扩容,不影响业务
离线虚拟资源兼容,使空闲资源回收到虚拟资源池
主机侧:通过热迁移将主机上VM迁移走之后下电扩容硬件资源,实现不中断业务的物理资源扩容。

d、迁移灵活

FC平台可以实现VM热迁移(源主机和目的主机可以是不同厂商服务器)
异构虚拟化平台的VM迁移,rainbow(华为迁移工具),实现VM从第三方虚拟化平台迁移至华为虚拟化平台。

2、CPU虚拟化

1)CPU运行级

CPU有四个运行级别分别是:

ring0-特权级–OS内核使用

ring1/ring2–一般驱动程序使用

ring3–用户态应用使用

敏感指令—影响系统正常运行的指令

特权指令:决大多数的敏感指令是特权指令,特权指令只能在处理器的最高特权级 (内核态)执行。

RISC—精简指令集CPU—敏感指令在ring0 大型机/小型机/手机 arm架构

CISC—复杂指令集CPU—敏感指令打散在各个ring级别 X86架构

2)CPU虚拟化模式

1、全虚拟化

app或者OS下发指令全被vmm截获并进行转译,会对r0和r3进行分类,if r3指令集那么直接放行给cpu,由cpu调度。if r0或者敏感指令则还是交给vmm由vmm进行特权解除,陷入vmm进行模拟调用

2、半虚拟化

通过对OS的修改,让ring0和敏感级别指令集直接交给vmm,ring3直接放行

3、硬件辅助虚拟化

支持硬件辅助虚拟化的cpu(vt-x、amd-v),有两种cpu模式,vmx root模式和vmx non-root模式,两种模式都支持ring0-ring3,vmm运行于root模式下,Gos运行于non-root模式下,也就是在cpu硬件上做了区分,这样vmm的陷入模拟就不需要了,彻底解放了vmm的压力。

3)RISC的CPU虚拟化(全虚)

a、GOS的ring0、敏感指令下发到物理硬件上,CPU会触发异常,VMM检测到异常消息,会截获GOS的R0、敏感指令,特权解除、陷入VMM、模拟执行到物理CPU。

4)CISC的CPU虚拟化

全虚拟化

VMM会主动截获VM所有CPU操作,并进行过滤筛选;
如果是R0、敏感(可能在R0、R3上),进行二进制转译,转换成安全指令下发给CPU模拟执行。
如果是R3级别,下发给物理CPU
特点:VMM开销最大,但是VM GOS兼容高,支持所有VM运行的GOS。

半虚拟化

修改VM的GOS内核

VM主动将R0和所有敏感指令(R0 R3)主动下发给VMM,VMM只需要模拟执行,降低VMM开销。VM的R3级别指令直接下发到物理CPU。
特点:VMM开销降低,但是VM GOS有要求,开源内核的GOS才支持CPU半虚拟化,例如linux。

硬件辅助虚拟化

修改CPU架构,通过intel VT-X AMD的AMD-V CPU架构实现上层VMM和VM所有CPU相关操作全部下发硬件,不需要VMM对VM做任何CPU相关操作。
VMX root模式:给VMM使用
VMX non root模式:给VM使用

当VM下发R0、敏感指令,先到non root模式中,通过VM-exit 陷入到root模式中,由root模式模拟执行,返回结果通过VM-entry动作 回退到non root模式,逐步返回结果给VM。

当VM下发R3指令,直接在non-root模式下处理。

特点:完全解放VMM,对CPU有特殊要求,对VM的GOS无要求。

3、虚拟机共享CPU虚拟化(基于硬件辅助虚拟化)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfaxievU-1628818997302)(C:\Users\Jack\AppData\Roaming\Typora\typora-user-images\image-20210811232316346.png)]

1)KVM的CPU虚拟化

**guest模式:**VM运行模式-------CPU–non root

kernal模式:KVM运行模式-----CPU–root

user模式:QEMU运行模式------CPU–root**(Qemu是一款模拟计算机硬件设备的软件,所以是ring3级别的指令,但它调用的是底层硬件设备所以在root模式)**

2)CPU处理流程

VM执行非IO类R3级别指令,访问CPU直接在non-root模式下处理

VM执行非IO类R0、敏感指令,non-root<---->root模式

VM执行IO类指令,non-root—>root模式(KVM)—>root模式(QEMU)–>操作IO硬件

4、CPU资源用量

物理服务器VCPU总量=物理CPU个数X核数X超线程数(2)一个CPU有两个超线程
用户VM使用的VCPU数量=物理服务器VCPU总量-管理域预留VCPU数量
CNA主机提供给VM的CPU资源(主频)=用户VM使用的VCPU数量*物理CPU主频
所有用户VM使用的CPU主频总量不能超过上述值

主机的CPU和内存资源分为两部分:管理域和虚拟化域。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8cjTa4tT-1628818997304)(C:\Users\Jack\AppData\Roaming\Typora\typora-user-images\image-20210812110437310.png)]

管理域CPU和内存:用于运行FusionCompute管理系统。
虚拟化域CPU和内存:用于运行虚拟机。

其中,管理域CPU占两个超线程,其余为虚拟化域CPU。
管理域2vCPU 用户VM创建只能看到22vCPU

5、内存虚拟化

1)无内存虚拟化时

HOS为所有APP应用维护VA–MA地址映射关系,使得所有APP都能使用从0开始连续的内存地址空间,多应用间逻辑隔离,互不影响。

虚拟内存地址(Virtual MemoryAddress,即 VA)

机器内存地址(Machine Memory Address,即 MA)

2)有内存虚拟化(全虚)

1、三个地址

虚拟内存地址(Virtual MemoryAddress,即 VA)

物理内存地址(Physical Memory Address,即 PA)

机器内存地址(Machine Memory Address,即 MA)

2、三张映射表

GOS维护:APP— GVA—GPA映射表

VMM(KVM)维护:VM— GPA–HVA映射表

HOS维护:虚拟化层+APP HVA—HPA映射表

VM内部应用访问内存,需要查三张映射表才能访问到物理内存,开销较大

3、用语言表述

虚拟化后的操作系统可以分为HostOS也就是宿主操作系统,往上是VMM层也就是虚拟化层,最上面可以跑很多GuestOS也就是来宾操作系统,GuestOS上面跑的有应用。

那么这些应用要访问内存的物理内存需要查三个表,分别是GuestOS维护的GVA和GPA,

由GPA查询由VMM维护的GPA和HVA的关系

由HVA继续查询HOS维护的HVA和HPA关系表,从而找到HPA得到具体的物理地址

3)内存全虚拟化优化

1、影子页表

VMM向上查询GOS内部的 GVA–GPA映射表
VMM向下查询HOS内部的 HVA–HPA映射表
结合自己GPA–HVA映射表,将三张映射表整合形成GVA–HPA影子页表,并载入CPU的MMU中,提升查表速度。

MMU是内存管理单元

4)内存硬件辅助虚拟化

1、EPT技术

Intel EPT AMD NPT 技术

Intel的CPU提供了**EPT (Extended Page Tables,扩展页表)**技术,直接在硬件上支持GVA->GPA->HPA的地址转换,从而降低内存虚拟化实现的复杂度,也进一步提升内存虚拟化性能。

2、原理

先查找在整合!

CPU查找GOS内部的GVA–GPA映射表,载入CPU内部形成CR3表
CPU整合 GPA–HVA映射表+HVA—HPA映射表,形成EPT扩展页表
查表动作不在由VMM参与,CPU硬件实现查表 CR3+EPT,如果缺页,才触发异常,转由VMM和HOS分配页表项,重新载入到CPU内部的EPT中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mdiboGsR-1628818997309)(C:\Users\Jack\AppData\Roaming\Typora\typora-user-images\image-20210812113707447.png)]

5)Huge Page和Transparent Huge Page

内存管理的最小块级单位叫页,一个page是4096个字节,1M有256个page

cpu通过MMU(内存管理单元)维护page表记录

所以条目越少,查询越简单

Huge pages是通过使用大页内存来取代传统的 4kb 内存页面,以适应越来越大的系统内存,让操作系统可以支持现代硬件架构的大页面容量功能。
Huge pages 有两种格式大小: 2MB 和 1GB2MB 页块大小适合用于 GB 大小的内存1GB 页块大小适合用于 TB 级别的内存2MB 是默认的页大小。

THP 是一个抽象层,能够自动创建、管理和使用传统大页。

标准大页管理是预分配的方式

而透明大页管理则是动态分配的方式。

一页内存越大,条目越少,TLB缓存越容易查询

6)TLB

页表缓存转址旁路缓存,为​​CPU​​的一种缓存

6、IO虚拟化(KVM)

1)全虚拟化(全模拟)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g0fvVan6-1628818997312)(C:\Users\Jack\AppData\Roaming\Typora\typora-user-images\image-20210812212317351.png)]

IO全虚拟化:VM使用的IO设备是由VMM层模拟出来的,VMM层负责对VM的IO请求进行监测、截获、模拟执行动作,对VMM层损耗较大,但对VM的GOS无需做任何操作,实现简单。

IO处理流程:APP—GOS—虚拟IO设备驱动—KVM(IO trap)----IO共享环(一段内存)—QEMU—HOS内核 IO设备硬件驱动—物理IO硬件

优点:VM的GOS不需要做修改,兼容大部分的GOS,兼容大部分的IO设备
缺点:IO访问路径长,VMM(KVM)开销大,IO处理性能差,VM数量较多时,并发处理性能非常低。

2)半虚拟化(virtio)

IO半虚拟化:VM使用的IO设备任然是由VMM层模拟出来,但是GOS内部需要做修改,安装pv driver,使得VM能够主动将IO请求下发给VMM,VMM无需监测、截获动作,制作模拟执行,降低VMM层性能损耗,但是对GOS有操作要求,是折中的解决方式。

IO处理流程:APP—GOS—virtio前端驱动—IO共享环(一段内存)—QEMU—HOS内核 IO设备硬件驱动—物理IO硬件
KVM只做通知
优点:IO访问路径变短,VMM(KVM)开销降低,IO处理性能高,支持批量IO处理
缺点:VM的GOS需要修改(安装前端驱动),对IO设备兼容性有要求,老旧IO设备可能不支持

3)硬件辅助虚拟化(PCI设备直接分配)

IO硬件辅助虚拟化:需要特殊硬件支持(支持虚拟化能力的IO板件),VM的GOS安装硬件驱动,使得VM下发IO请求通过硬件驱动直接到达硬件,无需VMM做任何处理,性能最高,成本最高,能够实现一个硬件被多台VM共用。

优点:IO性能最高,VMM(KVM)不需要参与
缺点:特殊IO设备才能实现,主板PCI插槽有限,支持VM的数量有限,成本高
VM失去很多高级特性(HA DRS 内存快照等等)


7、FC平台支持的QOS维度

1)CPU QOS

(1)份额:cpu资源抢占时
(2)预留:cpu资源抢占时
(3)限制:

2)内存QOS—开启内存复用

(1)份额:内存抢占时
(2)预留:
(3)限制:

3)网络的QOS

可以通过流量整形限制虚拟机网卡的网络流量发送和接收速率
操作:网络—DVS—端口组—网络设置—发送和接收方向的流量整形
(1)平均带宽:
(2)峰值带宽:
(3)突发大小:

4)磁盘的QOS:

vm—配置—磁盘----更多—设置磁盘IO上限
(1)每秒的读或写或读写字节数(BPS):
(2)每秒的读或写或读写个数(IOPS)

8) 内存复用

(1)内存气泡

系统主动回收虚拟机暂时不用的物理内存,分配给需要复用内存的虚拟机。内存的回收和分配均为系统动态执行,虚拟机上的应用无感知。整个物理服务器上的所有虚拟机使用的分配内存总量不能超过该服务器的物理内存总量。

(2)内存交换

将外部存储虚拟成内存给虚拟机使用,将虚拟机上暂时不用的数据存放到外部存储上。系统需要使用这些数据时,再与预留在内存上的数据进行交换。

(3)内存共享

多台虚拟机共享数据内容相同的内存页。
注意:可以增加主机的内存交换分区
内存交换分区目前只支持虚拟化本地硬盘的数据存储

9、NUMA技术

(1)Host NUMA

物理服务器内部按node调度cpu和内存,本地调用性能最高,跨node调用性能损耗大,所以host numa可以实现主机上层应用调用cpu和内存时在hostnuma的控制下尽量从同一物理node内调用

(2)Guest NUMA

让虚拟机也呈现NUMA架构,虚拟机上层应用调用虚拟机的vcpu和vRAM时也能尽量从同一vnode内来调用(一个vnode的vcpu和vRAM来源一个物理node)—虚拟机上层应用调用cpu和内存资源时最终会映射到一个物理node内去调用
一个虚拟机的不同vnode可以对应底层的不同物理node

10、HA的过程

(1)虚拟机HA原理

1.VM故障或者物理节点故障
2.VRM查询VM状态,发现VM故障
3.VRM节点判断VM有HA特性,则根据保存的VM信息选择可用的CNA主机启动VM
4.CNA节点收到HA请求,根据VM规格,卷信息创建新的VM
5.启动过程中,将VM之前的卷重新挂载,包括用户卷