全部博文(370)
分类: 云计算
2011-04-11 23:38:55
云存储技术概述 |
李艳波 2009-12-27 |
一、概述 云计算和云存储是个热度很高的新名词。由于它是多种技术混合演进的结果,其成熟度较高,又有大公司推动,发展极为迅速。本文将简要介绍一下云计算、云存储的基本概念以及云存储的结构模型,最后介绍一下目前比较流行的几种云服务平台。 1.1云计算 云计算是是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经计算分析之后将处理结果回传给用户。通过云计算技术,网络服务提供者可以在数秒之内,处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大的网络服务。云计算系统的建设目标是将运行在PC上、或单个服务器上的独立的、个人化的运算迁移到一个数量庞大服务器“云”中,由这个云系统来负责处理用户的请求,并输出结果,它是一个以数据运算和处理为核心的系统。 1.2云存储 云存储(cloud storage)这个概念一经提出,就得到了众多厂商的支持和关注。云存储的概念与云计算类似,它是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。云存储的核心是应用软件与存储设备相结合,通过应用软件来实现存储设备向存储服务的转变,是一个以数据存储和管理为核心的云计算系统。 二、云存储的结构模型 与传统的存储设备相比,云存储不仅仅是一个硬件,而是一个网络设备、存储设备、服务器、应用软件、公用访问接口、接入网、和客户端程序等多个部分组成的复杂系统。各部分以存储设备为核心,通过应用软件来对外提供数据存储和业务访问服务。 云存储系统的结构模型由4层组成,如图1所示。 1)存储层 存储层是云存储最基础的部分。存储设备可以是FC光纤通道存储设备,可以是NAS和 iSCSI等IP存储设备,也可以是 SCSI或SAS等 DAS存储设备。云存储中的存储设备往往数量庞大且分布多不同地域,彼此之间通过广域网、互联网或者 FC光纤通道网络连接在一起。 存储设备之上是一个统一存储设备管理系统,可以实现存储设备的逻辑虚拟化管理、多链路冗余管理,以及硬件设备的状态监控和故障维护。 2)基础管理层: 基础管理层是云存储最核心的部分,也是云存储中最难以实现的部分。基础管理层通过集群、分布式文件系统和网格计算等技术,实现云存储中多个存储设备之间的协同工作,使多个的存储设备可以对外提供同一种服务,并提供更大更强更好的数据访问性能。 CDN内容分发系统、数据加密技术保证云存储中的数据不会被未授权的用户所访问,同时,通过各种数据备份和容灾技术和措施可以保证云存储中的数据不会丢失,保证云存储自身的安全和稳定。 3)应用接口层: 应用接口层是云存储最灵活多变的部分。不同的云存储运营单位可以根据实际业务类型,开发不同的应用服务接口,提供不同的应用服务。比如视频监控应用平台、IPTV和视频点播应用平台、网络硬盘引用平台,远程数据备份应用平台等。 4)访问层: 任何一个授权用户都可以通过标准的公用应用接口来登录云存储系统,享受云存储服务。云存储运营单位不同,云存储提供的访问类型和访问手段也不同。 图1 云存储结构模型 三、云服务平台 目前,业内企业针对云计算和云存储推出了很多种不同种类的云服务,微软、EMC、亚马逊、谷歌等就是代表,下面将简要介绍这几个企业的云服务平台产品。 3.1 微软——Windows Azure Windows Azure是微软基于云计算的操作系统,和Azure Services Platform一样,是微软“软件和服务”技术的名称,Windows Azure的主要目标是为开发者提供一个平台,帮助开发可运行在云服务器、数据中心、Web和PC上的应用程序。云计算的开发者能使用微软全球数据中心的储存、计算能力和网络基础服务。Azure服务平台包括了以下主要组件:Windows Azure;Microsoft SQL数据库服务,Microsoft .Net服务;用于分享、储存和同步文件的Live服务;针对商业的Microsoft SharePoint和Microsoft Dynamics CRM服务。 2008年10月27日,在洛杉矶举行的专业开发者大会PDC2008上,微软首席软件架构师Ray Ozzie宣布了微软的云计算战略以及云计算平台——Windows Azure。The Azure Services Platform (Azure)是一个互联网级的运行于微软数据中心系统上的云计算服务平台,它提供操作系统和可以单独或者一起使用的开发者服务。Azure是一种灵活和支持互操作的平台,它可以被用来创建云中运行的应用或者通过基于云的特性来加强现有应用。它开放式的架构给开发者提供了Web应用、互联设备的应用、个人电脑、服务器、或者提供最优在线复杂解决方案的选择。 Windows Azure以云技术为核心,提供了软件+服务的计算方法。它是Azure服务平台的基础。Azure用于帮助开发者开发可以跨越云端和专业数据中心的下一代应用程序,在PC、Web和手机等各种终端间创造完美的用户体验。 Azure能够将处于云端的开发者个人能力,同微软全球数据中心网络托管的服务,比如存储、计算和网络基础设施服务,紧密结合起来。这样,开发者就可以在“云端”和“客户端”同时部署应用,使得企业与用户都能共享资源。Ray Ozzie说道。“今天,无论对于开发社区还是对于微软来说,都是一个转折点。我们所提出的技术将改变原来的游戏规则,同时为Web开发者和企业开发者带来新的机遇。 微软会保证Azure服务平台自始至终的开放性和互操作性。企业的经营模式和用户从Web获取信息的体验将会因此改变。最重要的是,这些技术将使用户有能力决定,是将应用程序部署在以云计算为基础的互联网服务上,还是将其部署在客户端,或者根据实际需要将二者结合起来。 2.Windows Azure服务平台 Windows Azure服务平台包括5个主要部分:Windows Azure ,Live Services,Microsoft SQL Services,Microsoft.NET Services,Microsoft SharePoint Services & Dynamics CRM Services . (1)Windows Azure,用于服务托管,以及底层可扩展的存储,计算和网络的管理。 (2)Microsoft SQL Services,可以扩展Microsoft SQL Server应用到云中的能力。 (3)Microsoft .NET Services,使得可以便捷地创建基于云的松耦合的应用程序。另外还包含访问控制机制可以保卫你的程序安全。 (4)Live Services,提供了一种一致性的方法,处理用户数据和程序资源,使得用户可以在PC、手机、PC应用程序和Web网站上存储、共享、同步文档、照片、文件以及任何信息。 (5)Microsoft SharePoint Services and Microsoft Dynamics CRM Services,用于在云端提供针对业务内容、协作和快速开发的服务,建立更强的客户关系。 Azure 就是微软云计算所有服务的基础平台,从Live服务,到数据服务,到提供SharePoint 和Microsoft Dynamics CRM的空间服务。应用程序即可以运行在云中,也可以运行在本地系统,如下图所示: 3.Windows Azure 带来的好处 Azure服务平台的设计目标是用来帮开发者更容易地创建web和互联设备的应用程序。它提供了最大限度的灵活性、选择和使用现有技术连接用户和客户的控制。 (1)利于开发者过渡到云计算:世界上数以百万计的开发者使用.NET Framework和Visual Studio开发环境。利用Visual Studio相同的环境创建可以编写、测试和部署的云计算应用。 (2)快速获得结果:应用程序可以通过点击一个按钮就部署到Azure服务平台,变更相当简单,不需要停工修正,是个试验新想法的理想平台。 (3)想象并创建新的用户体验:Azure服务平台可以让你创建Web、手机、使用云计算的复杂应用。与 Live Services连接可以访问4亿Live用户,新的使用新方式与用户交流的机会。 (4)基于标准的兼容性:为了可以和第三方服务交互,服务平台支持工业标准协议,包括HTTP、REST、SOAP、 RSS,和 AtomPub.你可以方便地集成基于多种技术或者多平台的应用。 4.Windows Azure SDK开发工具 Azure服务平台使开发者能够在原有的技能、工具和技术(如微软的.NET Framework,Visual Studio等)的基础上,进一步提高应用程序开发的灵活性和有效性。开发者也可以选择其他的商业或者开源的开发工具或技术,然后通过Azure服务平台提供的通用Internet标准,比如HTTP、REST、WS-*和AtomPub来进行操作。 微软为我们提供了云计算服务Azure相关的开发工具包,包括一下三个组成部分: (1)Complete offline development environment, including computation and storage services (2)Complete command-line SDK tools and samples (3)Visual Studio add-in that enables local debugging Windows Azure SDK应运而生,对微软云计算感兴趣的程序员们可以适当关注. 微软的SDK(软件开发工具包)工具包运用Java和Ruby语言。这个工具包可使Java和Ruby开发者依托Azure平台应用.NET服务。不过,到目前为止,该工具包只允许Java和Ruby开发者在微软数据中心编写服务程序。官方下载地址:Windows Azure Software Development KIT (January 2009 CTP)。 3.2 EMC ATMOS EMC Atmos是第一套容量高达数千兆字节(petabyte,简称PB)的信息管理解决方案。Atmos能通过全球云存储(cloud storage)环境,协助客户将大量非结构化数据进行自动管理。凭借其全球集中化管理与自动化信息配置功能,可以使Web 2.0用户、互联网服务提供商、媒体与娱乐公司等安全地构建和实现云端信息管理服务。 Web 2.0用户正在创造越来越多的丰富应用,文件、影像、照片、音乐等信息可在全球范围共享。Web 2.0用户对信息管理服务提出了新需求,这正是“云优化存储”(cloud optimized storage,简称COS)面世的主要原因,COS也将成为今后全球信息基础架构的代名词。 EMC Atmos的领先优势在于信息配送与处理的能力,采用基于策略的管理系统来创建不同层级的云存储。例如,将常用的重要数据定义为“重要”,该类数据可进行多份复制,并存储于多个不同地点;而不常用的数据,复制份数与存储地方相对较少;不再使用的数据在压缩后,复制备份保存在更少的地方。同时,Atmos可以为非付费用户和付费用户创建不同的服务级别,付费用户创建副本更多,保存在全球范围内的多个站点,并确保更高的可靠性和更快的读取速度。 EMC Atmos内置数据压缩、重复数据删除功能,以及多客户共享与网络服务应用程序设计接口(API)功能。服务供应商通过EMC Atmos实现安全在线服务或其它模式的应用。媒体和娱乐公司也可以运用同样的功能来保存、发布、管理全球数字媒体资产。EMC Atmos是企业向客户提供优质服务的必备竞争利器,因为他们只要花费低廉的成本就能拥有PB级云存储环境。 国际数据公司(IDC)企业存储系统研究部副总裁Benjamin S. Woo表示:“在如今的数字世界中,数码照片、影像、流媒体等非结构化数字资产正在快速增长,其价值也不断提升。不同规模的企业和机构希望对这类资产善加运用,而新兴的云存储基础架构正是一套效率卓越的解决方案。云存储解决方案运用多项高度分布式资源(highly distributed resources)作为单一地区数据处理中心,使得信息能够自由流动,企业若将EMC Atmos这类新型云存储基础架构解决方案进行运用,将能够大大提升业务潜能和竞争力。” EMC Atmos的功能与特色包括: l EMC Atmos将强大的存储容量与管理策略相结合,随时随地自动分配数据。 l 结合功能强大的对象元数据与策略型数据管理功能,能有效进行数据配置服务。 l 包括复制、版本控制、压缩、重复数据删除、磁盘休眠等数据管理服务。 l 网络服务应用程序设计接口包括Rest和Soap,几乎所有应用程序都能轻松整合。 l 内含自动管理和修复功能,以及统一命名空间与浏览器管理工具。这些功能可大幅减少管理时间,实现任何地点轻松控制和管理。 l 多客户共享支持功能,可让同一基础架构执行多种应用程序,并被安全地分隔,这项功能最适合需要云存储解决方案的大型企业。 EMC Atmos云存储基础架构解决方案内含一套价格经济的高密度存储系统,目前Atmos推出三个版本,系统容量分别为120TB、240TB以及360TB。EMC公司云存储基础架构高级副总裁Mike Feinberg表示:“EMC身为企业级存储与信息管理系统的全球领导供应商,是唯一一家能提让云存储基础架构发挥强大功能,提供新一代云存储服务的公司。全球使用者创造的信息内容正以惊人的速度成长,信息基础架构解决方案同样需要不断创新发展,从而可以快速有效地管理数以PB级的信息。EMC公司正在见证信息革命,未来大型企业客户能够更加有效管理全球范围的数据信息,而崭新的云存储服务也正式开始了。” 3.3 亚马逊网络服务 马逊的云名为亚马逊网络服务(Amazon WebServices,下称AWS),目前主要由4块核心服务组成:简单存储服务(Simple StorageService,S3);弹性计算云(Elastic Compute Cloud,EC2);简单排列服务(Simple QueuingService)以及尚处于测试阶段的SimpleDB。换句话说,亚马逊现在提供的是可以通过网络访问的存储、计算机处理、信息排队和数据库管理系统接入式服务。下面将详细介绍一下主要部分简单存储服务和弹性计算云。 1、简单存储服务 Amazon Simple Storage Service (S3) 是一个公开的服务,使 Web 开发人员能够存储数字资产(如图片、视频、音乐和文档等),以便在应用程序中使用。使用S3时,它就像一个位于Internet 的机器,有一个包含数字资产的硬盘驱动。实际上,它涉及到许多机器(位于各个地理位置),其中包含数字资产(或者数字资产的某些部分)。Amazon 还处理所有复杂的服务请求,可以存储数据并检索数据。您只需要付少量的费用(大约每月 15 美分/GB)就可以在 Amazon 的服务器上存储数据,1 美元即可通过 Amazon 服务器传输数据。 Amazon 的S3服务没有重复开发,它公开了RESTful API,使您能够使用任何支持 HTTP通信的语言访问S3。JetS3t项目是一个开源Java库,可以抽象出使用S3的RESTful API的细节,将API公开为常见的Java方法和类。编写的代码越少越好,难道不是吗?充分利用其他人的成果也是不错的。在本文中您将看到,JetS3t 使S3和Java语言的工作变得更加简单,从根本上提高了效率。 理论上,S3是一个全球存储区域网络 (SAN),它表现为一个超大的硬盘,您可以在其中存储和检索数字资产。但是,从技术上讲,Amazon 的架构有一些不同。您通过 S3 存储和检索的资产被称为对象。对象存储在存储段(bucket)中。您可以用硬盘进行类比:对象就像是文件,存储段就像是文件夹(或目录)。与硬盘一样,对象和存储段也可以通过统一资源标识符(Uniform Resource Identifier,URI)查找。 S3还提供了指定存储段和对象的所有者和权限的能力,就像对待硬件的文件和文件夹一样。在S3中定义对象或存储段时,您可以指定一个访问控制策略,注明谁可以访问您的S3资产以及如何访问(例如,读和写权限)。相应地,您可以通过许多方式提供对您的对象的访问,使用RESTful API只是其中一种。 2、弹性计算云 亚马逊的弹性云计算模式沿袭了简单易用的传统,并且建立在亚马逊公司现有的云计算基础平台之上。弹性计算云用户使用客户端通过SOAP over HTTPS协议来实现与亚马逊弹性计算云内部的实例进行交互。使用HTTPS协议的原因是为了保证远端连接的安全性,避免用户数据在传输的过程中造成泄露。因此,从使用模式上来说,弹性计算云平台为用户或者开发人员提供了一个虚拟的集群环境,使得用户的应用具有充分的灵活性,同时也减轻了云计算平台拥有者(亚马逊公司)的管理负担。 而弹性计算云中的实例是一些真正在运行中的虚拟机服务器,每一个实例代表一个运行中的虚拟机。对于提供给某一个用户的虚拟机,该用户具有完整的访问权限,包括针对此虚拟机的管理员用户权限。虚拟服务器的收费也是根据虚拟机的能力进行计算的,因此,实际上用户租用的是虚拟的计算能力,简化了计费方式。在弹性计算云中,提供了三种不同能力的虚拟机实例,具有不同的收费价格。 由于用户在部署网络程序的时候,一般会使用超过一个运行实例,需要很多个实例共同工作。弹性计算云的内部也架设了实例之间的内部网络,使得用户的应用程序在不同的实例之间可以通信。在弹性计算云中的每一个计算实例都具有一个内部的IP地址,用户程序可以使用内部IP地址进行数据通信,以获得数据通信的最好性能。每一个实例也具有外部的地址,用户可以将分配给自己的弹性IP地址分配给自己的运行实例,使得建立在弹性计算云上的服务系统能够为外部提供服务。当然,亚马逊公司也对网络上的服务流量计费,计费规则也按照内部传输以及外部传输进行分开。 3.4 google的云计算平台 从2003年开始,Google连续几年在计算机系统研究领域的最顶级会议与杂志上发表论文,揭示其内部的分布式数据处理方法,向外界展示其使用的云计算核心技术。从其近几年发表的论文来看,Google使用的云计算基础架构模式包括四个相互独立又紧密结合在一起的系统。包括Google建立在集群之上的文件系统Google File System,针对Google应用程序的特点提出的Map/Reduce编程模式,分布式的锁机制Chubby以及Google开发的模型简化的大规模分布式数据库BigTable。 1、Google File System 文件系统 为了满足Google迅速增长的数据处理需求,Google设计并实现了Google文件系统(GFS,Google File System)。GFS与过去的分布式文件系统拥有许多相同的目标,例如性能、可伸缩性、可靠性以及可用性。然而,它的设计还受到Google应用负载和技术环境的影响。主要体现在以下四个方面: 1)集群中的节点失效是一种常态,而不是一种异常。由于参与运算与处理的节点数目非常庞大,通常会使用上千个节点进行共同计算,因此,每时每刻总会有节点处在失效状态。需要通过软件程序模块,监视系统的动态运行状况,侦测错误,并且将容错以及自动恢复系统集成在系统中。 2) Google系统中的文件大小与通常文件系统中的文件大小概念不一样,文件大小通常以G字节计。另外文件系统中的文件含义与通常文件不同,一个大文件可能包含大量数目的通常意义上的小文件。所以,设计预期和参数,例如I/O操作和块尺寸都要重新考虑。 3)Google文件系统中的文件读写模式和传统的文件系统不同。在Google应用(如搜索)中对大部分文件的修改,不是覆盖原有数据,而是在文件尾追加新数据。对文件的随机写是几乎不存在的。对于这类巨大文件的访问模式,客户端对数据块缓存失去了意义,追加操作成为性能优化和原子性(把一个事务看做是一个程序。它要么被完整地执行,要么完全不执行)保证的焦点。 4)文件系统的某些具体操作不再透明,而且需要应用程序的协助完成,应用程序和文件系统API的协同设计提高了整个系统的灵活性。例如,放松了对GFS一致性模型的要求,这样不用加重应用程序的负担,就大大简化了文件系统的设计。还引入了原子性的追加操作,这样多个客户端同时进行追加的时候,就不需要额外的同步操作了。 总之,GFS是为Google应用程序本身而设计的。据称,Google已经部署了许多GFS集群。有的集群拥有超过1000个存储节点,超过300T的硬盘空间,被不同机器上的数百个客户端连续不断地频繁访问着。 2、MapReduce分布式编程环境 为了让内部非分布式系统方向背景的员工能够有机会将应用程序建立在大规模的集群基础之上,Google还设计并实现了一套大规模数据处理的编程规范Map/Reduce系统。这样,非分布式专业的程序编写人员也能够为大规模的集群编写应用程序而不用去顾虑集群的可靠性、可扩展性等问题。应用程序编写人员只需要将精力放在应用程序本身,而关于集群的处理问题则交由平台来处理。 Map/Reduce通过“Map(映射)”和“Reduce(化简)”这样两个简单的概念来参加运算,用户只需要提供自己的Map函数以及Reduce函数就可以在集群上进行大规模的分布式数据处理。 据称,Google的文本索引方法,即搜索引擎的核心部分,已经通过Map Reduce的方法进行了改写,获得了更加清晰的程序架构。在Google内部,每天有上千个Map Reduce的应用程序在运行。 3、分布式大规模数据库管理系统BigTable 构建于上述两项基础之上的第三个云计算平台就是Google关于将数据库系统扩展到分布式平台上的 BigTable系统。很多应用程序对于数据的组织还是非常有规则的。一般来说,数据库对于处理格式化的数据还是非常方便的,但是由于关系数据库很强的一致性要求,很难将其扩展到很大的规模。为了处理Google内部大量的格式化以及半格式化数据,Google构建了弱一致性要求的大规模数据库系统 BigTable。据称,现在有很多Google的应用程序建立在BigTable之上,例如Search History、Maps、Orkut和RSS阅读器等。 以上是Google内部云计算基础平台的三个主要部分,除了这三个部分之外,Google还建立了分布式程序的调度器,分布式的锁服务等一系列相关的云计算服务平台。 参考资料 |