虚拟化与云计算

虚拟化

  虚拟化指对计算资源进行抽象的一个广义概念。虚拟化对上层应用或用户隐藏了计算资源的底层属性。它既包括使单个的资源(比如一个服务器,一个操作系统,一个应用程序,一个存储设备)划分成多个虚拟资源,也包括将多个资源(比如存储设备或服务器)整合成一个虚拟资源。

  虚拟化技术是指实现虚拟化的具体的技术性手段和方法的集合性概念。虚拟化技术根据对象可以分成存储虚拟化、计算虚拟化、网络虚拟化等。计算虚拟化可以分为操作系统级虚拟化,应用程序级,和虚拟机管理器。虚拟机管理器分为宿主虚拟机和客户虚拟机。

虚拟化技术原理

  在操作系统中加入一个虚拟化层,一种位于物理机和操作系统之间的软件,允许多个操作系统共享一套基础硬件,也叫虚拟机监视器(Virtual Machine Monitor,即VMM)。该虚拟化层可以对主机的物理硬件资源(包括物理CPU、内存、磁盘、网卡、显卡等)进行封装和隔离,将其抽象为另一种形式的逻辑资源,然后提供给虚拟机使用。本质上,虚拟化层是联系主机和虚拟机的一个中间件。

  虚拟机一般称为GuestOS(客户机),作为GuestOS载体的物理主机称为HostOS(宿主机)。

虚拟化技术的特点

  • 同质:虚拟机的本质与物理机的本质相同。例如,二者CPU的ISA(指令集架构 Instruction Set Architecture)是相同的。

  • 高效:虚拟机的性能与物理机接近,在虚拟机上执行的大多数指令有直接在硬件上执行的权限和能力,只有少数的敏感指令会由VMM来处理。

  • 资源可控:VMM对物理机和虚拟机的资源都是绝对可控的。

  • 移植方便:如果物理主机发生故障或者因为其他原因需要停机,虚拟机可以迅速移植到其他物理主机上,从而确保生产或者服务不会停止;物理主机故障修复后,还可以迅速移植回去,从而充分利用硬件资源。

虚拟化的实现层次

  一般而言,CPU都可以分为用户态和内核态两种基本状态,而X86 CPU更是可以细分为Ring3~0四种状态(如图)。

图片摘自http://www.cnblogs.com/pannengzhi/p/5790350.html
  1. Ring1和Ring2是驱动层,不涉及应用程序,与虚拟化的实现关系不大。
  2. Ring3用户态(User Mode):所有用户程序都运行在用户态,运行的代码受CPU的检查。程序调用硬件设备时,CPU通过专用接口调用核心态代码,然后对硬件设备进行操作。如果应用程序直接调用硬件设备,宿主机操作系统捕捉并触发异常报告。
  3. Ring0核心态(Kernel Mode):宿主机操作系统内核运行的模式,运行在核心态的代码可以无限制地对系统内存、设备驱动程序、网卡接口、显卡接口等外围设备进行访问。

虚拟化实现方式

全虚拟化(Full virtualization):

  GuestOS可直接在VMM上运行而不需要对其本身做任何修改。全虚拟化的GuestOS具有完全的物理机特性。

  典型的全虚拟化软件有VMWare、Hyper-V、KVM-X86(复杂指令集)等。

半虚拟化(Paravirtualization):

  半虚拟化需要GuestOS协助的虚拟化技术,因为在半虚拟化VMM中运行的GuestOS内核都经过了特别的修改,修改的主要是GuestOS内核指令集中包括敏感指令在内的内核态指令,从而高效地避免执行错误。

  典型的半虚拟化软件如Xen、KVM-PowerPC(简易指令集)等。

  除修改GuestOS内核以外,半虚拟化还有另一种实现方式,即在每一个GuestOS中安装特定的半虚拟化软件,如VMTools、RHEVTools等。

硬件辅助虚拟化(HVM)

  Intel提出并开发了由CPU直接支持的虚拟化技术,该技术引入了新的CPU运行模式和新的指令集,使VMM和GuestOS运行在不同的模式之下(VMM运行在Ring0之下的根模式;GuestOS运行在Ring0的非根模式),GuestOS运行于受控模式,其内核指令集中的敏感指令会全部陷入VMM,由VMM进行模拟。

  CPU硬件辅助虚拟化技术解决了部分非内核态敏感指令的陷入模拟难题,模式切换时上下文的保存恢复工作也由硬件来完成,这样就大大提高了陷入模拟时上下文切换的效率。

目前,硬件辅助虚拟化技术的主要分类如下:

  • Intel VT-x:Intel的CPU硬件辅助虚拟化技术,包括IntelVTFlexPriority(Intel灵活任务优先级)、IntelVTFlexMigration(Intel虚拟化灵活迁移技术)和ExtendedPageTables(IntelVT扩展页表)三大功能。

  • AMD-V:AMD的CPU硬件辅助虚拟化技术,是针对X86处理器系统架构开发的一组硬件扩展和硬件辅助虚拟化技术。

