[在职软件工程]云计算基础教程
第一篇 基础篇
第一章 绪论
云计算的基本概念:
狭义的云计算:
广义的云计算:
云计算的基本特征:
IAAS:infrastructure as a service
PAAS:platform as a service
SAAS:software as a service
云计算的优势:
优点和缺点:
第二章 云计算架构以及标准化情况
第二篇 技术篇
第三章 云存储
云储存的结构模型
两种架构:
块存储,文件存储
第四章 云服务
第五章 虚拟化
第六章 云桌面
第七章 云安全
----------------------------------------------------------------------------
云计算原理与实践(http://book.2cto.com/201308/30081.html)
- 第2章 云计算核心技术
虚拟化的分类方式有很多。从虚拟化的目的来看,虚拟化主要分为三类:平台虚拟化、资源虚拟化和应用程序虚拟化。
平台虚拟化(Platform Virtualization),它是整个计算环境和运行平台的虚拟化,是计算机和操作系统级别的虚拟化,包括了服务器虚拟化和桌面虚拟化。服务器虚拟化可以将一台物理服务器虚拟成若干服务器使用。桌面虚拟化将桌面环境与其使用的终端设备解耦合,服务器上存放的是每个用户的完整桌面环境。用户可以在任何地方登录到相同的桌面,而对于公司内部,便于统一管理用户的桌面。服务器虚拟化主要通过实现服务器的主要资源虚拟化,如CPU虚拟化、内存虚拟化和I/O接口虚拟化来实现的。
资源虚拟化(Resource Virtualization),它是对服务器的资源进行的虚拟化,主要包括:内存虚拟化、存储虚拟化、网络虚拟化等。内存虚拟化是将服务器的内存进行虚拟化,形成多个独立的内存块分配给虚拟机使用。存储虚拟化是将整个云系统的存储资源进行整合管理,为用户提供一个统一的存储空间。网络虚拟化是在底层物理网络和网络用户之间增加一个抽象层,该抽象层向下对物理网络资源进行分割,向上提供虚拟网络。网络虚拟化根据虚拟化的网络类型不同一般包括虚拟局域网和虚拟专用网,从而实现整个网络环境的虚拟化。
应用程序虚拟化(Application Virtualization),它是将应用程序从对底层的操作系统和硬件的依赖中抽象出来,从而解除应用程序与操作系统和硬件之间的耦合关系。应用程序虚拟化包括模拟、仿真、解释技术等。代表产品有Microsoft Application Virtualization(App-V)、VMware ThinApp、Symantec Software Virtualization Solution(SVS)等。
平台虚拟化技术又可以细分为以下几大类:
(1)完全虚拟化
完全虚拟化(Full Virtualization)是指虚拟机通过虚拟化模拟了完整的底层硬件运行环境,包括CPU、内存、磁盘、网卡等。在客户机操作系统和原始硬件间一些受保护的特权指令由Hypervisor(虚拟机管理程序)来捕获和处理,使客户操作系统无需修改就能运行,其结构如图2-1所示。
完全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源。完全虚拟化的最大优点是操作系统没有经过任何修改。它的唯一限制是操作系统必须能够支持底层硬件。代表产品有VirtualBox、KVM(Kernel-based Virtual Machine)、VMware Workstation 、VMware ESX Server和Virtual PC等。
(2)半虚拟化
半虚拟化(Paravirtualization)技术也叫超虚拟化,与完全虚拟化比较类似,都是通过虚拟机管理程序来访问底层硬件。不同的是半虚拟化虽然完全模拟整个底层硬件,但需要修改客户机操作系统部分访问特权状态的代码,以便能够直接与虚拟机监视器(Virtual Machine Monitor,VMM)交互。
半虚拟化与完全虚拟化相比,不需要虚拟机管理程序编译和捕获特权指令,因此运行速度更快。缺点是需要修改客户机操作系统,用户使用比较困难。代表产品有Xen、Hyper-V等。
(3)部分虚拟化
部分虚拟化(Partial Virtualization)是指Hypervisor只模拟了部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其他程序可能也需要进行修改。
(4)硬件辅助虚拟化
硬件辅助虚拟化(Hardware Assisted Virtualization)是指借助硬件(主要是主机处理器)的帮助来实现高效的完全虚拟化,目标仍是完全虚拟化。借助硬件帮助创建虚拟机,监视并允许客户机操作系统独立运行。
在完全虚拟化和半虚拟化中,特权指令需要通过软件进行处理,而硬件的处理速度比软件快很多,因此可以用硬件来将大量的虚拟化逻辑从软件中抽离,极大简化了虚拟化产品架构。硬件辅助虚拟化技术往往不是单独使用,而是配合完全虚拟化和半虚拟化进行虚拟优化,起到辅助作用。现在市面的很多完全虚拟化和半虚拟化产品大多支持硬件辅助虚拟化,如VirtualBox、基于内核的虚拟机(KVM)、VMware Workstation、VMware ESX Server、Xen、VT-x、AMD-V等。
(5)操作系统级虚拟化
操作系统级虚拟化(Operating System Level Virtualization)是一种在服务器操作系统中使用的轻量级虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程,不同实例中的进程完全不了解对方的存在。
使用操作系统级虚拟化,所有虚拟服务器必须运行同一操作系统(不过每个实例有各自的应用程序和用户账户),灵活性较差,但是操作系统级虚拟化只需要进行少量修改,实现成本较低且运行性能不错
目前使用较多的是服务器虚拟化,要实现服务器虚拟化必须实现服务器三大硬件资源的虚拟化。同时为了进行更好的动态资源管理,还必须实现服务器的动态迁移。下面介绍服务器三大硬件资源虚拟化和实时迁移技术。
1.CPU虚拟化
CPU虚拟化就是通过抽象把单个物理CPU模拟成多个CPU并行,允许一台服务器上同时运行多个操作系统,多个操作系统相互独立,应用程序都可以在相互独立的操作系统环境内运行而互不影响。在任意一个时刻单个物理CPU内只能运行一个虚拟的CPU指令。CPU虚拟化的目的是提高CPU的性能和利用率。虚拟CPU的运行相互独立,互不干扰。多个虚拟机同时提供服务,使CPU长时间处于忙碌状态,大大提高了CPU的利用率。
x86体系结构下CPU虚拟化可以用全虚拟化、半虚拟化或硬件辅助虚拟化实现。全虚拟化主要是使用二进制代码翻译技术和特权级压缩技术。二进制代码翻译技术是在虚拟机运行时,扫描并修改客户机的二进制代码将那些难以虚拟化的指令转化为支持虚拟化的指令。特权级压缩技术是让客户机和虚拟机管理程序运行在不同的特权级下。由于特权级不同,虚拟机管理程序可以截获一部分在客户机上执行的特权指令,并对其虚拟化。半虚拟化与全虚拟化不同,也采用特权级压缩技术,同时需修改客户机操作系统代码,将特权指令相关操作转换为对虚拟化管理程序(Hypervisor)的超级调用(Hypercall)来执行。全虚拟化和半虚拟化都是纯软件的CPU虚拟化,未修改x86处理器本身,中间开销较大。硬件辅助虚拟化使CPU加入新的指令集和运行模式来让虚拟机管理程序和客户机操作系统分别运行在合适的模式下,完成与CPU虚拟化相关的功能。目前两大处理器生产商Intel和AMD都推出了硬件辅助虚拟化产品,如Intel VT技术和AMD-V技术都是CPU硬件辅助虚拟化技术。
2.内存虚拟化
内存虚拟化是把物理的内存交给虚拟机管理程序统一管理,通常采用分块将其包装成多个虚拟的物理内存分配给若干个虚拟机使用,使每个虚拟机拥有各自独立的内存空间,互不干扰。虚拟机管理程序维护客户机物理地址到宿主机物理地址的映射关系。内存虚拟化的目标是做好虚拟机内存空间之间的隔离,分块共享的思想使整个虚拟机都认为自己拥有了整个内存地址。
x86体系结构下内存虚拟化同样可以用全虚拟化、半虚拟化或硬件辅助虚拟化实现。全虚拟化采用影子页表法(Shadow Page Table)技术,影子页表技术即客户机操作系统的内存页表记录的内存逻辑地址到客户机操作系统看到的“物理”地址映射关系,同时虚拟机管理程序维护一张对应的页表,记录客户机操作系统看到的“物理”地址到真实物理机的机器内存地址映射关系。虚拟机管理程序维护的页表随着客户机操作系统的页表变化而变化,故称为影子页表。当有内存访问时,虚拟机管理程序将影子页表交给内存管理单元(Memory Management Unit,MMU)进行地址转换,获取到内存的真实物理地址。采用影子页表技术代表产品有KVM、VMware Workstation、VMware ESX Server。半虚拟化采用页表写入技术,当客户机操作系统创建一个页表时,须向虚拟机管理程序注册该页表。之后在客户机运行的时候,虚拟机管理程序剥夺客户机操作系统的写权限,并不断管理和维护该页表。当客户机操作系统上的程序访问内存时,可以直接在自己的页表内获得真实的机器地址。Xen是采用页表写入技术的代表。硬件辅助虚拟化采用扩展页表(Extended Page Table,EPT)技术,扩展页表技术通过使用硬件使其在原有的页表基础上增加一个页表,增加的页表称为扩展页表。通过这个页表,客户机操作系统上的程序访问内存时,可以直接将客户机的内存地址翻译为真实的机器地址,从而减轻整个内存虚拟化带来的开销。
3.I/O接口虚拟化
I/O接口虚拟化即把物理机的真实设备统一管理,包装成多个虚拟设备分配给若干个虚拟机使用,响应每个虚拟机的设备请求和I/O请求。I/O接口虚拟化包括虚拟网卡和虚拟交换机。I/O接口虚拟化的目标不仅是让虚拟机能准确、快速访问到它们所需的I/O资源,而且要做好它们之间的隔离工作,避免出现混乱,更重要的是在提高I/O资源利用率的同时减轻由虚拟化带来的开销。
x86体系结构下I/O接口虚拟化同样可以用全虚拟化、半虚拟化或硬件辅助虚拟化实现。全虚拟化是完全模拟I/O设备来实现的。半虚拟化是采用前端/后端模拟,Xen就是采用该方法。硬件辅助虚拟化是采用直接划分,直接将物理设备分配给某个客户机操作系统,由客户机操作系统直接访问I/O 设备(不通过虚拟机管理程序)。目前使用硬件辅助虚拟化I/O技术的主要有Intel 的VT-d、AMD的IOMMU、 PCI-SIG的IOV(I/O Virtualization)等。
4.实时迁移技术
实时迁移(Live Migration)技术是指在保证虚拟机上服务正常运行的同时,将虚拟机的运行状态完整快速地从源主机硬件平台迁移到新主机上。移动过程用户不会察觉,虚拟机只需要非常短暂的停机时间。
实时迁移过程需要虚拟机管理程序协助,即需要源主机和目的主机上的虚拟机管理程序相互配合,完成虚拟机运行状态的完整复制。复制开始前,目的主机要清理资源,确保有足够的资源空间接收这个虚拟机。复制开始后,内存页面不断地从源主机复制到目的主机,复制过程对源主机的运行不产生影响。当复制完成后,目的虚拟机运行,源虚拟机终止,实时迁移过程完成。
实时迁移可以用于排除危险,资源维护,资源优化。当一个虚拟机资源紧张时,可以实时迁移到另一台资源较多的主机上,且迁移过程不影响虚拟机的运行。在一个虚拟机需要维护时,可暂时把虚拟机迁移到另一台主机上,维护后可再迁移回来,整个过程用户感觉不到任何变化。把虚拟机从一个资源紧张的主机上迁移到资源充裕的主机上,便于虚拟机整合,资源优化。
目前使用较多的两种实时迁移技术是VMware的vMotion技术和Xen的Live Migration技术。Xen的Live Migration技术采用预复制迁移,相比简单的停止复制,迁移过程所需要的虚拟机停机时间大大缩短。
2.3.2 数据存储的几种模式
海量的数据存储是如今计算机存储研究的热点和难点。海量数据存储面临着难管理、不易扩展、访问效率较低、安全性等问题。因此适合海量数据存储的理想模式必须能够具有访问高效率、易扩展性、跨平台性好、高可靠性、高安全性等的数据共享能力。
数据存储模式分类如图2-3所示。
数据存储根据服务器类型分为封闭系统的存储和开放系统的存储。封闭系统主要是指大型机,不对外开放,自己独立地运行。而开放系统一般指基于包括Windows、Linux、Mac OS等操作系统的小型工作站,不同的工作站点间通过网络连接起来,协同合作实现复杂的计算。开放系统的存储分为:内置存储和外挂存储。内置存储是指固化在硬件设备上的存储。外挂存储是指通过总线连接到服务器的存储。开放系统的外挂存储根据连接的方式又分为:直连式存储 (Direct-Attached Storage,DAS)和网络化存储(Fabric-Attached Storage,FAS)。直连式存储往往是通过SCSI连接,网络化存储通过网线连接。网络化存储根据传输协议的不同又分为:网络附加存储(Network-Attached Storage,NAS)和存储区域网络(Storage Area Network,SAN)。
NAS是将存储设备作为存储系统的附加设备,通过网络连接到系统中。网络附加存储是一个相对于普通服务器只少了大量计算功能的专用文件服务器,因此它的功能很完备。它是一种将分布、独立的数据整合为大型、集中化管理的数据中心,以便于对不同主机和应用服务器进行访问的技术。NAS是一种文件级的网络存储模式,结构如图2-4所示。NAS拥有自己的文件系统,一般通过网络文件系统(Network File System,NFS)或通用因特网文件系统(Common Internet File System,CIFS)对外提供文件访问服务。NAS 提供统一的存储接口,所有的存储设备连接到现有网络的网络拓扑结构相同,因此NAS的共享性很好。NAS不仅仅是作为存储设备,更多的是作为数据备份和恢复的设备。
SAN是一种快速的专用子网,子网内部是通过光纤交换机、光纤路由器、光纤集线器等网络连接设备,将磁盘阵列、磁带等存储设备与相关服务器连接起来的。SAN是一种块级的网络存储模式,结构如图2-5所示。存储区域网络根据连接的方式分为光纤通道(Fiber Channel,FC)SAN和IP SAN。FC SAN是以光纤通道作为传输介质,克服了传统上与小型计算机系统接口(Small Computer System Interface,SCSI)相连的线缆限制,极大地拓展了服务器和存储之间的距离,从而增加了更多连接的可能性。但是FC SAN的传输距离通常不超过50公里。即使这样,对于局域网来讲,一般足够了。IP SAN技术是一种在传统IP以太网上架构一个SAN存储网络,通过IP以太网把服务器与存储设备连接起来的SAN存储技术。IP SAN技术采用的是集中存储方式,大大提高了存储空间的利用率。
NAS的优点是跨平台性非常好,在不同平台上实现数据共享非常方便,但是NAS 服务器位于客户端与存储设备中间,处于数据传输链路上,当服务的请求数激增时,位于中心的NAS 服务器处理能力将成为整个存储系统的I/O瓶颈,存储性能的瓶颈是NAS 未能在存储模式中独占鳌头的原因。相比而言,SAN具有高容量、高可靠性、快速传输等优点,同样SAN也有一个缺陷是跨平台性较差,由于没有统一的存储系统接口,数据共享不方便。鉴于NAS和SAN的优缺点,对象存储技术综合了NAS 和SAN 两种存储结构的优势,同时具有了NAS的共享数据优势和SAN的快速直接访问优势。对象存储技术提供基于对象的访问接口,对象更接近于人们的自然生活,更容易被人接受。
对象存储(Object-Based Storage,OBS) 一般由三部分组成: Client、MDS(Metadata Server)和对象存储设备(Object Storage Device,OSD),结构如图2-6所示。OBS是一种对象级的存储模式。Client 为客户端,是用户直接接触的部分,主要用来发送数据操作请求,包括数据的读写等;MDS为元数据服务器,是对象存储系统的基础,主要负责元数据的管理,并保证数据访问的一致性;OSD是对象存储系统的基础,是对象数据的存储设备。相比一般的存储设备磁盘,OSD类似于一个小型的计算机,拥有自己的处理器、内存、存储磁盘、网络接口等,主要功能是管理本地的对象(Object)。OSD是Object的集合。Object是对象存储的基本单元。每个Object包含两部分:文件的数据和数据属性集。数据的属性集记录数据的属性,这些属性可以由管理员自定义。数据的属性显示数据的特征,方便数据同步等操作。在传统的存储中,块设备需要记录每个存储数据块在设备上的位置,既需要占用一定的空间,管理又比较麻烦;对象存储中OSD具有一定的智能,Object维护自己的属性,大大简化了存储系统管理的复杂性,将管理任务分解,减轻了存储系统的管理压力,同时增加了灵活性。
虽然现在面向对象存储仍属于在研阶段,并没有市场化,但它更接近自然语言描述事物,相比其他存储技术,对象存储技术具有高性能优势、存储设备智能化、数据共享更容易、管理更方便、更好的安全性等优点。对象存储是数据存储技术的未来发展方向。