在 Solaris 11 中,在名为 I 的池中mypool
激活重复数据删除
zfs set dedup=on mypool
然后我创建了两个 100 MB 文件:file1
及其副本file1copy
.只是它们的名称不同:它们的内容是相同的。
的挂载点mypool
是/mypool
。如果我将 和 复制file1
到file1copy
中/mypool
,则输出
zpool list mypool
表示DEDUP
比率为勉强1.34x
。为什么??
然后,遵循这指南我创建了一个文件系统
zfs create -o dedup=on -o mypool/archive
然后是两个用户的文件系统mypool/archive/a
,mypool/archive/b
它从父文件系统继承了重复数据删除功能。
如果现在我复制file1
到mypool/archive/a
和file1copy
到mypool/archive/b
仍然有一个DEDUP
比例1.34x
。只有2
当我把相同的文件,比如说file1
,进入两个都 mypool/archive/a
和mypool/archive/b
。为什么??
简单的名字差异就能有力地摧毁重复数据删除吗?重复数据删除不应该在块级别起作用吗?
1) 输出zdb -S mypool
Simulated DDT histogram:
bucket allocated referenced
______ ______________________________ ______________________________
refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
------ ------ ----- ----- ----- ------ ----- ----- -----
1 1.48K 189M 189M 189M 1.48K 189M 189M 189M
2 800 100M 100M 99.9M 1.56K 200M 200M 200M
Total 2.26K 289M 289M 288M 3.04K 389M 389M 388M
dedup = 1.35, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.35
2) 输出zdb -b mypool
Traversing all blocks to verify nothing leaked ...
No leaks (block sum matches space maps exactly)
bp count: 3679
bp logical: 410970112 avg: 111707
bp physical: 408433664 avg: 111017 compression: 1.01
bp allocated: 615948288 avg: 167422 compression: 0.67
bp deduped: 157286400 ref>1: 800 deduplication: 1.26
SPA allocated: 458661888 used: 76.47%
在mypool/archive/a
和mypool/archive/b
文件夹中还有另一个文件。
答案1
并非所有数据都是“可重复数据删除”的。这里有一篇文章解释了这