Google GFS是Google为了满足自己的需求所设计的分布式文件系统。 GFS 定义了三种角色: Client, Master, Chunk Server。
Client: 调用GFS的接口函数实现的应用程序
Master: GFS 中的大脑。管理所有的Chunk Server节点和GFS中的元数据。
Chunk Server: 负责存储数据。 所有的数据都分成64MB大小分布式存储--即chunk, 每个chunk在创建时master会给分配一个64位的chunkID。chunk以普通的Linux文件存储。
当client首先发送请求到GFS的master。 master返回相应chunk server以及chunk 信息。client 根据这些信息给chunk server 发送请求,去做读或者写的操作。
GFS有三种元数据:Name Space, chunk与文件名的映射表, chunk副本的位置信息(每块数据有三个副本)。对于前两种元数据, GFS通过日志来replay。第三种是由master启动后,chunk server向master注册时生成。
一次写入,必须在所有副本全部写入成功,才算为成功写入。 每个chunk以block为单位划分, 每个block 64KB, 每个block对应一个32bit的校验和。 如果读取chunk时,数据和校验和不匹配,就返回错误, 从而使client选择其他check server上的副本。
GFS 主要作为BigTbale的文件系统来支持BigTable的应用。
阅读(988) | 评论(0) | 转发(0) |