GFS论文笔记

GFS是一个分布式文件系统,旨在处理大规模数据,强调性能、可伸缩性和可靠性。其设计目标包括处理大量文件、支持追加写入、允许小规模随机读写。架构上采用单一Master节点管理元数据,chunk服务器保存数据并复制以确保冗余。通过租约机制保证数据一致性,快照用于数据备份。读写流程中,客户端通过Master获取chunk信息,直接与chunk服务器交互,确保高效操作。

GFS的设计目标

分布式文件系统的共同设计目标:

  • 性能
  • 可伸缩性
  • 可靠性
  • 可用性

GFS根据自己情况重新设计的目标:

  • 组件失效是常态事件,而不是意外事件,因此要有持续的监控、错误侦测、灾难冗余、自动恢复等机制
  • 不能以管理大文件的方式来管理小文件,所以IO操作和Block的尺寸都需要重新考虑
  • 数据的追加操作是性能优化和原子性保证的主要考量因素
  • 应用程序和文件系统API协同设计,提高整个系统的灵活性(放宽对GFS一致性模型的要求)
  • 支持小规模的随机写入,但是可能效率不佳
  • 小规模的随机读会被合并并排序,之后按顺序批量读取,避免在文件中前后来回移动读取位置
  • 高性能的稳定带宽远比低延迟重要

GFS架构

整个GFS的架构包含了一个单独的Master节点, 多个chunk服务器,GFS存储的文件会被分割成固定大小的chunk,每一个chunk都会被分配一个全球唯一的64位标识。然后以Linux文件的形式保存在本地硬盘上。出于可靠性的考虑,文件的每个块都会复制到多个chunk服务器上。Master节点管理所有的文件系统元数据。这些元数据包含了名字空间、访问控制信息、文件和Chunk的映射信息、以及当前Chunk的位置信息。GFS的客户端代码以库的形式被链接到客户程序里。客户端代码实现了GFS文件系统的API接口函数、应用程序与Master节点和Chunk服务器通讯、以及对数据进行读写操作。无论是客户端还是Chunk服务器都不需要缓存文件数据。客户端缓存数据几乎没有什么用处,因为大部分程序要以流的方式读取一个巨大文件。要么工作集太大根本无法被缓存。无需考虑缓存相关的文件也简化了客户端和整个系统的设计与实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值