web-dev-qa-db-ja.com

dedup = offを設定した後(しばらくオンにした後)にメモリ使用量を減らす方法は?

dedup=onを設定するとメモリ使用量が多くなり、その価値がほとんどないことを知っています(例: https://serverfault.com/a/569099/208661 を参照)。ただし、それがどのように機能するかを確認するためにオンにし、キャッシュ付きの1.4 TBプール。メモリ消費量(zfsを使用した場合と使用しない場合の起動後のメモリ使用量の違い))に20GBを配置しました。はbtrfsよりも約8GB高くなっています。dedup=onを設定した後、btrfsよりも顕著に高くなりましたが、8GBではありませんでした。今度はdedupになりました。 offと再起動しましたが、メモリ消費量はまだ高いです(私は同じだと思います)。

それは高いままですか、つまり、このメモリ消費を回避するためにプールを破棄して再作成する必要がありますか、それがダウンするまで時間がかかりますか、スピードアップするために何か(ある種の再複製)を行うことができますか?処理する?

2
Karl Richter

問題が重複排除に起因すると仮定すると、新しいデータのみが重複排除され、古いデータは重複排除されたままであり、重複排除テーブルも残るため、あまり役に立ちません。 http://list.zfsonlinux.org/pipermail/zfs-を参照)ディスカッション/ 2013- 3月/007668.html

これは非常によくある質問です。プールで技術的にdedup = offを設定でき、新しく書き込まれたデータは重複排除されません。プールは引き続き完全に機能します。ただし、既存の重複排除されたすべてのデータに必要なデータ構造がなくなることはなく、パフォーマンスへの影響もなくなりません。

要するに、重複排除によって引き起こされる速度低下を修正するために重複排除を無効にしている場合、それは機能しないということです。その場合、データを別のストレージデバイスに送信し、プールを破棄し、重複排除をオフにして新しいプールを作成してから、データを復元する必要があります。現在、他の方法はありません。

移動するのに20GBしかないので、これはあなたの場合はかなり速いでしょう。

重複排除の背後にある詳細に関するその他の優れたリソースは次のとおりです。

4
user121391