内存虚拟化

  内存虚拟化的映射(内存地址转换)涉及三类地址:

  • 虚拟地址(VA):GuestOS提供给其应用程序使用的线性地址空间。
  • 物理地址(PA):经VMM抽象的,虚拟机看到的伪物理地址。
  • 机器地址(MA):真实的机器物理地址,即地址总线上出现的地址信号。

  宿主机到虚拟机的内存地址映射关系如下:

  • GuestOS:GuestOS负责VA到PA的映射。
  • VMM:VMM负责PA到MA的映射。
总线虚拟化:

  总线虚拟化技术可以将一块网卡分给若干个GuestOS使用,每个虚拟机分得网卡性能的1/N,这种技术直接把物理设备划分给GuestOS,无须经过VMM,性能高,接近真机。

容器虚拟化:

  容器虚拟化是一种不同于虚拟机方式的虚拟化方法。容器虚拟化可以为应用程序提供隔离的运行空间,且一个容器内的变动不会影响其他容器。容器比虚拟机更轻量,效率更高,部署也更加快捷方便,但容器是将应用打包并以进程的形式运行在操作系统上的,应用和应用之间并非完全隔离,这是容器虚拟化的一个缺陷。

云计算

  云计算(Cloud Computing)是一种新兴的商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。通过服务器集群,包括计算服务器、存储服务器、宽带资源等虚拟计算资源的自我维护和管理,降低整个系统的单位处理能力成本。

  云计算(Cloud Computing)是一种基于互联网的相关服务的增加、使用和交付模式,它依赖于虚拟化,通常会涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。通过虚拟化技术,把服务器等硬件资源构建成一个虚拟资源池,从而实现共同计算和共享资源,就实现了云计算。

云计算的实现模式

IaaS–基础设施即服务:

  由一些硬件、网络和操作系统资源集成。此模式下,用户不必自行采购硬件设备,也不用担心安装OS、配置防火墙、网络升级、更换硬件等事务,只需选择自己所需的硬件配置,如操作系统、带宽等,就可以使用相应的硬件资源。

PaaS–平台即服务:

  PaaS在IaaS的基础上加入了中间件和数据库资源,用户选择PaaS时只要考虑习惯使用什么语言的数据库,然后关心程序的开发和部署即可。

SaaS–软件即服务:

  在SaaS模式下,用户使用的软件并不需自己安装,也不用自己维护,而是只需要登录即可使用。

FaaS

  可以广义的理解为功能服务化,也可以解释为函数服务化

见https://aws.amazon.com/cn/blogs/china/iaas-faas-serverless/

云平台的主要特性

可用性高:

  当一台主机的虚拟化层出现故障时,云平台自动将上面的虚拟机迁移到另一虚拟化层上。控制面板服务器离线时,虽然不能对虚拟机进行任何管理操作,但虚拟机依旧可以正常运行。

管理灵活:

  云平台具有高度的扩展性,可在云系统中任意添加和删除虚拟化层、数据存储设备和其他资源,如CPU和内存等。

用户管理方便:

  云平台为用户提供精细的控制选项,设置不同类型的用户和用户组,定制不同用户与用户组的访问和功能。

负载均衡:

  云平台的负载均衡功能,提高了应用程序的可用性和可扩展性。

安全可靠:

  基础设施的虚拟机之间完全隔离,各自访问自己的硬盘。存储虚拟机的服务器上安装有反欺骗防火墙。在控制面板中可以给用户设置不同的角色,并为其配置不同级别的访问权限。

计费功能完善:

  面向第三方的云平台有强大的计费功能,拥有完整的账单系统,支持多种货币类型,实现资源的计划使用和自动结算。

集成丰富的API:

云平台集成了多种应用软件接口,允许用户自行在云端进行应用开发。

支持移动接入:

  云平台一般都支持iPhone/Android应用,用户可以通过移动设备连接云系统,管理自己的云资源和在云中的操作

虚拟化与云计算

  虚拟化是云计算的关键技术之一,实现云计算必须使用虚拟化技术,实现资源的动态弹性分配。任何一个云计算管理平台,都是构建在虚拟化管理平台的基础之上的。

  虚拟化资源使用需要管理员进行管理和分配,云计算是用用户自助管理和使用。

  云计算完全解除了的软件和硬件耦合度,所有基础设施资源均虚拟化后通过资源池进行配额衡量,与硬件无关。虚拟化虽然实现了资源池化,但资源的分配仍旧需要与硬件存在一定程度上的关联。

------ end ------
0%