从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx

上传人:b****3 文档编号:4169101 上传时间:2023-05-06 格式:DOCX 页数:13 大小:273.31KB
下载 相关 举报
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第1页
第1页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第2页
第2页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第3页
第3页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第4页
第4页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第5页
第5页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第6页
第6页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第7页
第7页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第8页
第8页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第9页
第9页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第10页
第10页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第11页
第11页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第12页
第12页 / 共13页
从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx

《从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx》由会员分享,可在线阅读,更多相关《从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx(13页珍藏版)》请在冰点文库上搜索。

从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇 New.docx

从0了解云计算系列专题4软件定义计算和虚拟机技术详解下篇New

从0了解云计算系列专题4—软件定义计算和虚拟机技术详解下篇New!

原创XX

在上一篇文章,我们大致讲述了计算虚拟化的概念与分类,本篇文章会就计算虚拟化技术进行更为细致的探讨,详细阐明计算虚拟化是如何在硬件计算资源基础上抽象出逻辑计算资源的。

1.虚拟机资源分配

所谓计算虚拟化,实际就是在物理计算机基础上抽象出逻辑计算机,而抽象出的逻辑计算机一般被称为虚拟机,虚拟机就是物理计算机,通过计算虚拟化后的产物;

举个例子,一台物理计算机通过计算虚拟化抽象为两台虚拟机,在用户看来是两台独立的计算机,实际这两台计算机(两个虚拟机)都运行在同一物理机上,这样两个用户使用两台虚拟机实际是两个用户共用这一个物理机,因此极大提升了该物理机的资源使用率。

那么,如何实现物理机的虚拟化?

我们知道物理计算机主要由CPU、内存和I/O资源构成,所以物理机虚拟化,实际就是指CPU虚拟化、内存虚拟化以及I/O虚拟化。

虚拟化技术归根结底是为不同的虚拟机分配硬件资源(CPU,内存,磁盘,I/O资源等),并在不同虚拟机之间实现资源隔离,形成虚拟机共享使用硬件资源,最近几年共享机制先后取得了突破性进展,使得虚拟化技术,越来越成熟,这些资源共享机制包括:

1.1CPU分配(CPU虚拟化)

CPU虚拟化,也就是多个虚拟机共享一组CPU资源,其实现的关键在于Hypervisor截获虚拟机发出的各种指令并模拟执行,如下所示,虚拟机发出的指令会被Hypervisor截获,再转给底层CPU。

需要注意的是,虚拟机可以发出一般指令,也可以发出特权指令,而特权指令一般是高危指令,处理不好容易引起系统崩溃并进而影响其它虚拟机的工作,所以Hypervisor的做法是:

“特权解除”和“陷入-模拟”,特权解除是指解除虚拟机的特殊权限,让虚拟机运行在较低权限(特权级别1),这个我们在之前的虚拟化方案里已经知道了。

虚拟机可以直接发出一般指令,如果是一般指令,Hypervisor截获后再转给物理CPU执行,但是因为虚拟机权限不够,如果尝试发出特权指令就会触发中断机制,而陷入到Hypervisor(实际虚拟机的特权指令并没有发出去),由Hypervisor模拟执行特权指令,这就是“陷入-模拟”机制;

最后看一下虚拟CPU的分配,比如服务器的CPU芯片是10核心双线程,那么Hypervisor最多可以将20个虚拟CPU(vCPU)分配给虚拟机,虚拟CPU的分配可以是固定的,比如20个虚拟CPU,前10个分配给虚拟机1,后10个分配给虚拟机2,这个也可以是不固定的,Hypervisor允许将一定比例的CPU,循环分配给不同的虚拟机。

1.2内存分配(内存虚拟化)

内存虚拟化指多个虚拟机共享同一物理内存,其实现的关键在于Hypervisor将真实的物理内存,模拟成多个虚拟内存空间分配给多个虚拟机,Hypervisor会维护一个影子页表(ShadowPageTable),该影子页表实现从虚拟内存到物理内存的映射。

