分布式文件存储系统GFS的基础知识

存储技术

606人已加入

描述

  GFS是google的分布式文件存储系统,是专为存储海量搜索数据而设计的,2003年提出,是闭源的分布式文件系统。适用于大量的顺序读取和顺序追加,如大文件的读写。注重大文件的持续稳定带宽,而不是单次读写的延迟。

  1.GFS的主要架构GFS架构比较简单,一个GFS集群一般由一个master、多个chunkserver和多个clients组成。在GFS中,所有文件被切分成若干个chunk,每个chunk拥有唯一不变的标识(在chunk创建时,由master负责分配),所有chunk都实际存储在chunkserver的磁盘上。为了容灾,每个chunk都会被复制到多个chunkserve

  2.GFS的功能模块

  GFS

  GFSclient客户端:为应用提供API,与POSIXAPI类似。同时缓存从GFSmaster读取的元数据chunk信息;GFSmaster元数据服务器:管理所有文件系统的元数据,包括命令空间(目录层级)、访问控制信息、文件到chunk的映射关系,chunk的位置等。同时master还管理系统范围内的各种活动,包括chunk创建、复制、数据迁移、垃圾回收等;GFSchunksever存储节点:用于所有chunk的存储。一个文件被分割为多个大小固定的chunk(默认64M),每个chunk有全局唯一的chunkID。

  3.GFS的写入流程

  Client向master询问要修改的chunk在哪个chunkserver上,以及该chunk其他副本的位置信息。

  Master将Primary、secondary的相关信息返回给client。

  Client将数据推送给primary和secondary;。

  当所有副本都确认收到数据后,client发送写请求给primary,primary各不同client的操作分配序号,保证操作顺序执行。

  Primary把写请求发送到secondary,secondary按照primary分配的序号顺序执行所有操作

  当Secondary执行完后回复primary执行结果。

  Primary回复client执行结果。

  GFS

  由上述可见,GFS在进行写数据时,有如下特点:

  GFS在数据读写时,数据流与控制流是分开的,并通过租约机制,在跨多个副本的数据写入中,保障顺序一致性;

  Master将chunk租约发放给其中一个副本,这个副本称为主副本,由主副本确定chunk的写入顺序,此副本则遵守这个顺序,这样就保障了全局顺序一致性

  Master返回客户端主副本和次副本的位置信息,客户端缓存这些信息以备将来使用,只有当主副本所在chunkserver不可用或返回租约过期了,客户端才需要再次联系Master;

  GFS采用链式推送,以最大化利用每个机器的网络带宽,避免网络瓶颈和高延迟连接,最小化推送延迟;

  GFS使用TCP流式传输数据,以最小化延迟。

  4.GFS特点适合大文件场景的应用,特别是针对GB级别的大文件,适用于数据访问延时不敏感的搜索类业务中心化架构,只有1个master处于active状态缓存和预取,通过在client端缓存元数据,尽量减少与master的交互,通过文件的预读取来提升并发性能高可靠性,master需要持久化的数据会通过操作日志与checkpoint的方式存放多份,故障后master会自动切换重启。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分