【论文总结】GFS
目录
GFS
1、介绍
2、架构
3、一致性模型
4、租约
5、快照
6、master管理
7、容错
8、总结
GFS
1、介绍
-
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进行交互。
- 对于锁、垃圾回收等,都采用的惰性策略。尤其垃圾回收使用隐藏文件的方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律