举个例子,Hypervisor将虚拟内存分配给虚拟机后,虚拟机会认为自己独占内存资源,如果虚拟机想要访问内存某一内存页,Hypervisor根据影子页表将该虚拟机要访问的虚拟内存页转换为对应的物理内存页,从而实现虚拟机对于物理内存的访问。

1.3I/O设备分配(I/O设备虚拟化)

I/O设备主要是指服务器各类外设资源,包括键盘、鼠标、网卡等设备资源,这类I/O设备的分配机制实际非常简单,即基于时间的时分复用,比如在T1时间段将键盘分配给虚拟机1,在T2时间段将键盘分配给虚拟机2,后续分配依次类推。

以XEN虚拟化方案实现的I/O虚拟化为例,XEN方案在Hypervisor之上会有多个Domain域,其中Domain0为特权域,DomainU为用户域(就是虚拟机)。

如果虚拟机(DomainU)想要访问I/O设备,虚拟机会基于前端驱动调用Domain0的后端驱动,之后Domain0使用设备驱动,为不同虚拟机分时(时分复用)访问I/O设备。

1.4 磁盘空间分配(磁盘空间虚拟化)

磁盘空间的分配方法,主要分为两种:

(1)厚置备,即预先将磁盘空间分配给各个虚拟机,优点是各个虚拟机分配的磁盘空间是预先确定的,缺点是如果有虚拟机只需要很少的磁盘空间,那么分配给该虚拟机的磁盘空间就会有浪费,磁盘利用率不高;

(2)精简置备,即明面上将磁盘空间分配给了虚拟机,但实际并没有分配,虚拟机实际使用到磁盘空间时再灵活分配,缺点是该机制实现复杂,优点是磁盘利用率高。

 

2.虚拟化调优技术

经过上一章节的描述,我们知道通过CPU虚拟化、内存虚拟化和I/O资源虚拟化,可以实现物理机的虚拟化,物理机的虚拟化产物就是我们熟知的虚拟机,但是光有虚拟机还是远远不够的,因为我们要考虑虚拟机的使用性能。

举个例子,一台物理机(4GHzCPU,8G内存)虚拟化为两台虚拟机,每台虚拟机拥有2GHzCPU和4G内存,但是实际使用时会发现每台虚拟机的CPU性能最高表现为1.5GHz,内存访问速度缓慢,这样虽然实现了物理机的虚拟化,但是虚拟机的性能产生了很大的损耗,这样的虚拟化也就失去了使用价值,不具备商业使用的条件。

所以我们不仅仅要实现CPU、内存以及I/O资源虚拟化,更要实现精细化的虚拟化调度,保证虚拟化后的资源性能不会产生较大的损耗,最好是接近于原生硬件的性能,所以这一章节,我们就详细看看虚拟化的精细化调度技术。

 

2.1 精细化CPU调度技术

CPU调度和虚拟化在之前章节已经有讲解,这里再简要说明下,我们知道虚拟机发出的指令会被Hypervisor截获再转给物理CPU处理,如果虚拟机发出的是一般指令则可以正常处理,如果虚拟机发出的是特权指令(即敏感指令),需要按照“特权解除”和“陷入-模拟”机制,由Hypervisor模拟执行敏感特权指令,防止虚拟机直接发出的敏感指令损害到整个服务器的正常运行。

X86架构下的敏感指令,主要分为如下几类:

(1)访问或修改机器状态或虚拟机状态的指令;

(2)访问或修改敏感寄存器或存储单元的指令;

(3)访问存储保护系统或内存,地址分配系统的指令;

(4)所有I/O指令。

其中

(1)和(4),均为特权指令,虚拟机发出这些指令均会触发“陷入-模拟”机制,但是

(2)和(3)虽然也是敏感指令,却不是特权指令,不会触发“陷入-模拟”机制,这些非特权敏感指令的发出也有很大可能危害到整个系统的正常工作,所以通常基于硬件辅助虚拟化技术(Intel-VT和AMD-V)来处理解决上述问题。

最后,我们需要知道,虚拟机调度虚拟CPU(vCPU)和Hypervisor调度物理CPU,是一种两级调度机制,如下图所示:

