【论文总结】GFS

目录

    GFS
    1、介绍
    2、架构
    3、一致性模型
    4、租约
    5、快照
    6、master管理
    7、容错
    8、总结

    GFS

    1、介绍

    • GFS是谷歌开发的一套分布式的文件管理系统,本文为阅读论文后的笔记总结及自己的思考感悟。

    • 从GFS架构图来了解GFS

    gfs架构

    2 架构

    • 三个角色

      • master:在GFS中只设置了一个master来管理整个集群,其管理信息单元为chunk,这些元数据包括名字空间、访问控制信息文件和chunk的映射信息,以及当前chunk服务器的位置信息
      • chunk客户端:整个集群的请求方,一般有读写文件的请求;
      • chunk服务器:集群中负责存储文件的地方。
    • 信息流

      • chunk client要做文件的读写操作,则会向master发送请求(master管理信息单位为chunk),chunk client给master文件名和chunk索引的信息.master根据请求的内容找到对应的chunk,并返回给chunk client.
      • chunk client收到对应文件的chunk句柄和文件地址后,client就会向文件地址所在的chunk server进行数据交互。
      • chunk server与master的交流内容,主要是server 会向master汇报自己的地址、文件信息及状态信息,master收到这些信息后会将信息进行保存。
    • chunk

      • chunk就是在整个集群中设置的一个块大小,及整个系统的数据块大小。

      • 既然chunk是属于基本的块数据,那多大块数据才是符合的呢?在GFS中设置的64MB,关于chunk块大小的设定,可以阅读论文。

    • chunk的位置信息

      • master要实现对全局的调度,那么就必须要获取集群中chunk服务器及文件位置的信息。所以对于位置的获取,master在每次启动的时候来轮询chunk服务器来获得这些信息。

      • 关于chunk文件位置,GFS的决策是,只有chunk服务器才能决定chunk是否存储在自己这里。而master不对全局维护这个信息,这些信息都是由chunk服务器主动进行更新的。(chunk服务器才能决定文件位置的意思在于,master并不主动去维护这些chunk的位置信息,而是由chunk server上报,在文件的创建,还是需要master的统一调度)

    3 一致性模型

    • GFS为分布式文件系统,系统中难免会有一些客户端会对文件进行并发的读写操作,那么GFS是如何保证并发状态下的文件读写正确呢?(一致性模型我理解的也不是太清楚,以下也只是我自己的一个理解)

      • GFS中对文本的写操作,都是使用的追加模型。master收到多个对文件的写操作时,会这些操作进行一个管理,其中一个方法就是排序,master会规定操作的顺序并将这些发送给相应的chunk服务器,chunk服务器则根据这个顺序进行操作。GFS利用这样的方式,避免了对文本读写时用到锁机制,因为锁的使用是非常消耗系统资源的,不过在每个chunk服务器在进行追加操作时,是利用原子化的。

    4、租约

    • 租约主要是为了减轻master的管理负担而设计的,在上一节中讲到了一个文件读写一致性的问题,对于文件一致性的管理,GFS中并不是由master来进行负责,而是由master指定的一个租约服务器负责。
    • 在有并发性文件操作时,master并不会参与管理,而是从拥有该chunk副本的服务器中,选出一个租约服务器(有时间限制),对于这些文件操作的管理就由租约服务器进行管理。当有文件操作时,master就会询问哪个服务器持有租约,然后将信息传递给他,如果没有,master则重新创建一个。

    6、master管理

    • 名称空间与锁

      • master在区分管理的服务上,设置了名称空间用来进行隔离,同时不同的名称空间都配有锁机制。者master中,在其开始操作之前,都需要先获得一些列锁,来保证数据的安全、有效。(锁的分配策略采用惰性策略,不再使用时,才会被删除)
    • 创建、重新复制、重新负载均衡

      • master得到一个新的文本,在哪个位置存放初始的空的副本。有以下考虑

        • 在硬盘使用率低于平均使用率的chunk服务器上
        • chunk副本分布在多个机架上。在GFS对于chunk的有效副本有一套计算方法来判断是否还需要进行一个复制,同时对于不同副本的丢失情况,GFS根据情况设置优先级,并根据优先级进行处理。
      • master会周期性地对副本进行重新负载均衡,并检测当前副本分布情况,然后移动副本以便利用硬盘空间。

    • 垃圾回收

      • GFS对垃圾回收也是采用惰性策略。当我们发起一个文件删除操作时,系统会将该文件该为“隐藏”文件,并不立即进行删除,如果又需要这类文件,则可以通过修改文件名实现“反删除”。如果不显示地进行规定,这类“隐藏”文件会在规定时间内进行删除。
    • 过期版本检测

      • 在集群环境下,服务器掉线地情况也是常有的,那么GFS就需要设计一套管理机制,来保证服务器上的数据是有效的。master在对数据登记以及分发给每个chunk服务器的数据是带有版本号的,master会保存最新的版本号,当有“复活的”服务器会向租约服务器汇报,以获得最新的数据。

    7、容错

    。。。

    8. 总结

    • GFS作为分布式文件系统,mapreduce是在其的基础实现。
    • 对于GFS而言所有的文本服务器需要听从master的统一指挥,但是在GFS中,对文本的操作时,master是不干涉的,master从集群中找到一个主服务器来负载与其同类的服务的操作,从而来降低master的负担。同时在GFS中master是负载所有文件数据调度的,但同时chunk服务器也会承担相应的管理人物。
    • 与mapreduce相似,GFS中的客户端与master建立连接获取数据位置后,则只与存有数据的服务器进行交互,在mapreduce则是获取数据的地址,就不再与master进行交互。
    • 对于锁、垃圾回收等,都采用的惰性策略。尤其垃圾回收使用隐藏文件的方法。
    posted @   王磊明  阅读(536)  评论(0编辑  收藏  举报
    编辑推荐:
    · AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
    · 基于Microsoft.Extensions.AI核心库实现RAG应用
    · Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
    · 开发者必知的日志记录最佳实践
    · SQL Server 2025 AI相关能力初探
    阅读排行:
    · 震惊!C++程序真的从main开始吗?99%的程序员都答错了
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 单元测试从入门到精通
    · 上周热点回顾(3.3-3.9)
    · winform 绘制太阳,地球,月球 运作规律
    点击右上角即可分享
    微信分享提示