来自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 观察。
正如tegbains在评论中指出的那样,
zfs send
流不会从任何存储级重复数据删除中受益。他们也不会从任何其他设置中受益;这就是为什么zfs send | zfs receive
可用于将数据迁移到新设置的原因,否则这些设置只有在数据被重写后才会生效——例如启用或禁用重复数据删除,或更改压缩算法。这是您的 zfs 发送流变得比分配的存储空间大得多的主要原因。在重复数据删除的特定情况下,超出最小意外原则(如果您需要)的一个可能原因是重复数据删除(尤其是在 ZFS 中)非常昂贵,因此决定 zfs 发送流应该在较低的-spec'd系统。
您的数据显示分配了大约 2.36 TB,总体重复数据删除率为 2.87 倍。天真地将这两个数字相乘得出 6.77 TB,这与估计的 6.50 TB 足够接近,是一个合理的大致数字。值得注意的是,6.50 TB 数字与文件系统中的快照相关,而 2.36TB*2.87 数字与整个池相关。
如果您的 ZFS 实现支持该选项,您可能会遇到一些运气
zfs send -D
(生成重复数据删除的 zfs 发送流)。与您的问题没有直接关系,但我建议升级。截至撰写本文时(2015 年 6 月),稳定的ZoL为 0.6.4.1,自 2013 年 3 月发布 0.6.1 以来,已经有许多增强和修复。