第一级调度:

虚拟机负责本机进程在vCPU上的调度;

第二级调度:

Hypervisor负责vCPU到物理CPU的调度。

2.2NUMA架构感知的CPU调度技术

只有精细化的CPU调度机制(两级调度机制)还不够,通过引入HostNUMA技术,可以显著提升虚拟机性能,NUMA(Non-UniformMemoryArchitecture,非一致性内存架构)将所有物理CPU与内存通过内存总线连接起来,构成一个完整的系统,这个系统又被分为若干Node,每个Node包括若干物理CPU和一块内存,如下所示:

HostNUMA技术主要提供CPU负载均衡机制,解决CPU资源分配不均衡引起的虚拟机性能劣化的问题,初次启动一台虚拟机(虚拟机A)时,Hypervisor可以从负载较轻的Node里为该虚拟机分配CPU,但是该Node也可能同时在为其它虚拟机(比如虚拟机B)提供CPU资源,此时如果虚拟机B在逐渐大量消耗该Node的CPU资源,那么会导致虚拟机A所能分配到的CPU资源严重不足。

这时HostNUMA技术可以及时将虚拟机A调整到其它Node,使用其它Node(其它负载较轻的Node)为虚拟机A提供CPU资源。

此外,如果虚拟机A所要求的CPU资源超出了一个Node所能提供的CPU资源,那么HostNUMA可以使用多个Node为虚拟机A提供CPU资源,换言之,虚拟机(虚拟机的vCPU)可以在一个Node上调度物理CPU,也可以在多个Node上调度物理CPU。

综上,结合CPU精细调度(两级调度)机制和NUMA架构感知的调度技术,可以充分实现虚拟机CPU资源分配的最优化,保证每个虚拟机的性能最佳化。

 

2.3 内存复用技术

内存复用技术,也就是虚拟机的内存分配技术,前文讲过,这里再简单提下,因为每个虚拟机都要求内存必须从物理地址0开始,并且内存是连续的,所以直接将物理内存分配给虚拟机是不合适的(很显然只有一个虚拟机会被分配物理地址从0开始的内存,其它虚拟机都不可能再分配到物理地址从0开始的内存)。

因此采用了内存虚拟化,即Hypervisor提供虚拟内存给每个虚拟机,所有的虚拟内存都是从地址0开始并且连续的,这时就和CPU调度一样(虚拟机调度vCPU,Hypervisor调度物理CPU),存在着两级内存调度机制,即虚拟机调度虚拟内存,Hypervisor将虚拟内存映射为物理内存,再继而调度物理内存,如下所示;这里虚拟内存页到物理内存页的映射,被称为影子页表。

另外需要说明的是,虚拟内存页到物理内存页的映射机制除了影子页表(ShadowPageTable)技术外,还有MMU类虚拟化技术和内存芯片辅助虚拟化技术。

之所以有这么多技术是因为服务器上可能有很多虚拟机,每个虚拟机可能有很多进程,这么多进程不断访问内存就需要Hypervisor不断完成虚拟内存页到物理内存页的映射,Hypervisor将不堪重负。

所以人们一直在持续改进这类技术,其中MMU类虚拟化技术和影子页表技术,均逐步被内存芯片辅助虚拟化技术所替代,这是一种硬件辅助虚拟化技术,可以极大的提高内存访问效率,类似于硬件辅助CPU虚拟化技术(Intel-VT和AMD-V技术)。

 

2.4I/O调度中断优化技术

I/O调度优化,实际就是更加精细化分配I/O资源,I/O设备虚拟化,主要分为三种虚拟化方式,分别如下:

设备接口完全模拟:

指Hypervisor完全模拟和物理I/O设备完全一样的虚拟I/O设备,之后将虚拟I/O设备分配给虚拟机使用,优点是虚拟机可直接重用现有设备驱动,缺点是每次I/O请求都需要Hypervisor介入处理,性能较低;

前端/后端模拟:

