导读谷歌三大核心技术之一 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
下一篇 2017-05-07

相关推荐

  • 利用DNS和SAMBA实现web站点的简单高可用

    本文通过DNS绑定两台主机的IP地址到一个URL,然后后台samba服务器提供站点文件,此处以wordpress为例。这样当有一台服务器httpd服务出现故障的时候不至于造成站点无法访问,而且站点数据和mysql数据库数据位于后台samba服务器,另一台服务器直接从samba服务器获取站点文件和数据库数据,不会造成数据的不一致。 一、实验环境: 三台主机ip…

    2017-06-06
  • PHP中引用的详解(引用计数、写时拷贝)

    《PHP5中文手册》内容中"引用的解释"一文的摘要: 1. PHP中引用的特性 PHP中引用意味着用不同的名字访问同一个变量内容,引用不是C的指针(C语言中的指针里面存储的是变量的内容,在内存中存放的地址),是变量的另外一个别名或者映射。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Uni…

    Linux干货 2015-04-10
  • RAID简述和Linux软RAID配置

    RAID简述和Linux软RAID配置 PS:仅为课程练习,原理和配置可能有误,仅供参考,谢谢; 1.RAID功能简述     RAID,全称(Redundant Arrays of Inexpensive Disk或Redundant Arrays of Independent Disk),现在一般多用于后面那个称呼,独立磁盘冗余阵列。RAID的基础概念大…

    Linux干货 2016-07-17
  • 网络管理及任务进程解析

     网络管理————————————— 一.IP 地址 与路由  1.首先说的是IP地址:       它们可唯一标识IP 网络中的设备,每台主机必须具有唯…

    2017-07-02
  • 第三周小练习

    1. 列出当前系统上所有已经登陆的用户的用户名,注意,同一个用户登陆多次,则显示一次即可 who -u|grep -o "^[[:alnum:]]*\>"|uniq 2. 取出最后登陆到当前系统的用户信息 who|tail -n1 3. 取出当前系统上被用户当作其默认shell的最多的那个sh…

    Linux干货 2016-11-21
  • 马哥教育网络班22期+第5周课程练习

    1、显示当前系统上root、fedora或user1用户的默认shell;cat /etc/passwd | grep "^\<root\>"cat /etc/passwd | grep "^\<fedora\>"cat /etc/passwd | grep "^\<user1\…

    Linux干货 2016-09-19