Google云计算之GFS

1.什么是GFS?

  • Google文件系统(Google File System,GFS)是一个大型的分布式文件系统。它为 Google云计算提供海量存储,并且与Chubby、MapReduce及Bigtable等技术结合十分紧 密,处于所有核心技术的底层。

  • Google GFS 不是一个开源的系统,我们仅能从Google公布的技术 文档来获得相关知识。

  • Google GFS 的新颖之处在于它采用廉价的商用机器构建分布式文件系统,同时将 GFS 的设计与Google应用的特点紧密结合,简化实现,使之可行,最终达到创意新颖、有用、 可行的完美组合。

  • Google GFS 将容错的任务交给文件系统完成,利用软件的方法解决系统可靠性 问题,使存储的成本成倍下降。

  • Google GFS 将服务器故障视为正常现象,并采用多种方法,从多 个角度,使用不同的容错措施,确保数据存储的安全、保证提供不间断的数据存储服务。

  • 系统架构

    在这里插入图片描述

    • Client 是GFS提供给应用程 序的访问接口,它是一组专用接口,不遵守POSIX规范,以库文件的形式提供。应用程序 直接调用这些库函数,并与该库链接在一起。
    • Master 是GFS的管理节点,在逻辑上只有一 个,它保存系统的元数据,负责整个文件系统的管理,是GFS文件系统中的“大脑”。
    • Chunk Server 负责具体的存储工作。数据以文件的形式存储在 Chunk Server上,Chunk Server的个数可以有多个,它的数目直接决定了GFS的规模。GFS将文件按照固定大小进行分块,默认是64MB,每一块称为一个Chunk(数据块),每个Chunk都有一个对应的索引号(Index)。

2.有哪些特点

  • 采用中心服务器模式

    GFS采用中心服务器模式管理整个文件系统,简化了设计,降低了实现难度。Master 管理分布式文件系统中的所有元数据。文件被划分为Chunk进行存储,对于Master来说, 每个Chunk Server只是一个存储空间。当然,中心服务器模式也带来一些固有的缺点,比如极易成为整个系统的瓶颈等。

  • 不缓存数据

    GFS文件系统根据应用的特点,没有实现缓存,这是从必要性和可行性两方面考虑的。

    • 从必要性上讲,客户端大部分是流式顺序读写,并不存 在大量的重复读写,缓存这部分数据对提高系统整体性能的作用不大。

    • 从可行性上讲,如何维护缓存与实际数据之间的一致性是一个极其复杂的问题,在GFS中各个Chunk Server的稳定性都无法确保,加之网络等多 种不确定因素,一致性问题尤为复杂。

  • 在用户态下实现

    文件系统是操作系统的重要组成部分,通常位于操作系统的底层(内核态)。 然而,GFS却选择在用户态下实现,主要基于以下考虑。

    • 在用户态下实现,直接利用操作系统提供的POSIX编程接口就可以存取数据, 无须了解操作系统的内部实现机制和接口,降低了实现的难度,提高了通用性。
    • POSIX接口提供的功能更为丰富,在实现过程中可以利用更多的特性,而不像内核编程那样受限。
    • 用户态下有多种调试工具,而在内核态中调试相对比较困难。
    • 用户态下,Master和Chunk Server都以进程的方式运行,单个进程不会影响到整个操作系统,从而可以对其进行充分优化。在内核态下,如果不能很好地掌握其特性,效 率不但不会高,甚至还会影响到整个系统运行的稳定性。
    • 用户态下,GFS和操作系统运行在不同的空间,两者耦合性降低,方便GFS自身和内核的单独升级。
  • 只提供专用接口

    通常的分布式文件系统一般都会提供一组与POSIX规范兼容的接口,使应用程序可以 通过操作系统的统一接口透明地访问文件系统,而不需要重新编译程序。GFS在设计之初,是完全面向Google的应用的,采用了专用的文件系统访问接口。

    • 降低了实现的难度。通常与POSIX兼容的接口需要在操作系统内核一级实现, 而GFS是在应用层实现的。
    • 采用专用接口可以根据应用的特点对应用提供一些特殊支持,如支持多个文件并发追加的接口等。
    • 专用接口直接和Client、Master、Chunk Server交互,减少了操作系统之间上下 文的切换,降低了复杂度,提高了效率。

3.它的容错机制

  • Master容错

    # Master上保存了GFS文件系统的三种元数据
    1.命名空间,也就是整个文件系统的目录结构。
    2.Chunk与文件名的映射表。
    3.Chunk副本的位置信息,每一个Chunk默认有三个副本。
    
    • 首先就单个Master来说,对于前两种元数据,GFS通过操作日志来提供容错功能。

    • 第三种元数据信息则直接保存在各个Chunk Server上,当Master启动或Chunk Server向Master 注册时自动生成。因此当Master发生故障时,在磁盘数据保存完好的情况下,可以迅速恢复以上元数据。

    • 为了防止Master彻底死机的情况,GFS还提供了Master远程的实时备份, 这样在当前的GFS Master出现故障无法工作的时候,另外一台GFS Master可以迅速接替其工作。

  • Chunk Server容错

    • GFS采用副本的方式实现Chunk Server的容错。
    • 每一个Chunk有多个存储副本(默认为三个),分布存储在不同的Chunk Server上。副本的分布策略需要考虑多种因素,如网络的拓扑、机架的分布、磁盘的利用率等。对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入。
    • 之后,如果相关的副本出现丢失或不可恢复等情况,Master自 动将该副本复制到其他Chunk Server,从而确保副本保持一定的个数。

4.它的相关技术

  • 大规模集群安装技术

    安装GFS的集群中通常有非常多的节点,最大的集群超过1000个节点,而现 在的Google数据中心动辄有万台以上的机器在运行。因此迅速地安装、部署一个GFS的系 统,以及迅速地进行节点的系统升级等,都需要相应的技术支撑。

  • 故障检测技术

    GFS是构建在不可靠的廉价计算机之上的文件系统,由于节点数目众多,故障发生十分频繁,如何在最短的时间内发现并确定发生故障的Chunk Server,需要相关的集群监控技术。

  • 节点动态加入技术

    当有新的 Chunk Server 加入时,如果需要事先安装好系统,那么系统扩展将是一件十分烦琐的事情。如果能够做到只需将裸机加入,就会自动获取系统并安装运行,那么将会大大减少GFS维护的工作量。

  • 节能技术

    Google采用了多种机制来降低服务器的能耗,例如对服务器主板进行修改,采用蓄电池代替昂贵的UPS(不间断电源系统)来提高能量的利用率。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值