ZFS 估计的发送大小远大于总数据大小

ZFS 估计的发送大小远大于总数据大小

zfs send -R -v pool/fs@snap

send from @ to pool/fs@snap estimated size is 6.50T

...但来自zpool list

NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
pool  3.62T  2.36T  1.27T    65%  2.87x  ONLINE  -

一条zfs send溪流真的能比它来源的水池大几倍吗?


使用 Linux 0.6.1 上的 ZFS 进行观察。

答案1

作为特格拜恩斯在评论中指出,zfs send流不会从任何现有的存储级重复数据删除中受益。它们也不会从任何其他设置中受益;这就是为什么zfs send | zfs receive可以使用它将数据迁移到新设置,否则这些设置只有在重写数据后才会生效——例如启用或禁用重复数据删除,或更改压缩算法。

这是 zfs 发送流变得比分配的存储空间大得多的主要原因。有可能在重复数据删除的具体情况下,除了最小意外原则(如果你需要的话)之外,原因在于重复数据删除(尤其在 ZFS 中)的成本非常高,因此决定 zfs 发送流应该可以在规格较低的系统上接收。

您的数据显示已分配约 2.36 TB,总体重复数据删除率为 2.87 倍。简单地将这两个数字相乘可得出 6.77 TB,这与估计的 6.50 TB 非常接近,是一个合理的大概数字。值得注意的是,6.50 TB 这个数字与文件系统中的快照有关,而 2.36 TB*2.87 这个数字与整个池有关。

如果您的 ZFS 实现支持该选项,您可能会遇到一些好运zfs send -D(生成重复数据删除的 zfs 发送流)。

使用 Linux 0.6.1 上的 ZFS 进行观察。

与您的问题没有直接关系,但我建议升级。稳定佐利截至撰写本文时(2015 年 6 月),版本号为 0.6.4.1,自 2013 年 3 月 0.6.1 版本发布以来,已经进行了大量增强和修复。

相关内容