- 云计算平台管理与应用
- 肖伟主编
- 4274字
- 2025-02-17 19:53:50
1.4 云计算关键技术
1.4.1 虚拟化技术
虚拟化(Virtualization)是指通过虚拟化技术将一台物理计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率,如图1-3所示。
虚拟化技术最早出现在20世纪60年代的IBM大型机系统,在70年代的System 370系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM)的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机(Virtual Machine)实例。随着近年多核系统、群集、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了IT成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。

图1-3 虚拟化技术示意图
虚拟化使用软件的方法重新划分 IT资源,可以实现 IT资源的动态分配、灵活调度、跨域共享,提高 IT资源利用率,使 IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这要取决他们所处的环境。在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。例如对物理内存的抽象,产生了虚拟内存技术,使得应用程序认为其自身拥有连续可用的地址空间(Address Space),而实际上,应用程序的代码和数据可能是被分隔成多个碎片页或段),甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。
虚拟化技术主要分为以下几个大类。
● 平台虚拟化(Platform Virtualization),针对计算机和操作系统的虚拟化。
● 资源虚拟化(Resource Virtualization),针对特定的系统资源的虚拟化,例如内存、存储、网络资源等。
● 应用程序虚拟化(Application Virtualization),包括仿真、模拟、解释技术等。
通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为Virtual Machine Monitor或Hypervisor),隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。虚拟机中运行的操作系统被称为客户机操作系统(Guest OS),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如 VMware 的 ESX 产品)。运行虚拟机的真实系统通常称之为主机系统。
平台虚拟化技术又可以细分为以下几个子类。
(1)全虚拟化(Full Virtualization)。
全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其他系统软件完全不做任何修改就可以在虚拟机中运行。操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。全虚拟化VMM(虚拟机监控器)以完整模拟硬件的方式提供全部接口(同时还必须模拟特权指令的执行过程)。举例而言,x86体系结构中,对于操作系统切换进程页表的操作,真实硬件通过提供一个特权CR3 寄存器来实现该接口,操作系统只需执行“mov pgtable,%%cr3”汇编指令即可。全虚拟化 VMM 必须完整地模拟该接口执行的全过程。如果硬件不提供虚拟化的特殊支持,那么这个模拟过程将会十分复杂。一般而言,VMM必须运行在最高优先级来完全控制主机系统,而Guest OS(客户操作系统)需要降级运行,不能执行特权操作。当Guest OS执行前面的特权汇编指令时,主机系统产生常规保护异常(General Protection Exception),执行控制权重新从Guest OS转到VMM 手中。VMM 事先分配一个变量作为影子CR3寄存器给Guest OS,将pgtable代表的客户机物理地址(Guest Physical Address)填入影子CR3寄存器,然后VMM还需要pgtable 翻译成主机物理地址(Host Physical Address)并填入物理CR3寄存器,最后返回到Guest OS中。随后VMM还将处理复杂的Guest OS缺页异常(Page Fault)。比较著名的全虚拟化VMM有Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac和QEMU。
(2)超虚拟化(Paravirtualization)。
这是一种修改Guest OS部分访问特权状态的代码以便直接与VMM交互的技术。在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过 Hypercall(VMM提供给Guest OS的直接调用,与系统调用类似)的方式来提供。例如,Guest OS 把切换页表的代码修改为调用 Hypercall 来直接完成修改影子 CR3寄存器和翻译地址的工作。由于不需要产生额外的异常和模拟部分硬件执行流程,超虚拟化可以大幅度提高性能,比较著名的VMM有Denali、Xen。
(3)硬件辅助虚拟化(Hardware Assisted Virtualization)。
硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。例如有了Intel-VT(Intel公司的虚拟化技术)的支持,Guest OS和VMM的执行环境自动地完全隔离开来,Guest OS有自己的“全套寄存器”,可以直接运行在最高级别。因此在上面的例子中,Guest OS能够执行修改页表的汇编指令。Intel-VT和AMD-V(AMD公司的虚拟化技术)是目前x86体系结构上可用的两种硬件辅助虚拟化技术。
(4)部分虚拟化(Partial Virtualization)。
VMM只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其他程序可能也需要进行修改。在历史上,部分虚拟化是通往全虚拟化道路上的重要里程碑,最早出现在第一代的分时系统CTSS和IBM M44/44X实验性的分页系统中。
(5)操作系统级虚拟化(Operating System Level Virtualization)。
在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行,因此内核或应用程序的缺陷可能影响其他进程。操作系统级虚拟化是一种在服务器操作系统中使用的轻量级的虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程,不同实例中的进程完全不了解对方的存在。比较著名的有 Solaris Container(容器),FreeBSD Jail(FreeBSD操作系统层虚拟化技术)和OpenVZ(一种基于Linux内核和作业系统的操作系统级虚拟化技术)等。
这种分类并不是绝对的,一个优秀的虚拟化软件往往融合了多项技术。例如 VMware Workstation 是一个著名的全虚拟化的 VMM,但是它使用了一种被称为动态二进制翻译的技术把对特权状态的访问转换成对影子状态的操作,从而避免了低效的Trap-And-Emulate的处理方式,这与超虚拟化相似,只不过超虚拟化是静态地修改程序代码。对于超虚拟化而言,如果能利用硬件特性,那么虚拟机的管理将会大大简化,同时还能保持较高的性能。
1.4.2 分布式海量数据存储
云存储是在云计算概念上延伸和发展出来的一个新的概念,是指通过群集应用、网格技术或分布式文件系统等功能,将网络中大量不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。
云存储中的存储设备数量庞大且分布在不同地域,如何实现不同厂商、不同型号甚至于不同类型(如FC存储和IP存储)的多台设备之间的逻辑卷管理、存储虚拟化管理和多链路冗余管理将会是一个巨大的难题,这个问题得不到解决,存储设备就会是整个云存储系统的性能瓶颈,结构上也无法形成一个整体,而且还会带来后期容量和性能扩展难等问题。
云存储中的存储设备数量庞大、分布地域广造成的另外一个问题就是存储设备运营管理问题。虽然这些问题对云存储的使用者来讲根本不需要关心,但对于云存储的运营单位来讲,却必须要通过切实可行和有效的手段来解决集中管理难、状态监控难、故障维护难、人力成本高等问题。因此,云存储必须要具有一个高效的类似网络管理软件的集中管理平台,可实现云存储系统中设有存储设备、服务器和网络设备的集中管理和状态监控。
1.4.3 海量数据管理技术
为保证高可用、高可靠和经济性,云计算采用分布式存储的方式来存储数据,采用冗余存储的方式来保证存储数据的可靠性,即为同一份数据存储多个副本。
另外,云计算系统需要同时满足大量用户的需求,并行地为大量用户提供服务。因此,云计算的数据存储技术必须具有高吞吐率和高传输率的特点。
云计算系统由大量服务器组成,同时为大量用户服务,因此云计算系统采用分布式存储的方式存储数据,用冗余存储的方式保证数据的可靠性。云计算系统中广泛使用的数据存储系统是Google的GFS和Hadoop团队开发的GFS的开源实现HDFS(Hadoop分布式文件系统)。
GFS即Google文件系统(Google File System),是一个可扩展的分布式文件系统,用于大型的、分布式的对大量数据进行访问的应用。GFS 的设计思想不同于传统的文件系统,是针对大规模数据处理和Google应用特性而设计的。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。
云计算的数据存储技术未来的发展将集中在超大规模的数据存储、数据加密和安全性保障以及继续提高I/O速率等方面。
在GFS文件系统中,采用冗余存储的方式来保证数据的可靠性。每份数据在系统中保存3个以上的备份。为了保证数据的一致性,对于数据的所有修改需要在所有的备份上进行,并用版本号的方式来确保所有备份处于一致的状态。
当然,云计算的数据存储技术并不仅仅只是 GFS,其他 IT厂商,包括微软、Hadoop开发团队也在开发相应的数据管理工具。其本质是一种海量数据存储管理技术,以及与之相关的虚拟化技术,对上层屏蔽具体的物理存储器的位置、信息等。快速的数据定位、数据安全性、数据可靠性及底层设备存储数据量的均衡等都密切相关。
1.4.4 并行编程技术
并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。并行计算系统既可以是专门设计的、含有多个处理器的超级计算机,也可以是以某种方式互连的若干台独立计算机构成的群集。通过并行计算群集完成数据的处理,再将处理的结果返回给用户。
并行计算技术是云计算最具挑战性的核心之一,多核处理器增加了并行的层次结构和并行程序开发的难度,当前尚无有效的并行计算解决方案。可扩展性是并行计算的关键技术之一,将来的很多并行应用必须能够有效扩展到成千上万个处理器上,必须能随着用户需求的变化和系统规模的增大进行有效扩展,这对开发者是一个巨大的挑战,短期内很难开发出成熟的产品。
互联网上的信息呈指数级增长,网络应用需要处理信息的规模越来越大。云计算上的编程模型必须是简单、高效,具备高可用性的。这样,云计算平台上的用户才能更轻松地享受云服务,云开发者能利用这种编程模型迅速地研发云平台上相关应用程序。这种编程模型应该具备的功能是:保证后台的并行处理和任务调度对用户和云开发人员透明,从而使得他们能更好地利用云平台的资源。分布式系统和并行编程模型能够支持网络上大规模数据处理和网络计算,其发展对云计算的推广具有极大的推动作用,为发挥GFS群集的计算能力,Google提出了 Map Reduce(映射&归纳)并行编程模型。目前,云计算上的并行编程模型均基于Map Reduce,编程模型的适用性方面还存在一定局限性,需要进一步研究和完善。