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

2.6.2 块位置

主服务器并不保存哪个块服务器有给定块的信息的持久化记录。它只是在启动的时候向块服务器要求这些信息。然后主服务器就可以保持它的信息最新,因为它控制了所有的块位置分配,而且用规律的心跳信息监控块服务器的状态。

开始的时候,我们试图把块位置信息持久化的保存在主服务器,但是我们发现在启动的时候查询块服务器,然后定期询问的方式更简单。这简化了在块服务器在加入和离开集群,改名,失效,重启等等情况下,主服务器和块服务器的同步问题。在一个有数百台服务器的集群,这些事件发生的太频繁了。

理解这个设计思想的另外的途径是,理解块服务器才能最后确定一个块是否在它的硬盘上。我们没有打算在主服务器上面管理一个这些信息的全局视图,因为块服务器的错误可能会导致块自动消失,亦或者管理员可能会改变一个块服务器的名字。