导读谷歌三大核心技术之一 GoogleFileSystem(一)

GoogleFileSystem设计构想

为满足Google数据处理的需求,Google工程师设计并实现了GoogleFileSystem(GFS)。GFS与传统分布式文件系统类似,也需要满足高性能、可伸缩性、可靠性以及可用性。与传统分布式文件系统思路不不同的是:

  1. GFS认为组件失效是常态而非意外,GFS由大量廉价设备组成
  2. 文件数量异常巨大
  3. 绝大部分文件修改采用文件尾部追加数据而非覆盖原有数据
  4. 应用和文件系统协同设计

GFS架构设计

一个GFS包含一个单独的Master节点、多台Chunk服务器,并同时被多个客户端访问。
image

存储方式

GFS存储的文件被分割成固定大小的Chunk,Master分配给每个Chunk一个不变的64位唯一标识。每个Chunk备份到多个服务器上,以提高可靠性。

Master服务器

Master服务器管理所有Chunk的元数据,以管理各Chunk数据(类似于Linux文件系统的inode)。每个Chunk大小为64M,Chunk元数据大小为64字节,而且由于大多数文件包含多个Chunk因此可以将所有Chunk的元数据存储在Master的内存中,增强系统的简洁性、可靠性、高性能和灵活性。

Chunk信息

Master服务器不永久保存Chunk服务器有指定Chunk的副本的信息。因为在一个拥有数百台服务器的集群中,Chunk服务器加入集群、离开集群、更名、失效、以及重启的时候,Master服务器和Chunk服务器数据同步的问题会非常频繁。Master服务器在启动时候轮询Chunk服务器,并在之后定期轮询更新。

GFS的日志系统(灾备)

操作日志包含了关键的元数据变更历史记录。操作日志是元数据唯一的持久化存储记录,同时也是判断同步操作顺序的逻辑时间基线(类似LSN),必须确保日志文件的完整,确保只有在元数据的变化被持久化后,日志才对客户端是可见的。GFS把日志复制到多台远程机器,只有相应的日志记录写入到本地以及远程机器的硬盘后,才会响应客户端的操作请求。Master服务器会收集多个日志记录后批量处理,以减少写入磁盘和复制对系统整体性能的影响。

GFS灾难恢复

Master服务器在灾难恢复时,通过重演操作日志把文件系统恢复到最近的状态。为了缩短Master启动的时间,重演系统操作的日志量尽量的少。Master服务器在日志增长到一定量时对系统状态做一次Checkpoint(对数据库的快照)。在灾难恢复的时候,Master服务器就通过从磁盘上读取这个Checkpoint文件,以及重演Checkpoint之后的有限个日志文件就能够恢复系统。Checkpoint文件以压缩B-树形势的数据结构存储,可以直接映射到内存,在用于命名空间查询时无需额外的解析。Master服务器恢复只需要最新的Checkpoint文件和后续的日志文件。旧的Checkpoint文件和日志文件可以被删除。通常会多保存一些历史文件。Checkpoint失败不会对正确性产生任何影响,因为恢复功能的代码可以检测并跳过没有完成的Checkpoint文件。

资料
The Google File System – Research at Google
谷歌三大核心技术(一)Google File System中文版 译者:alex

原创文章,作者:easyTang,如若转载,请注明出处:http://www.178linux.com/74893

(13)
easyTangeasyTang
上一篇 2017-05-07 13:55
下一篇 2017-05-07 15:35

相关推荐

  • 文件查看和正则表达式

    文件查看工具         cat,tac,rev,more,less,head,tail cat:查看文本          cat [OPTION]… [FILE]… &…

    Linux干货 2016-08-07
  • Linux系统重定向和管道

    1、标准输入和标准输出              程序:指令+数据               &n…

    Linux干货 2016-08-04
  • 关于touch/>/>>创建同名文件的总结

    一、简介 1、touch     即创建文件或修改文件时间     语法:touch [options] file-list 2、>     创建文件,可直接把内容生成到指定文件,会覆盖源文件中的内容;也可以直接生成一个空白文件。     语法:> file…

    2017-02-18
  • 推荐-Linux命令帮助的获取

    帮助命令 1. 使用帮助命令和帮助选项来获取帮助 2. 使用man来查看命令使用手册(manual) 3. 使用info来查看命令的信息页 4. 程序自身的帮助文档 5. 程序官方文档 6. 发行版的官方文档 7. 使用Google搜索关键字 1. 使用帮助命令和帮助选项来获取帮助 Linux系统中命令分为【内部命令】和【外部命令】。 【内部命令】:内部命令…

    Linux干货 2016-03-25
  • N25_第二周博客作业:

    N25_第二周博客作业: 1、linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示。 Linux上常见的文件管理类命令有mkdir、touch、cp、mv、rm、stat。 mkdir:创建新目录 SYNOPSIS   mkdir [OPTION]… DIRECTORY… 常用: 1、直接建目录 [root@…

    Linux干货 2016-12-09
  • Linux基础-第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 2、取出最后登录到当前系统的用户的相关信息。 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。 5、取出当前主机的…

    2018-03-19