云计算的关键技术之大规模分布式存储
分布式存储的目标是利用多台服务器的存储资源来满足单台服务器所不能满足的存储需求。分布式存储要求存储资源能够被抽象表示和统一管理,并且能够保证数据读写操作的安全性、可靠性、性能等各方面要求。
随着过去几十年互联网技术的发展,越来越多的互联网应用需要存储海量数据,比如搜索引擎和互联网视频网站,这些需求催生了一系列优秀的大规模分布式存储技术。分布式存储技术可以通过多种方式实现,一种比较典型的实现方式是分布式文件系统。分布式文件系统允许用户像访问本地文件系统一样访问远程服务器的文件系统,用户可以将自己的数据存储在多个远程服务器上,分布式文件系统基本上都有冗余备份机制和容错机制来保证数据读写的正确性。云环境的存储服务基于分布式文件系统并根据云存储的特征做了相应的配置和改进。另一类分布式存储的实现方式是分布式存储软件或服务,例如著名的Ryze存储服务,以及很多P2P文件存储系统。下面分别介绍分布式文件系统和云存储服务。
首先介绍几个典型的分布式文件系统。Frangipani是一个伸缩性很好的高性能分布式文件系统,该系统采用了两层的服务体系架构:底层是一个分布式存储服务,该服务能够自动管理可伸缩、高可用的虚拟磁盘;在这个分布式存储服务上层运行着Frangipani分布式文件系统。JGtFile是一个基于P2P的组播技术、支持在Internet这样的异构环境中分享文件的分布式文件系统。Ceph是一个高性能并且可靠的分布式文件系统,它通过把数据和对数据的管理在最大程度上分开来获取极佳的I/O性能。
Google File System(GFS)是Google公司设计的可伸缩的分布式文件系统。Google公司的工程师在考虑了分布式文件系统的设计准则的基础上,又发现了以下几个不同于传统分布式文件系统的需求:第一,PC服务器极易发生故障,造成节点失效,故障的原因多种多样,有机器本身的、网络的、管理员引起的及外部环境引起的,因此需要对整个系统中的节点进行监控,检测出现的错误,并开发相应的容错和故障恢复机制;第二,在云计算环境中,海量的结构化数据被保存为非常大的文件,一般为GB量级,因此需要改变原有的基于对中小文件(KB或者MB虽级)进行管理的文件系统设计准则,以适应对超大文件的访问;第三,系统中对文件的写操作绝大多数是追加操作,也就是在文件的未尾写入数据,在文件中间写入数据的情况其实很少发生,而且数据一且被写入,绝大多数情况下都是被顺序地读取,不会被修改,因此在设计系统时把优重点放在追加操作上,就可以大幅度提高系统的性能;第四,设计系统时要考虑开放的、标准的操作接口,并隐藏文件系统下层的负载均衡、冗余复制等细节,这样才可以方便地被上层系统大规模地使用。因此,GFS能够很好地支持大规模海量数据处理应用程序。图5.7展示了GFS的系统架构。
云计算的出现给分布式存储带来不新的需求和挑战。在云计算环境中,数据的存储和操作都是以服务的形式提供的;数据的类型多种多样,包括了普通文件、虚拟机镜像文件这样的二进制大文件、类似XML的格式化数据,甚至数据库的关系型数据等;云计算的分布式存储服务设计必须考虑到各种不同数据类型的大规模存储机制,以及数据操作的性能、可靠性、安全性和简单性。
目前,在云计算环境下的大规模分布式存储领域已经有了一些研究成果和应用。BigTable是Google公司设计的用来存储海量结构化数据的分布式存储系统,Google公司使用该系统来将网页存储成分布式的、多维的、有序的图。Dynamo是Amazon公司设计的一种基于key/value(键值)对的分布式存储系统,该系统在设计之初的一个主要考虑就是Amazon公司的大规模数据中心时时刻刻都可能发生大大小小的部件失效,因此Dynamo能够提供非常高的可用性。Amazon公司的Simple Storage Service(S3)是一个支持大规模存储多媒体的二进制文件的云计算存储服务。Amazon公司的Simple DB是建立在S3和AmazonEC2之上的用来存储结构化数据的云计算服务。
上一篇: 赵文银:探索云计算时代虚拟世界的管理模式
下一篇: 人工智能技术在电力系统故障诊断中应用