Hypervisor提供后端驱动,虚拟机提供前端驱动,虚拟机使用前端驱动将I/O请求发给Hypervisor的后端驱动,后端驱动处理完请求后再发回通知给前端驱动,这就是XEN虚拟化方案的做法,该方式优点为性能较高,缺点是虚拟机无法复用现有的设备驱动,需要实现前端驱动,而且Hypervisor的后端驱动有可能成为性能瓶颈。

直接划分:

如果说前两种I/O虚拟化方式是基于时间的I/O虚拟化,是不同虚拟机在不同时间交错使用I/O设备,那么这里的直接划分方式就是基于空间的I/O虚拟化,即不同虚拟机使用不同的I/O设备。

比如服务器有两张网卡,那么网卡1分配给虚拟机1,网卡2分配给虚拟机2;该方式性能极高,但是是需要较多的物理I/O资源。

到这里为止,依次讲述了:

CPU调度调优、内存调度调优和I/O调度调优技术。

实际虚拟化方案里的调优技术还有很多,比如网络调优技术,这里暂且不再深究了。

虚拟化技术作为云计算最核心的技术,还留有很多值得探讨的部分,如果感兴趣的话,还可以进一步查阅其它书籍和课程,再深入学习下去。

 

3.跨服务器的计算资源调度

之前章节讲述的都是,基于单台物理机进行计算虚拟化并抽象出多台虚拟机的技术,其中涉及的资源调度也主要是局限于单台物理机内,比如一台物理机(4GHzCPU),虚拟化为两台虚拟机(每台CPU2GHz),这里的CPU资源虚拟化调度,就是局限于这台物理机内的。

但是在某些情况下,我们存在跨物理机(跨服务器)调度计算资源的需求,比如将虚拟机从物理机1迁移到物理机2,原本是在物理机1调度计算资源(包括CPU,内存资源等),现在需要到物理机2调度计算资源(包括CPU,内存资源等)。

跨服务器的计算资源调度指为虚拟机灵活的分配计算资源(服务器资源),是以资源池为维度为虚拟机分配所需要的计算资源(服务器资源),而之前章节讲述的是以单个服务器为维度为虚拟机灵活分配CPU&内存等资源。

跨服务器的计算资源调度,包括如下技术:

3.1 基于OpenStackNova的计算资源调度

OpenStack的Nova组件负责管理虚拟机的生命周期,包括虚拟机的创建,迁移,删除等操作,OpenStack使用FilterScheduler模块决策虚拟机创建的最佳主机(服务器),如下图所示,虚拟机可以创建在很多可用服务器上,但是我们可以出于各方面的考量(比如选择性能最强的服务器,或者选择负载最轻的服务器)以判断虚拟机应该运行在哪台服务器上。

3.2基于冷备机制的计算资源调度

即如果一台服务器故障,该服务器内运行的虚拟机可以迁移到其它服务器上,为了防止所有虚拟机都往一台备份服务器迁移导致网络拥塞,可以将故障服务器上的虚拟机基于算法,分别迁移到不同目的服务器上。

因为服务器故障后需要有虚拟机迁移的过程,所以必然会导致业务中断,该保护措施(冷备机制)适合可靠性要求不高的服务。

 

3.3基于热备机制的计算资源调度

即同时在不同服务器创建主备虚拟机,正常情况下主用虚拟机工作,备用虚拟机维护到主用虚拟机的心跳检测,如果主用虚拟机故障则心跳检测失败,备用虚拟机立刻激活接管业务,保证业务的无缝切换,用户层面不感知故障,这种保护措施(热备机制)适合可靠性要求高的服务。

 

3.4基于DRS和DPM机制的计算资源调度

DRS指周期性检测集群物理服务器的CPU和内存使用率,如果发现集群负载不均衡度较高(高过阈值),表明集群内不同服务器的工作负担很不均衡(部分服务器累死,部分服务器闲死)则触发迁移机制,将部分高负荷服务器内的一些虚拟机迁移到其它低负荷服务器上,保证集群资源池内各服务器的负载均衡。

