OpenZFS 近日合并了名为"Block Cloning"的 PR。
据介绍,Block Cloning 支持通过仅创建对数据块的附加引用而无需复制数据本身,将文件(或文件块的子集)克隆到另一个(或相同)文件中。Block Cloning 属于快速的手动重复数据删除方式。
Block Cloning 在很多方面与现有的重复数据删除类似,但也有重要的区别:
- 删除重复数据操作可自动运行,而 Block Cloning 不是自动的 —— 必须使用专用的系统调用来克隆给定的文件(块)
-
删除重复数据将所有数据块保留在其表中,即使是仅引用的数据块。对于 Block Cloning,至少有两个对给定数据块的引用时,Block Cloning 才会在其表中创建条目。如果该块从未被显式克隆或删除了倒数第二个引用,既不会产生空间开销,也不会产生性能开销
-
删除重复数据需要加密的强哈希作为校验和或附加数据验证。Block Cloning 适用于任何校验和算法,甚至禁用校验和
点此查看具体实现细节。