(云计算HCIP)HCIP全笔记(十二)本篇介绍虚拟化技术,内容包含:虚拟化资源、CPU虚拟化、KUMA、KVM介绍、模拟CPU指令、敏感指令区分、内存虚拟化、TLB技术、影子页表技术

365bet世界杯足球 2026-07-19 20:36:58 admin 访问量: 8505 评分: 234
(云计算HCIP)HCIP全笔记(十二)本篇介绍虚拟化技术,内容包含:虚拟化资源、CPU虚拟化、KUMA、KVM介绍、模拟CPU指令、敏感指令区分、内存虚拟化、TLB技术、影子页表技术

1. 虚拟化资源1.1 虚拟化对象 CPU虚拟化:

目标是使虚拟机上的指令能被正常执行,且效率接近物理机

内存虚拟化:

目标是能做好虚拟机内存空间之 间的隔离,使每个虚拟机都认为自己拥有了整个内存地址,且效率页能接近物理机。

I/O虚拟化:

目标使不仅让虚拟机访问到他们所需 要的I/O资源,而且要做好它们之间的隔离工作,更重要的是减轻由于虚拟化所带来的开销。

1.2 虚拟化过程 全虚拟化:

使用VMM实现CPU、内存、设备I/O的虚拟化,而Guest OS和计算机系统硬件都不需要进行修改。

优点

缺点

不需要修改guest os

虚拟化层的开销大

半虚拟化:

使用VMM实现CPU和内存虚拟化,设备I/O虚拟化由Guest OS实现。

优点

缺点

虚拟化层开销小,性能好

需要修改guest os

硬件辅助虚拟化:

借助硬件(主要是处理器)的支持来实现高效的全虚拟化。

该技术将逐渐消除软件虚拟化之间的差别,成为未来的发展趋势。优点

缺点

让物理硬件直接支持虚拟化功能能够识别敏感指令

需要CPU支持虚拟化

1.3 CPU 虚拟化数量:将一个物理CPU抽象成多个vCPU,物理CPU的线程数等同于vCPU的数量指令:在bios上开启硬件辅助虚拟化技术(intel:vt-x amd:amd-v) CPU指令集类型 RISCCISC指令级别 特权指令非特权指令系统分级 ring0ring1ring2ring31.3.1 如何模拟CPU指令(所有敏感指令)指令类别

含义

敏感指令

可以读写系统关键资源的指令

特权指令

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

硬件辅助虚拟化解决:

要求CPU支持虚拟化,当CPU支持,会将指令再分为root模式跟非root模式

1.3.1.1 非root模式:用户仅能使用CPU的两种指令:

特权指令(Ring0级别才能用)普通指令(Ring3级别即可)敏感指令(x86架构中敏感指令集和特权指令集两者交叉的部分)

敏感指令能够修改虚拟机的运行模式或宿主机状态的指令在这里插入图片描述root3:Guest OS的普通指令直接向物理硬件发送指令,无需通过VMM层root2root1root0:Guest OS调用虚拟机系统的root0级别特权指令,

通过VMM向物理硬件发送指令。 分级保护域:

Ring0:拥有最高级别权限,一般只有操作系统和驱动才会允许拥有此权限

Ring1

Ring2

Ring3:权限最低,所有程序都可以拥有此权限

1.3.1.2 root 模式:VMM虚拟机的特权指令,仅在虚拟机中是Ring 0级别,当敏感指令出现将会交付给VMM层进行判断,若是需要会给物理硬件进行执行,不然直接在虚拟机中就可使用Ring 0级别的权限

虚拟化层之上为虚拟机,可以说虚拟机是一个拥有了Ring3权限的APP,

但在虚拟机中的系统需要获得Ring0权限才可以进行一系列操作

1.3.2 如何让多个VM共享CPU利用Native操作系统类似的机制,通过定时器中断(所有CPU都会有的功能),在中断触发时陷入VMM,从而根据调度机制进行调度

KVM:

Qemu(此Qemu不是彼Qemu —— KVM-QEMU):处理I/O设备的指令KVM:处理CPU设备的指令1.3.2.1 解决方案(陷入模拟)当某台虚拟机需要使用指令时,会中断虚拟机陷入VMM层里,在VMM层中KVM的内核CPU(VCPU)就会捕捉到指令,对指令进行识别。

如果指令是针对于CPU,那么直接在VCPU中运行并返回运行结果给虚拟机,返回结果后虚拟机脱出陷入。

如果指令是针对于I/O设备,那么KVM的内核VCPU进行退出处理,交给I/O操作,再经过ioctl返回至Qemu进行处理,Qemu通过I/O操作模拟,交给Qemu里的VCPU进行运行,然后将结果返回至KVM内核的VCPU,再返回给虚拟机脱出陷入

1.3.2 NUMA NUMA(Non Uniform Memory Access)这项技术可以使众多服务器像单一系统那样运转

同时保留小系统便于编程和管理的优点。

