设计目标

GFS文件系统设计时候,也是考虑了性能、扩展性、可用性、可靠性等。
跟传统文件系统不一样,GFS在设计时,是基于自身的业务需求来的,有点点像是基于自由的业务属性,针对性的开发了一套文件系统。
论文的开头就指出了GFS设计时的 四个 目标:

  • 因为机器很多,而且都是x86机器,所以失败是常态,因此在软件层面必须能自动处理失败的情况
  • 当时存储的文件基本上都是GB级别的,对于这种级别尺寸的文件,设计时就要重新考量了,比如针对I/O
    • 块的大小需要定制设计,小文件也有但不多,不用特别考虑
    • 吞吐量优先,很少有应用对读写的响应时间有要求
  • 文件基本都是追加写的,极少有覆盖或者随机写入的,这对于文件系统优化和原子性也是有优势
  • 设计通用的API,放宽了一致性的要求,多个客户端并行写可以不用加锁

设置概览

单个Master

整个架构是一个 主从 结构,单一个master和多个chunk server
一个chunk server保存了多个chunk,而chunk是由一个全局的64位的chunk handle标识的。
master的好处是简化了很多设计,由于只有一个master,它存储了所有元信息,对于复制策略和chunk位置放置都能很好处理。
客户端只需要向master获取元数据就可以了,后面就会缓存这些信息,然后直接跟chunk server交互了,就没有master什么事了。 master