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

4.1.1 机制

当应用程序删除了一个文件,主服务器立刻把删除记录到日志里就像其他的改变一样。然而,它不是马上回收资源,而是把文件改成一个包含删除时间戳的隐藏的名字。当主服务器对文件系统命名空间进行常规扫描的时候,它会删除所有有如此隐藏文件名的文件,如果它们已经存在超过3天了(这个时间间隔是可以被设置的)。直到此时,文件仍旧可以用新的特殊的名字访问读取,可以被反删除,通过改名把它变为正常文件。如果隐藏文件从名称空间中移走,保存在内存中它的元数据就被删除了。这有效的服务于对所有块的连接。

在相似的对块命名空间的常规扫描,主服务器找到孤儿块(无法从任何文件到达的块)并擦除它们的元数据。在与主服务器交换数据的心跳信息中,每个块服务器报告它拥有的块的信息的一个子集,然后主服务器回复指出哪些块在主服务器的元数据中已经不存在了。块服务器上面就是任意删除这些块的副本了。


<< 4.4 垃圾收集 | 4.4.2 讨论 >>