自1985年Sun公司推出NFS文件系统以来,分布式文件系统已经越来越受到大家的重视,在这二十多年的时间里,分布式文件系统在理论、实践中都取得了较大的发展。早期的分布式文件系统都是通过局域网相联的,受到技术水平的限制,人们重点关注它数据的可靠性,数据的可访问性和可扩展性。早期的分布式文件系统包括NFS[[[] Russel Sandberg.The Sun Network File System:Design,Implementation and Experience]],Coda,AFS[[[] Sidebotham.The Andrew File System Data Structuring Primitive.1986]],Sprite File System[[[] Mary baker.Availability in the Sprite Distributed File System.1990]]等。
20世纪90年代初,由于磁盘存储技术的不断进步,存储成本也随之降低。Windows操作系统的出现,为微机的普及做出了极大的贡献,伴随着互联网的普及,在网络传输的多媒体及其它类型的数据也逐渐地增加。在大容量应用存储需求不断增加的情况下,加利福尼亚大学(University of California)借鉴了高性能对称多处理器的思想,设计开发出了xFS。xFS之前的分布式文件系统都运行在局域网的局限,他很好地克服了文件系统在在广域网中的一系列难题,也有效地利用了本地存储空间和本地主机。这时其它的文件系统还有SFS和Frangipani等
20世纪90年代中后期,随着网络技术的进一步发展和普及,网络存储技术也得到了相应的发展,基于Fiber Channel(光纤通道)的SAN(存储区域网Storage Area Storage)和NAS(网络附连存储Network Attached Storage)也被广泛地应用。此时,单位存储的成本继续大幅下降,网络技术和计算机技太更是突飞猛进地向前发展,极大地推动了网络存储的发展。多种体系结构都是在这个阶段产生的,它们都对网络技术进行了充分的利用。为了满足对于数据性能、容量和共享等方面的需求,,这时期的分布式文件系统变得更复杂,规模也变得更大,在磁盘布局、物理设备的访问和检索效率等方面也在不断地优化。可扩展性、可靠性,缓存一致性的需求也伴随着规模的扩大随之而来,缓存管理、分布式锁、文件级负载平衡和Soft Updates等技术也逐渐地被应用到系统的实现中。
进入21世纪后互联网得到了迅速的发展,在数据存储上要求更能适应互联网的特点,google最先推出了自己的文件系统GFS(Google File System)[[[] Google.The Google File System]],随后各大互联网公司纷纷推出各自的文件系统,比较有代表性的有淘宝的TFS(Taobo File System)[[[] Taobao.Url:http://tfs.taobao.org/]]、Apache的项目FastDFS[[[] Url:http://code.google.com/p/fastdfs/]]和HDFS[[[] Hadoop官网.Url:http://hadoop.apache.org/]],以下对这些系统分别进行一个简单的介绍。
Google File System
GFS是google公司为了存储海量搜索数据而设计的专用文件系统。是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。
GFS集群由一个mater和chunkserver所组成,并且有很多户端进行访问,如图4所示。master作为文件系统的无数据服务器,chunkserver是文件系统的数据服务器。Master通常不存储实际的大块数据,是维护系统中访问控制信息、命名空间、块当前位置及映射表格这些元数据。映射表格将64位的ID映射到数据块及其副本的位置和哪些进程正在读写特定的大数据块或追踪复制大块数据的“快照”(一般在master的激发下,当由于节点失效时,一个数据块的副本数降到设定数目之下)。所有这些元数据通过master周期性地从每个chunkserver中收集过来的更新(“心跳”)保持最新态。chunkserver存储数据文件,单个的文件像通常的文件系统中的簇或都扇区一样被分成了许多固定大小的数据块。每个数据都在系统中有一定数量的备分,缺省是3个,对于常用文件备分个数会比较多。GFS通过限时的、倒计时系统来处理操作的允许授权,主服务器可能授权一个进程在一定的时间内访问数据块,这段时间内主服务器再不会给任何其它的进程授权。被更改的chunkserver总是主要的数据块存储器,然后再将所做的更改,复制到其它的chunkserver上。这些变化直到所有的chunkserver做了确认之后才会存储起来,这就保证了所做操作的完整性和自动性。当客户端要访问大的数据快时,着先查询master取得数据块的位置,如果数据块没有进行操作,主服务器返回客户端数据块的位置,然后客户端直接与chunkserver进行联系并接收数据。
维普论文检测系统文章欢迎转载,转载请以链接形式标明本文地址。