GFS - Google File System
设计一个分布式文件系统遇到的难点:
① 高性能 导致 在大量服务器之间共享数据
② 大量的服务器 导致 错误时常发生
③ 错误容忍 导致 大量数据复制
④ 数据复制 导致 潜在的数据不一致性
⑤ 更好的一致性 导致 更低的性能
GFS优点是解决了很多问题:并行,错误容忍,复制和一致性。
强一致性:表现的如同单个服务器一样,使用磁盘存储,单机禁止并行执行指令,即使机器崩溃,也保证能读取到先前写过的值,但是单个服务器并无强一致性。
GFS产生的环境:许多Google的服务需要快速一体的存储系统,大部分的操作是读取或者追增......
GFS系统架构:
客户端包括文件库跟RPC
每个文件分为一个个64MB,每个块都在至少3个块服务器上有副本,可以在所有块服务器上传输数据(支持并行读写和巨大文件)
单主服务器,主服务器有其备份服务器
主服务器负责找到文件索引(需要文件的chunk映射,chunk及其副本们的位置等),块服务器负责提供具体文件
服务器端需要携带的文件:
主服务器:
① 必需:每个chunk所存储的文件的索引,每个chunk服务器的版本号
② 非必需:chunk服务器列表,每个chunk的主副本,主副本租契时间
副本服务器:
版本记录(易于同步)
快照(易于恢复)
读取一个文件的过程
服务端发送文件名和偏移量给主服务器,主服务器根据索引找到对应的块和其副本服务器(必须是拥有最新的版本号,从副本服务器版本记录中获取),发给服务端,服务端读取后把数据发给服务端
追加文件的过程