触发 ZFS 重复数据删除一次性扫描/重做

Jak*_*ton 5 solaris zfs opensolaris

我有一个 ZFS 文件系统,它已经运行了一段时间,我最近有机会将它(终于!)升级到最新的 ZFS 版本。我们的数据不会引起重复数据删除,但我坚信基于小型测试,我们可以通过使用它免费获得 5-10% 的空间。我在文件系统上启用了重复数据删除,新文件正在慢慢被重复删除,但我们的大部分(95%+)数据已经存在于文件系统中。

除了将数据移出池然后将其重新复制回来之外,是否有任何方法可以触发对现有数据的重复数据删除扫描?它不必是异步的或实时的。

(仅供参考,池上没有足够的空间将整个文件系统复制到另一个文件系统,然后只需切换安装即可。)

小智 5

不,您不能在不复制现有数据的情况下对其进行重复数据删除。请记住,如果整个 Dedup-Table 适合 RAM/L2ARC,您只会从形式 dedup 中受益。

您可以使用 zds -S poolname 估计 dedup 的好处,甚至无需打开 dedup:

pfexec zdb -S rpool 模拟 DDT 直方图:

bucket              allocated                       referenced          
______   ______________________________   ______________________________
refcnt   blocks   LSIZE   PSIZE   DSIZE   blocks   LSIZE   PSIZE   DSIZE
------   ------   -----   -----   -----   ------   -----   -----   -----
     1     313K   13.4G   13.4G   13.4G     313K   13.4G   13.4G   13.4G
     2     111K   5.27G   5.27G   5.27G     233K   10.7G   10.7G   10.7G
     4    5.15K   96.2M   96.2M   96.2M    22.4K    403M    403M    403M
     8    1.03K   12.2M   12.2M   12.2M    10.3K    111M    111M    111M
    16      384   16.3M   16.3M   16.3M    8.10K    350M    350M    350M
    32      157   6.17M   6.17M   6.17M    6.47K    250M    250M    250M
    64       83   6.52M   6.52M   6.52M    6.37K    511M    511M    511M
   128       17    395K    395K    395K    2.61K   62.5M   62.5M   62.5M
   256        2      5K      5K      5K      802   2.24M   2.24M   2.24M
    2K        1     512     512     512    2.66K   1.33M   1.33M   1.33M
    8K        1    128K    128K    128K    8.21K   1.03G   1.03G   1.03G
 Total     431K   18.8G   18.8G   18.8G     613K   26.8G   26.8G   26.8G

dedup = 1.43, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.43
Run Code Online (Sandbox Code Playgroud)