GFS学习 | 青训营笔记

143 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

这篇笔记总结了我学习的Google file system(GFS)相关的内容。GFS作为各种开源分布式文件系统的鼻祖,GFS里面提到的架构非常经典,值得一学。

GFS设计动机

首先,随着数据量的不断增大,Google需要一个支持海量存储的文件系统。当时现有的文件系统工作负载、设计优先级和Google应用不相符,他们是廉价、不可靠的,必须要设计与Google应用和负载相符的文件系统。

GFS目的

GFS将容错的任务交给文件系统完成,利用软件的方法解决系统可靠性问题,使存储的成本成倍下降。GFS将服务器故障视为正常现象,并采用多种方法,从多个角度,使用不同的容错措施,确保数据存储的安全、保证提供不间断的数据存储服务。

GFS架构

image.png

Client(客户端) :应用程序的访问接口

Master(主服务器)管理节点,在逻辑上只有一个,保存系统的元数据,负责整个文件系统的管理

Chunk Server(数据块服务器) :负责具体的存储工作。数据以文件的形式存储在Chunk Server上

GFS特点

客户端首先访问Master节点,获取交互的Chunk Server信息,然后访问这些Chunk Server,完成数据存取工作。这种设计方法实现了控制流和数据流的分离。

Client与Master之间只有控制流,而无数据流,极大地降低了Master的负载。

Client与Chunk Server之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个Chunk Server,从而使得整个系统的I/O高度并行,系统整体性能得到提高。

容错机制Chunk Server容错

GFS采用副本方式实现Chunk Server容错

每一个Chunk有多个存储副本(默认为三个),分布存储在不同的Chunk Server上用户态的GFS不会影响Chunk Server的稳定性。

副本的分布策略需要考虑多种因素,如网络的拓扑、机架的分布、磁盘的利用率等。

对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入。

总结

以上就是我总结的GFS相关的知识点,本人水平有限,如有错误欢迎指正。