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