快照进度

sage

如果最近感觉有点慢,那是因为我主要
在过去的几周里,我一直在实现快照机制。  这方面进展
相当顺利:我可以创建快照并访问快照
内容。  与递归记账的交互一直很棘手,
因为延迟传播意味着当更改在层次结构中向上
传播时,它们可能会传播到最近的快照中,但我认为我已经
解决了这个问题。

工作原理如下:

$ tar jxf ~/src/linux-2.6.24.tar.bz2 & [1] 18715 $ mkdir linux-2.6.24/.snap/1   # 创建几个快照 $ mkdir linux-2.6.24/.snap/2 $ mkdir linux-2.6.24/.snap/3 $ kill %1 $ ls -al linux-2.6.24/.snap    # 查看目录大小随时间增加 total 3 drwxr-xr-x 1 sage sage 1205808 Jul 24 10:23 ./ drwxr-xr-x 1 sage sage 1205808 Jul 24 10:23 ../   # 实时副本 drwxr-xr-x 1 sage sage 1028511 Jul 24 10:23 1/ drwxr-xr-x 1 sage sage 1144455 Jul 24 10:23 2/ drwxr-xr-x 1 sage sage 1177913 Jul 24 10:23 3/ [1]+  Terminated              tar jxf ~/src/linux-2.6.24.tar.bz2 $ ls linux-2.6.24/.snap/1/Documentation/ | wc 23      24     472 $ ls linux-2.6.24/.snap/3/Documentation/ | wc 32      33     680

等等。  “.snap” 隐藏目录可以在任何地方访问(就像 Netapp 上的 .snapshot
一样)。  可以随时为任何目录创建快照,
并递归应用于所有嵌套内容。

待办事项:

  • 正确处理目录重命名(这与快照域树的交互方式很有趣)。
  • 快照删除
  • 垃圾回收(元数据和数据)
  • 更新内核客户端(我目前只使用fuse客户端进行更快的原型开发)