重复数据删除:固定和可变长度数据块
比特网 发表于:12年12月26日 09:00 [转载] 比特网
1) 消除过小块
先按照原始算法标识块边界,再反复合并小于或等于某个限定值L的块,直到所有的块都大于L。实际应用中,一般是在chunk size到达限定值L之前忽略掉指纹。
2) 避免过大块
先用原始算法标识块边界,再将大于限定值T的块划分成n个等于T的块,最后那块可能小于等于T。缺点是对于大块,重复了固定分块的缺点:在块头部某个位置插入字节会造成整个块hash值的改变,其实块中大部分内容是保持不变的。
3) 双划分因子
用两个D的值:每次计算D和D'(例如D'=D/2)两套指针,若找到了D'-match,不马上划分为块边界,先记录下来。如果D- match在设定的Tmax之前有了,就用D-match,若到了Tmax还没有,就看之前有D'-match否,有就用D'-match划分,没有就用 Tmax。
4) 双边界,双划分因子
结合以上三种方法。
u A low-bandwidth network file system
Muthitacharoen A, Chen B, Maziéres D. In: Proc. of the 18th ACM Symp. on Operating System Principles (SOSP 2001). New York: ACM Press, 2001. 174−187.
LBFS是由MIT开发的一款网络文件系统,目标在于减少传输带宽,传输之前判断数据块是否已经在目标机器上存在,如果存在则不用发送数据块。另 外,LBFS用SHA-1值的前64为作块索引,有冲突的可能性。更新采用非同步方式,服务器端先应答客户端,在更新数据库。所以LBFS使用数据库管理 块的hash值,但并不依赖于数据库。服务器端与客户端共享相同的数据库索引号。LBFS的dedupe主要工作原理如下图所示:

LBFS的显著优点是一次只需要考虑两个文件,方便快速;缺点是一个文件的重复数据可能分布在多个文件中,这样的方法能检测到的重复数据非常有限。 LBFS也同上面一样,为防止分块中的极端现象,设置了块大小的最大、最小值。在LBFS的测试数据中,滑动窗口大小事48bytes,平均块大小为 8KB,最小的块为2KB,最大块为64KB。