DPM指周期性检测集群物理服务器的CPU和内存使用率,如果发现集群负载较低(低过阈值),表明集群内所有服务器整体工作量不大,则可以将部分低负荷服务器空出然后下电,后续集群负载升上来再重新启动这些服务器,这是为了达到节能减排的目的。

 

4.各类常见的虚拟化技术汇总

相信通过之前章节的讲述,大家对于虚拟化技术基本已经很了解了,包括具体的计算资源虚拟化方案(CPU虚拟化,内存虚拟化等)的原理,但是不同厂家开发设计的具体计算虚拟化技术方案之间实际还是有区别的,接下来就让我们一起看看吧。

目前常见的虚拟化技术,主要分为闭源(厂家私有)和开源两类虚拟化技术方案,汇总如下:

 

4.1XEN虚拟化技术(Type1-Hypervisor)

XEN是由剑桥大学计算机实验室开发的一个开源项目,支持多种底层硬件平台(包括x86,x86-64,ARM等),并支持多种上层客户操作系统(包括Linux,Windows,FreeBSD等)。

XEN包含三种基本组件:

Hypervisor,Domain0和DomainU。

Hypervisor是虚拟化层,这个之前提到多次了,Domain0是管理员,DomainU是虚拟机。

Domain0作为管理员,管理其它所有虚拟机(DomainU)。

比如虚拟机想要访问I/O设备,需要经前端驱动调动Domain0的后端驱动,再由Domain0访问I/O设备,这部分工作原理之前已经有详细描述,这里不再赘述了。

值得一提的是,XEN既可以支持半虚拟化方案(客户操作系统需要修改),也支持全虚拟化方案(客户操作系统不需要修改),这一点还是很强大的。

 

4.2KVM虚拟化技术(Type2-Hypervisor)

KVM是基于Linux内核的开源虚拟化解决方案,从Linux内核版本2.6.20开始,KVM即被融入到Linux内核中,随Linux内核版本一同开发维护,成为Linux系统的重要模块之一。

KVM本身只提供CPU虚拟化和内存虚拟化等部分功能,而其它设备的虚拟化(比如I/O设备虚拟化),以及虚拟机的管理则需要QEMU完成,KVM和QEMU相结合提供完整的虚拟化解决方案。

KVM需要运行在Linux系统(宿主操作系统)上,这里的宿主操作系统HostOS运行在特权级别0,而KVM创建的虚拟机(客户操作系统)运行在KVMHypervisor之上,这里的客户操作系统GuestOS运行在特权级别1。

如果虚拟机想要执行一些敏感指令,就会触发“中断-陷入”机制,这部分工作原理,之前已经有详细描述,具体参考前文。

4.3ESXi虚拟化技术(Type1-Hypervisor)

ESXi是VMware旗舰级Hypervisor虚拟化产品,属于Type1-Hypervisor,直接运行在底层硬件之上,在业界拥有较高的市场占有率,不过ESXi是VMware私有的闭源虚拟化技术。

 

4.4Hyper-V虚拟化技术(Type1-Hypervisor)

Hyper-V是Microsoft提供的虚拟化解决方案,它使用术语分区(而不是虚拟机)来表示隔离环境,使用父分区来管理其它子分区,这一点和XEN方案很像(使用Domain0来管理其它DomainU)也是属于Type1-Hypervisor,可直接运行在底层硬件之上。

除了上述方案外其实还有很多其它虚拟化方案,但整体看来,目前就上述四类虚拟化方案使用率和市占率都比较高,其中XEN和KVM是开源方案,而ESXi和Hyper-V是闭源方案。

此外,只有KVM是Type2-Hypervisor需要运行在Linux系统上,其它均为Type1-Hypervisor,可以直接运行在底层硬件上。

本篇文章在上一篇文章大致讲述计算虚拟化概念与分类后,进一步深入剖析了具体的计算虚拟化技术细节,包括如何实现具体的CPU虚拟化、内存虚拟化和I/O资源虚拟化等。

经过这两篇文章的讲述,相信大家对于云计算中心,最重要的组件计算虚拟化,有一个全面深入的认知与了解。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2