GFS概念解读:可扩展的分布式文件系统
时间: 2015-09-17来源:数据观
前景提要
GFS概念解读:可扩展的分布式文件系统
来源: 数据观 时间:2015-09-17 10:51:27 作者:
  GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。
  GFS 也就是 google File System,Google公司为了存储海量搜索数据而设计的专用文件系统。
  GFS运行原理
  GFS文件系统其实就是一个网络日志文件系统,通常被用作为多台计算机共享一存储设备,而GDS文件系统本身的相关信息可以存储在服务器中或者在一个存储区域网络中。

  图19.3是GFS文件系统的一个拓展图。
  此图是GFS与GNBD通过SAN网络的一个构架,总共分为4个组成部分,从下到上依次为共享数据存储层、GNBD Server、GFS文件系统和应用程序层。
  共享数据存储层
  共享数据存储区域一般由专业的磁盘阵列设备组成,然后通过SAN网络连接到每个GNBD Server上。
  GNBD是Global Netword Block Device的简称,它通过将存储的数据块导出到以太网上,进而提供了通过TCP/IP协议访问Red Hat GFS是方法。GNBD由两个主要部分组成:一个GNBD客户端,一个GNBD服务器端。GNBD服务器端运行于GNBD Server上,主要用于导出本地存储。GNBD客户端运行在使用GFS文件系统的每个节点上,主要用于导入从GNBD服务器端导出的磁盘设备。GNBD Server 可以有一个或者多个,并且多个GNBD客户端可以同时访问由一个GNBD服务器端导出的磁盘设备。
  GFS文件系统运行在集群的每个节点上,通过共享GNBD Server 导出的数据,实现营业程序的访问,完成服务器集群技术存储的功能。
  位于最上层的应用程序主要用于提供集群服务。集群服务运行在每个节点上,共用同一的数据文件,从而对外提供一致性的访问功能。
  为了保证文件系统的完整性,GFS使用锁管理器来管理I/O。当一个节点在GFS上修改数据时,改变可以立即在其他使用此文件系统的节点上可见。GFS通过多个节点在块级别上共享存储,实现了资源的节点共享和统一管理。
  GFS架构分析
  Google文件系统(Google File System,GFS)是构建在廉价的服务器之上的大型分布式系统。它将服务器故障视为正常现象,通过软件的方式自动容错,在保证系统可靠性和可用性的同时,大大减少了系统的成本。
  GFS是Google云存储的基石,其它存储系统,如Google Bigtable,Google Megastore,Google Percolator均直接或者间接地构建在GFS之上。另外,Google大规模批处理系统MapReduce也需要利用GFS作为海量数据的输入输出。
  系统架构

  GFS将整个系统的节点分为三种角色:GFS Master(总控服务器),GFS Chunkserver(数据块服务器,简称CS)以及GFS Client(客户端)。
  GFS文件被划分为固定大小的数据块(Chunk),由Master在创建时分配一个64位全局唯一的Chunk句柄。CS以普通的Linux文件的形式将Chunk存储在磁盘中。为了保证可靠性,Chunk在不同的机器中复制多份,默认为三份。
  Master中维护了系统的元数据,包括文件及Chunk名字空间,GFS文件到Chunk之间的映射,Chunk位置信息。它也负责整个系统的全局控制,如Chunk租约管理,垃圾回收无用Chunk,Chunk复制,等等。Master会定期与CS通过心跳的方式交换信息。
  Client是GFS提供给应用程序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。Client访问GFS时,首先访问Master节点,获取与之进行交互的CS信息,然后直接访问这些CS,完成数据存取工作。
  需要注意的是,GFS中的客户端不缓存文件数据,只缓存Master中获取的元数据,这是由GFS的应用特点决定的。GFS最主要的应用有两个:MapReduce与Bigtable。对于MapReduce,GFS客户端使用方式为顺序读写,没有缓存文件数据的必要;而Bigtable作为云表格系统,内部实现了一套缓存机制。另外,如何维护客户端缓存与实际数据之间的一致性是一个极其复杂的问题。
  下面讨论GFS架构中的几个关键问题。
  Lease机制
  GFS数据追加以记录为单位,每个记录的大小为几十KB到几MB,如果每次记录追加都需要请求Master,那么Master显然会成为系统的性能瓶颈,因此,GFS系统中通过Lease机制将chunk写操作授权给Chunk Server。获取Lease授权的Chunk Server称为Primary Chunk Server,其它副本所在的Chunk Server称为Secondary Chunk Server。Lease授权针对单个chunk,在Lease有效期内,对该chunk的写操作都有Primary Chunk Server负责,从而减少Master的负担。一般来说,Lease的有效期比较长,比如60秒,只要没有出现异常,Primary Chunk Server可以不断向Master请求延长Lease的有效期直到整个chunk写满。
  假设有Chunk A在GFS中保存了三个副本A1,A2,A3,其中,A1是Primary。如果副本A2所在Chunk Server下线后又重新上线,并且在A2下线的过程中,副本A1和A3有新的更新,那么,A2需要被Master当成垃圾回收掉。GFS通过对每个chunk维护一个版本号来解决,每次给Chunk进行Lease授权或者Primary Chunk Server重新延长Lease有效期时,Master会将Chunk的版本号加1。A2下线的过程中,副本A1和A3有新的更新,说明Primary Chunk Server向Master重新申请Lease并增加了A1和A3的版本号,等到A2重新上线后,Master能够发现A2的版本号太低,从而将A2标记为可删除的chunk,Master的垃圾回收任务会定时检查,并通知Chunk Server将A2回收掉。
   BigTable和GFS有什么不同?
  BigTable是一个key/value分布式数据库,而GFS主要是一个分布式文件系统。bigTable存储结构化数据,GFS存储的是非结构化数据。另外BigTable的数据是存储在GFS上的。
  云计算关于GFS的问题
  问题:我刚接触云计算,老师给了我一个课题,要求是 构造一个体现搜索/存储技术特征的应用案例的GFS功能框架和工作流,有没有人可以指导一下。。。
  回答:
  提供给个思路:比如时下流行的网络网盘,客户的需求是注册、登陆、上传、下载、存储、访问、分享到某空间,这些可以归为工作流程中,另外做些加密解密和交互(比如输入验证码、忘了密码通过邮箱找回等),其中重点就在于你的课题中提出的“搜索/存储”,因为用GFS,它是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。所以可以很容易的实现课题需求。
  至于GFS的功能框架要根据工作流确定,仿照GFS的标准框架构造即可。
  如何利用Linux和GFS打造集群存储?
  负载均衡是一项困难的任务。我们经常需要通过NFS(网络文件系统)或其他机制来为数据提供中心地址,从而共享文件系统。虽然你的安全机制可能可以让你免于Web服务器节点的故障,但是你仍然需要通过中央存储节点来共享数据。 通过GFS(全局文件系统)——Linux的一个免费集群文件系统——你可以创建一个不需要依赖其他服务器的真正稳定的集群。在这篇文章中,我们将展示如何正确地设置GFS. 从概念上来说,一个集群文件系统可以允许多个操作系统载入同一个文件系统并可以在同一时间内向同一文件系统写入数据。现在有许多集群文件系统,包括Sun的Lustre,Oracle的OCFS(Oracle集群文件系统),以及Linux的GFS. 有许多方法可以让一个块设备同时被多个服务器所使用。你可以分区出一个对多个服务器都可视的SAN(存储局域网...
  相关阅读
  在Linux系统环境下使用GFS文件系统
  gfs采用了哪些容错措施来确保整个系统的可靠性
  本文 数据观原创精编,转载请注明来源 www.cbdio.com   百度一下“数据观”,获取更多大数据相关喜讯
  微信搜索“数据观”,关注后有一大波大数据干货奉送
扫码关注

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行