我试图从重复数据删除表/RAM 影响的角度,明确 zfs dedup 如何处理池中部分(但不是全部)数据集被重复数据删除的情况。我发现这是 2012 年 FreeBSD 邮件列表中的引文:
“请注意,只有启用了重复数据删除的文件系统才会真正参与重复数据删除。具有 dedup=off 的文件系统将不会进行重复数据删除。”
举例来说,假设我们有两个 zpools,A 和 B。Pool A 有 4 个数据集,包含 21 TB 的数据:
- 数据集 #1 和 #2 各包含 0.5 TB 数据,已启用重复数据删除
- 数据集 #3 和 #4 各包含 10 TB 数据,且已关闭重复数据删除
池 B 具有一个数据集,其中包含 1 TB 数据,并且已启用重复数据删除。
很明显,重复数据删除功能适用于每个池的整体。不清楚的是,重复数据删除对 RAM 的影响是否仅基于重复数据删除的数据集?换句话说,在其他所有条件相同的情况下,池 A 和池 B 的重复数据删除表大小和 RAM 影响是否相似,还是池 A 比池 B 大得多?
我认为重复数据删除表对于两者来说应该类似(设置为池范围,但不会受到任何非重复数据删除数据集的大小影响),主要是因为如果它大得多,就相当于强制对整个池进行重复数据删除,而不仅仅是对特定数据集进行重复数据删除。然而,我不清楚这是否真的如此。