我知道RDC是如何将分布式文件系统复制(DFSR)保持活动目录中的所有共享设备上的数据同步在一起的。 我只理解RDC把数据分成块,然后把每个块都散列成所谓的签名。 这组签名从服务器传输到客户端。 客户端将服务器签名与自己的签名进行比较。 然后,客户端请求服务器只发送尚未在客户端上的签名的数据。
我不明白的是微软的这句话:
“RDC通过计算在文件中每个字节位置计算的指纹函数的局部最大值来将文件的数据分成块(chunk),指纹函数是一个可以递增计算的散列函数,例如,如果计算函数F在文件Bi … Bj的一个字节范围内,应该可以通过增加字节Bj + 1并减去字节Bi来递增地计算F(Bi + 1 … Bj + 1)来自文件Bi … Bj的字节称为哈希窗口,这个窗口的长度(以字节为单位)称为哈希窗口大小。
RDC库的FilterMax签名生成器通过在前沿添加字节并在窗口后沿减去字节,在整个文件中“滑动”哈希窗口。 同时,发生器不断检查给定字节范围内的指纹函数值序列,称为地平线大小。 如果指纹函数值是该范围内的局部最大值,则将其字节位置select为“分割点”或块边界。
- 虚拟机快照恢复问题
- 在Active Directory复制时需要触发程序
- DNS服务没有运行在沙盒和疏远的单个域控制器上
- 使用“net group”命令获取用户的csv / txt列表
- 相同的域名内部和外部问题
在文件被分成块之后,签名生成器为每个块计算强散列值(MD4散列),称为签名。 签名可以用来比较两个任意不同版本的文件的内容。
由于签名文件的大小与原始文件的大小成线性增长,所以比较非常大的文件可能是昂贵的。 通过recursion地将RDCalgorithm应用于签名文件,该成本大大降低。 例如,如果原始文件大小为9 GB,则签名文件大小通常约为81 MB。 如果将RDCalgorithm应用于签名文件,则得到的二级签名文件大小将约为5.7 MB。
我不明白的是两件事情:什么是“可以递增计算”的东西与RDC如何工作? 而recursion如何帮助减less带宽?
关于“Incrementally”的部分只是简单地说,哈希窗口可以通过从窗口前面取一个字节来“滑动”,并将下一个字节添加到窗口的末尾。 因此,窗口可以从文件的开头逐渐地滑动到结尾,以检测文件的实例之间的“移位”。 比方说,你有一个文本文件。 指纹是从该文本文档的数据块中生成的。 然后,在稍后的时间,在文本文档的开头添加一段文字。 该窗口可以从头开始,并通过文件递增,直到它匹配已经有指纹的块。
关于再生性的部分,比如说,你有一个由字节“ABCD”组成的数据块和由字节“GHIJ”组成的另一个块。 每个块可能有一个“01”和“02”或四个字节的指纹。 该algorithm不是发送全部四个字节,而是采用“0102”(两个指纹一起)的指纹,这可能产生“03”的指纹。 如果目标文件具有相同的指纹指纹,则可以假设所有的底层块都不变,并且不需要传送。