btrfs 的重复数据删除语义 - 元数据不同,文件数据相同

btrfs 的重复数据删除语义 - 元数据不同,文件数据相同

所以我读了这篇维基文章关于使用 btrfs 进行重复数据删除。但是,它没有描述 btrfs 重复数据删除所遵循的语义。

假设您有十几个文件。它们都包含相同的数据,但它们的用户和组所有权和权限(以及扩展属性、ACL 等)可能不同。

Btrfs 的重复数据删除功能是否可以让我将磁盘大小减少到之前整体大小的大约十二分之一?

硬链接显然不起作用,因为它们的语义意味着共享元数据(所有权、权限)。

我的内核版本是3.16。

答案1

重复数据删除在块级别进行。如果您的文件内容相同但元数据不同,假设系统完全重复数据删除,则整个内容将仅存储一次。即使文件仅部分相同,重复数据删除也可以节省空间。例如,如果您有两字节块和包含以下内容的文件

file1 = ABCD
file2 = AABAAB
file3 = AAB

那么它们将被存储在 5 个块中:

file1 = block1,block2
file2 = block3,block4,block1
file3 = block3,block5

如果您有相同的目录(即包含具有相同名称和相同索引节点号的文件的目录,例如作为cp -al或类似的文件级重复数据删除增量备份的结果),那么它们也可以存储在相同的块中。

相关内容