模拟iDedup算法

在destor原型之上实现了类iDedup算法(介绍),其核心思想是只有当重复数据块在物理上连续才去重,可以通过一个threshold来设置序列的最小长度。因为底层存储并不是块设备,而是DDFS的container存储,不能判断数据块的DBN是否连续,所以我改为判断数据块所属container是否相邻。

修改后的算法和iDedup算法的另一大区别是没有重复树,重复树用于记录存储系统中重复的数据块,在多个匹配中寻找最长的一个。考虑到备份系统的负载特点,我觉得这种需求是非常少见的,所以只查找最新备份的序列。修改后算法的流程图如下:



算法的分支有些多,先画流程图再写代码可以少调很多bug。这幅图有一个小问题没有考虑周全,threshold=1不需要写入当前数据块。

posted on 2013-09-10 16:22  OpenNaive  阅读(359)  评论(0编辑  收藏  举报

导航