作者:Sanjay Ghemawat
          Howard Gobioff
          Shun-Tak Leung
翻译:tinyfool

5.1.3 主节点复制

为了可靠性主服务器状态要被复制。它的操作日志和检查点都要复制到多台机器上。对状态的操作被设计为,只有当它的日志记录被写入到本地硬盘以及所有的主服务器副本以后才会被提交。为了简化设计,一个主服务器进程管理所有改变系统状态的操作包括如垃圾回收这样的后台活动。当它失效,它几乎可以马上重新启动。当它的机器或者硬盘损坏,GFS架构之外的 监视机构会总启动一个包含这操作日志副本的新主服务器进程。客户机只使用主服务器的规范名(例如,gfs-test)与之联络,这是一个DNS别名,如果主服务器被重新指定它可以相应的改变。

此外,还有些"影子"主服务器,它们即使在真正的主服务器当机的时候也只提供文件系统的只读访问。它们是影子,而不是镜像,所以它们的数据总是比主服务器更新要慢点,通常是1秒以下。它们可以提高那些不经常改变的文件的读取效率,或者是帮助那些不在乎数据更新略有延迟的程序。事实上,自从文件从块服务器被读走,应用程序就不再关心它们内容的变化了。在短暂窗口可以延迟的是文件的元数据,比如目录的内容或者访问控制信息。

为了保持自己被通知,影子主服务器增长中的操作日志的副本,并按照与主服务器完全相同的顺序对自己的数据结构执行修改。类同主服务器,它也在启动的时候轮询块服务器(之后定期访问)以获得块副本的位置,交换心跳信息以监控它们的状态。它仅在主服务器决定创建和删除副本的时候,才需要依靠主服务器得到副本位置的更新结果。


<< 5.1.2 块复制 | 5.2 数据完整性 >>