一、计算虚拟化的介绍
1.什么是计算虚拟化
云计算1.0时代以虚拟化为主,并在此基础上进一步发展,因此,虚拟化也成为云计算的入门技术。我们再资源商又可以将虚拟化分为:计算虚拟化、存储虚拟化、网络虚拟化。
2.计算虚拟化的分类
从服务器组建角度来看,计算虚拟化可以分为CPU虚拟化、内存虚拟化、I/O虚拟化。CPU虚拟化的目标是保障CPU资源的合理调度以及虚拟机上的指令能正常高效的执行。内存虚拟化的目标是保障内存空间的合理分配、管理、隔离以及高效可靠地使用。I/O虚拟化的目标是保障虚拟机(VM)的输入输出隔离,可以正常高效地执行。
3.计算虚拟化相关架构
虚拟化只是底层硬件与上层操作系统/应用的解耦,提供可灵活分配的技术资源池的底层技术。想要实现虚拟机的创建与管理,需要与其他组件(镜像、调度、存储、网络等)协同工作才能完成,并提供完整的计算服务。常见的计算服务架构有:OpenStack Nova、阿里云ECS、腾讯云CVM等等。
(1)OpenStack Nova
OpenStack是开源的云平台,通过不同组建提供计算、存储胡、网络、数据库等多种云服务。其中计算服务由Nova组件提供,通过nova-API与其他组建通信,通过nova-compute对接不同的虚拟化层提供计算虚拟化服务。
(2)阿里云ECS
云服务器ECS是阿里云提供的基于KVM虚拟化的弹性计算服务,建立在阿里云“飞天分布式操作系统”上。实现计算资源的即开即用和弹性伸缩。请求的主要调用流程为:OpenAPI、业务层、控制系统、宿主机服务。
(3)腾讯云CVM
云服务器CVM是腾讯提供的寄语KVM虚拟化的弹性计算服务,建立在腾讯云分布式资源管理调度系统vSation上。请求的主要调用流程为:API Sever、vStation、服务器集群。
二、CPU虚拟化
1.什么是CPU虚拟化
在物理机(宿主机)中通过线程或进程这种纯软件方式模拟出假的CPU。通过CPU虚拟化就可以将一个物理CPU发给不同的虚拟机使用。但是,物理CPU的核数要大于虚拟CPU的总核数,这是由于虚拟出来的每个CPU实际上就是一个线程或者进程,虚拟CPU过多时,需要进行进程/线程的切换,比较浪费。
2.CPU虚拟化的计算
总资源 = 服务器CPU个数 * 服务器单个CPU的核数 * 线程(超线程为2,单线程为1)
例如:某服务器有四个主频为3.0GHZ的CPU,每个CPU四核,超线程。
解:单个CPU为四核,超线程,则单个CPU拥有4 * 2=8个线程。
服务器有四个主频也就是4个CPU,
则服务器总共可以虚拟的虚拟CPU的个数为8 * 4=32个。
总资源为32*3.0GHZ=96GHZ。
一般多个虚拟机之间可以复用一个物理CPU,所以单台服务器上的虚拟机可以使用的虚拟CPU大于总的虚拟CPU数量。
3.CPU QoS(Quality of Service)
CPU服务质量(CPU Qos)用来控制控制虚拟机使用CPU资源量的大小,主要分为三类:份额、预留、限额。
(1)CPU资源限额:控制虚拟机占用物理资源使用的上限。
(2)CPU资源份额:定义了多台虚拟机在竞争物理CPU资源时,需要按比例分配计算资源。
(3)CPU预留资源:定义了多台虚拟机在竞争物理CPU时,每台虚拟机最低分配的计算资源。
4.NUMA
NUMA(非统一内存访问体系结构),是一种提高物理服务器性能的一种技术。其原理是:将物理服务器的CPU和内存资源分到多个node上,由于node内部可以独立工作,node内的内存访问效率最高,NUMA保证了一个虚拟机上的虚拟CPU尽量分配到同一个node中的物理CPU上。如果一台虚拟机的虚拟CPU跨node访问的话,访问的延时肯定增加。
三、内存虚拟化
1.什么是内存虚拟化
内存虚拟化抽象了物理内存,虚拟机每个进程都被赋予一块连续的、超大的(根据系统结构来定,32位系统寻址空间为232,64位系统寻址空间为264)虚拟内存空间,进程可以毫无顾忌的使用内存,不用担心申请内存会和别的进程冲突,因为底层有机制帮忙处理这种冲突,能将虚拟地址根据一个页表映射程相应的物理地址。
2.内存虚拟化机制分为
全虚拟化、半虚拟化、硬件辅助虚拟化。常用技术为:全虚拟技术为影子页表技术,半虚拟化技术为页表写入法,硬件辅助内存虚拟化有Intel扩展页表EPT(Extend Page Table)和AMD嵌入页表NPT(Nested Page Table)。
(1)全虚拟化中每个虚拟机维护一个影子页表,记录虚拟化内存与物理内存的映射关系,虚拟机虚拟化层将影子页表提交给CPU的内存管理单元MMU进行地址转换,通过MMU将内存块提交给虚拟机使用,虚拟机的也表无需改动。
(2)半虚拟化采用页表写入法,为每个虚拟机创建一个页表并向虚拟化层注册。虚拟机运行过程中虚拟机虚拟化层能直接访问到合适的地址。
(3)硬件辅助内存虚拟化有Intel扩展页表EPT和AMD嵌入页表NPT。EPT/NPT是内存管理单元MMU的扩展,CPU硬件的一个特性,通过硬件方式实现客户机操作系统物理内存地址到主机物理内存地址的转换,比影子页表的系统开销更低,性能更高。
3.内存复用
内存复用是指在服务器物理内存一定的情况下,通过综合运用内存复用单项技术(内存气泡、内存共享、内存交换)对内存进行时分复用。通过内存复用,使得虚拟机内存规格总和大于服务器规格内存总和,提高服务其中虚拟机密度。内存复用QoS有:内存预留(VM预留 最低的物理内存)、内存份额(适用资源复用场景,按比例分配内存资源)。
4.常见的内存复用技术
(1)内存气泡
虚拟化层将较空闲VM内存,分配给内存使用较高的虚拟机。内存的回收和分配由虚拟化层实现,虚拟机上的应用无感知。提高物理内存利用率,但所有虚拟机使用的分配内存总量不能超过该服务器的物理内存总量。
(2)内存交换
将外部存储虚拟成内存给虚拟机使用,将虚拟机上长时间未访问的数据存放到外部存储上,建立映射关系。虚拟机再次访问这些数据是通过映射在与内存上的数据进行交换。
(3)内存共享
虚拟机只对共用的内存(共享数据内容为零的内存页)做只读操作,有写操作时运用写时复制(虚拟机有写操作时,开辟另一个空间,并修改映射)。
开启内存复用技术可以将物理内存复用比提高150%,甚至更多。
四、I/O虚拟化
I/O虚拟化的目标是保障虚拟机IO隔离,可以正常高效的执行。
五、常见集群策略
六、华为FusionCompute