Google云计算技术:让多达百万台廉价计算机协同工作,共同完成任务的简单而高效的技术。
GFS是一个大型的分布式文件系统,为Google云计算提供海量存储,处于Google云计算所有核心技术的底层。
GFS的系统架构:
GFS的系统节点分为3类角色:
(1)Client(客户端) 提供给应用程序的访问接口
(2)Master(主服务器) GFS的管理节点,保存系统的元数据,负责整个文件系统的管理
(3)Chunk Server(数据块服务器) 负责具体的存储工作,数据以文件的形式存储在ChunkServer中。
GFS将文件按照固定大小进行分块,默认大小为64MB,每一块称为一个Chunk(数据块),每个Chunk都有一个对应的索引号。
GFS的实现机制:
GFS的特点:
(1)采用中心服务器模式
可以方便地增加Chunk Server
Master维护了一个统一的命名空间,掌握系统内所有Chunk Server的情况,方便进行数据存储的负载均衡
由于只有一个中心服务器,不存在元数据的一致性问题
(2)不缓存数据
文件操作大部分是流式读写,不存在大量重复读写,使用Cache对性能提高不大
Chunk Server上数据存取使用本地文件系统
从可行性看,Cache与实际数据的一致性维护也极其复杂
对于存储在Master中的元数据,GFS采取了缓存策略。
(3)在用户态下实现
利用POSIX编程接口存取数据降低了实现难度,提高通用性
POSIX接口提供功能更丰富
用户态下有多种调试工具
Master和Chunk Server都以进程方式运行,单个进程不影响整个操作系统
GFS和操作系统运行在不同的空间,两者耦合性降低
(4)只提供专用接口
GFS的容错机制:
(1)Master的容错机制
Master保存了GFS文件系统的3中元数据:
命名空间(整个文件系统的目录结构)
chunk与文件名的映射表
chunk副本位置信息,直接保存在各个chunk server上(每一个chunk默认有3个副本)
Master的容错机制:
对于前两种元数据,GFS通过操作日志来提供容错功能。
第三种元数据则保存在各个ChunkServer上。
当Master发生故障时: 磁盘数据保存完好-->迅速恢复元数据
Master彻底死机-->使用Master的远程实时备份,另一个GFS Master可以迅速接替其工作。
(2)ChunkServer容错机制
GFS采用副本的方式实现Chunk Server的容错
每一个Chunk有多个存储副本(默认为三个),分布存储在不同的Chunk Server上
对于每一个Chunk,必须将所有的副本全部写入成功,才视为成功写入
相关的副本出现丢失或不可恢复等情况,Master自动将该副本复制到其他Chunk Server,从而确保副本保持一定的个数
GFS中的每一个文件被划分成多个Chunk,Chunk的默认大小是64MB
每一个Chunk以Block为单位进行划分,大小为64KB,每一个Block对应一个32bit的校验和
GFS的系统管理技术: