文档介绍:分布式存储和计算系统By 薛长俊2010-12-28返回MapReduceBigTableGoogle的三驾马车GFSGFS简介?组件失效不再被认为是意外,而是被看做正常的现象。常量监视器,错误侦测,容错以及自动恢复系统集成在系统中。?文件非常巨大。?大部分文件的修改,不是覆盖原有数据,而是在文件尾追加新数据。?应用程序和文件系统API的协同设计。GFS设计预期?这个系统由许多廉价易损的普通组件组成。?这个系统保存一定数量的大文件。?负载中主要包含两种读操作:大规模的流式读取和小规模随机读取。?负载中还包括许多大规模的顺序的写操作,追加数据到文件尾部。?系统必须高效的实现良好定义的多客户端并行追加到一个文件的语意。?高度可用的带宽比低延迟更加重要。GFS架构GFS单一主服务器?主服务器可以通过全局的信息精确确定块的位置以及进行复制决定。?主服务器保存三种主要类型的元数据:文件和块的命名空间,文件到块的映射,以及每个块副本的位置。?主服务器执行所有的名称空间操作。另外,它管理整个系统的所有块副本:它决定块的位置,创建新块和相应的副本,协调多变的系统活动,保持块被完全复制,均衡所有块服务器之间的负载,回收没有使用的存储空间。GFS系统交互GFS创建、重新复制、负载均衡?当主服务器创建一个块,会选择哪里放置初始的空副本。?新的副本放置在低于平均硬盘使用率的块服务器。?限制每一个块服务器上"近期"创建操作的数量。?把块分布在机架之间。?一旦块的可用副本数少于用户指定的值,主服务器会重新复制它。?主服务器周期性地对副本进行负载均衡:它检查当前的副本分布情况,然后移动副本以得到更好的硬盘剩余空间以及负载的均衡。GFS垃圾回收及过期副本检测?文件删除后,主服务器把文件改成一个包含删除时间戳的隐藏的名字。在主服务器对命名空间进行常规扫描时,物理删除超过某个时间段的包含删除时间戳的文件。?在相似的对块命名空间的常规扫描,主服务器找到孤儿块(无法从任何文件到达的块)并擦除它们的元数据。?主服务器在周期的垃圾回收中移除所有的过期副本。无论何时主服务器获得一个块的新租约,它增加块的版本号,然后通知当前副本。主服务器和这些副本都把新的版本号记录在它们的持久化存储的状态中。如果块服务器失效,或者块服务器当机的时候错过了一些操作,块副本会过期。GFS容错和诊断?高可用性。?快速恢复。不管主服务器和块服务器是如何关闭的,它们被设计为可以在数秒钟内恢复它们的状态并启动。?块复制。每个块被复制到不同机架上的不同的块服务器上。?主节点复制。为了可靠性主服务器状态要被复制。它的操作日志和检查点都要复制到多台机器上。?数据完整性。每个块服务器利用校验和来检查存储的数据是否损坏。块被分为64KB的大小,每个有一个对应的32位的校验和。?诊断工具。广泛而详尽的分析日志。