基于电子商务应用对内存访问提出的更高的要求,NUMA也向复杂的结构设计提出了挑战。

非统一内存访问(NUMA)是一种用于多处理器的电脑内存体设计,内存访问时间取决于处理器内存位置。

在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些。

NUMA架构在逻辑上遵循对称多处理(SMP)架构。

1.3.3 KVMKVM全称:Kernel-base Virtual Machine

KVM:实现cpu/内存的虚拟化 (linux天生集成的模块)

cpu虚拟化/内存虚拟化 基于硬件虚拟化

qemu:实现I/O虚拟化 (软件)

KVM是什么:它属于II型虚拟化

它所在linux内核中,是内核中的一个实现cpu/内存虚拟化的模块

任意一装由linux操作系统的物理机,安装KVM模块之后即变成了Hypervisor(VMM)1.3.3.1 三种运行模式 Guest Mode(虚拟机):包含虚拟机的CPU、内存、磁盘等虚拟设备

User Mode(用户空间):QEMU组件运行于该空间,用来模拟执行IO操作

Kernel Mode(内核空间):开源操作硬件的空间

1.3.3.2 libvirtLibvirt是用于管理虚拟化平台的开源的API,后台程序和管理工具。

它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。

这些API在云计算的解决方案中广泛使用。

它是由C语言写的软件包,它属于一个管理工具,用于对接各种hypervisor(VMM),同时内部设计了多种语言的api接口

用处:

它可以屏蔽虚拟化平台的差异安装后运行libvirtd进程:操作虚拟化平台管理硬件驱动管理工具/命令行:

可以管理本服务器上的libvirt页可以通过网络管理其他服务器上的libvirt

1.4 内存 虚拟化将物理机内存进行统一管理,引入一个新的内存空间,让虚拟机运行于新的内存空间中

四类内存地址: 物理机的物理内存 —— HPA物理机的虚拟内存 —— HVA虚拟机的物理内存 —— GPA虚拟机的虚拟内存 —— GVA在这里插入图片描述在这里插入图片描述物理机 资源流转至 虚拟机过程

HPA(物理内存地址)–>GPA(虚拟机OS获取的地址)–>GVA(虚拟机应用程序获取的地址)

Native操作系统对内存的认识与管理达成以下两点认识:

内存都是从物理地址0开始的内存都是连续的内存虚拟化需要解决两个的问题:

从物理地址0开始的:

物理地址0只有一个,无法同时满足所有客户机从0开始的要求;

地址连续:

虽然可以分配连续的物理地址,但是内存使用效率不高,缺乏灵活性。

1.4.1 内存映射1.4.1.1 TLBTLB(Translation Lookaside Buffer) —— 转译后备缓冲区

转译后备缓冲器,也被翻译为页表缓存、转址旁路缓存

这是为CPU提供的一种缓存,有存储器管理单元用于改进虚拟地址到物理地址的转译速度

TLB为典型的结合存储(content-addressable memory,首字母缩略字:CAM)

用处:

TLB具有固定数目的空间槽,用于存放将虚拟地址映射至物理地址的标签页表条目

其搜索关键字为虚拟内存地址,其搜索结果为物理地址。

如果请求的虚拟地址在TLB中存在,CAM 将给出一个非常快速的匹配结果,之后就可以使用得到的物理地址访问存储器

如果请求的虚拟地址不在TLB中,就会使用标签页表进行虚实地址转换,而标签页表的访问速度比TLB慢很多。

有些系统允许标签页表被交换到次级存储器,那么虚实地址转换可能要花非常长的时间。

1.4.1.2 影子页表从软件实现GVA到GPA的转换,由VMM将影子页表载入物理上的内存管理单元(MMU)

缺点:技术复杂、内存开销大场景复现:

假如现在有A和B两个GuestOSCPU是轮流分别处理它们的请求当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这个转换过程。除了降低各部虚拟机器在切换时所造成的效能损耗外,硬体指令集也比虚拟化软体处理来得可靠与稳定。

2. 云计算与虚拟化的区别类别

作用

云计算

一种商业模式或服务模式

虚拟化

实现云计算的重要手段之一

虚拟化技术:

开源:KVM、XEN

闭源:Hyper-v、vSphere、FusionCompute

3. 缩略词VRM——————————虚拟机资源管理,会与cna进行对接,可以控制多台cna

KVM——————————虚拟机中的模块,存储在linux内核里

XEN——————————虚拟机中的内核模块,06年以前主流的虚拟机架构

libvirt——————————软件包,负责对接驱动和管理工具,它拥有多种语言的api接口,可以用根据对应语言的api直接进行管理libvirt对kvm操作

Guest Os——————————虚拟机操作系统

Huest Os——————————硬件操作系统

driver——————————硬件驱动

HPA——————————物理机的物理内存

HVA——————————物理机的虚拟内存

GPA——————————虚拟机的物理内存

GVA——————————虚拟机的虚拟内存

TLB——————————转译后备缓冲区

CAM——————————结合存储

相关数据