web-dev-qa-db-ja.com

ZFS重複排除1回限りのスキャン/重複排除をトリガーします

しばらくの間実行されているZFSファイルシステムがあり、最近、それを(ついに!)最新のZFSバージョンにアップグレードする機会がありました。私たちのデータは重複排除を叫ぶものではありませんが、小さなテストに基づいて、それを利用することでスペースの5〜10%を無料で取り戻すことができると確信しています。ファイルシステムで重複排除を有効にしましたが、新しいファイルは徐々に重複排除されていますが、データの大部分(95%以上)はすでにファイルシステムに存在しています。

データをプール外に移動してから再コピーする以外に、既存のデータの重複排除スキャンをトリガーする方法はありますか?非同期またはライブである必要はありません。

(そして参考までに、ファイルシステム全体を別のファイルシステムにコピーしてからマウントを切り替えるだけの十分なスペースがプールにありません。)

5
Jake Wharton

いいえ、既存のデータをコピーせずに重複排除することはできません。 Rember、Dedup-Table全体がRAM/L2ARCに収まる場合にのみ、フォームdedupのメリットがあります。

重複排除をオンにしなくても、zds -Spoolnameを使用して重複排除のメリットを見積もることができます。

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
5
blafasel

現在の重複排除実装(ビルド134)はRAM要求が厳しく)であることに注意してください大量のデータが削除されると、ZFSプールをかなりの期間ブリックするという未解決の問題があります。 http://bugs.opensolaris.org/bugdatabase /view_bug.do;jsessionid=a24a5761748eedbb50cd39d3530e?bug_id=692439

既存のデータの重複排除については、同じプールにとどまりながらファイルを1つずつコピー/移動することでうまくいくはずです。

3
jlliagre

Blasaferによるすばらしい答えですが、追加します Block Pointer rewrite は、すでに保存されているデータの再圧縮を可能にする計画された機能であり、おそらく再重複排除にも使用できます。しかし、それは将来のことであり、とにかく推測しているだけです。

1
Luke404