40TBのデータを重複排除する方法は?


17

私は、3つのファイルシステムで最大40TBのデータを持つ研究クラスターを継承しました。データは約15年前までさかのぼり、さまざまな理由で研究者が互いにデータをコピーし、その後コピーに固執するだけで、かなりの量の重複が発生する可能性が最も高くなります。

fdupesやrmlintなどの重複排除ツールについて知っています。このような大規模なデータセットで動作するものを探しています。すべてのデータをクロールするのに数週間(または場合によっては数か月)かかるかどうかは気にしません。しかし、RAMで何らかの形で非常に効率的なツールを見つけるか、RAMでなくファイルに必要なすべての中間データを保存できるツールを見つける必要があります。このすべてのデータを1つのセットとしてクロールすると、RAM(64GB)が使い果たされると想定しています。

現在、900GBツリーでfdupesを試しています。処理の25%であり、RAMの使用量は常にゆっくりと増え続けており、現在は700MBです。

または、プロセスをディスクマップRAMを使用するように指示する方法がありますので、はるかに多く利用可能であり、システムRAMを使用しませんか?

CentOS 6を実行しています。


関連する場合、ファイルシステムはXFSです。つまり、XFSのような重複除外機能を備えたfsではないことを知っています。
マイケル・スタウファー14

そもそもなぜRAMが心配なのですか?OSには独自のメモリ管理アルゴリズムがあり、RAMの使用量が「忍び寄る」という事実は、最終的にすべてのRAMを使い果たすことを意味しません。私はそれが起こらないと確信しています。
アートゲルトナー14

1
専用のツールがどのように機能するかはわかりませんが、各ファイルのハッシュを計算し、ファイルパスとともにログに記録してから、ハッシュで並べ替えて重複排除することができます。シンプルなPythonスクリプトで実行できるか、Bashでも実行できるはずです。RAMの使用量は、並べ替え手順を除いて最小限にする必要がありますが、何らかの変更されたマージソートを使用して、合理的に低く抑えることができると思います。
グロノスタジュ14

1
はい、専用ツールはハッシュを計算しますが、最初にファイルサイズを調べたり、計算を必要とするフルハッシュの量を制限するためにファイルの先頭のみをハッシュするなどのことを行います。
マイケル・スタウファー14

RAMについては、ファイルサーバーの速度を落とすことを心配していました。答えに対する以下のコメントを参照してください。
マイケル・スタウファー14

回答:


4

または、プロセスをディスクマップRAMを使用するように指示する方法がありますので、はるかに多く利用可能であり、システムRAMを使用しませんか?

はい、スワップドライブと呼ばれます。おそらく既にお持ちでしょう。RAMが不足することを心配している場合は、これを増やすことから始めるのが良いでしょう。ただし、自動的に機能するため、特別なことをする必要はありません。

私はfdupesを心配しません。それを試して、それは問題なく動作するはずです。


スワップに依存すると、システム全体の速度が低下すると考えていました-忙しいファイルサーバーです。しかし、おそらく心配するのに十分ではありませんか?ulimitを使用して、プロセスがどのような場合でもフェイルセーフとしてシステムRAMを超えて使用しないようにすることができます。しかし、クローとsmcはfdupesがとにかくそれほど多くのRAMを使用するとは思わないので、試してみてください。
マイケル・スタウファー14

1

ハッシュキーに基づいて重複を見つけることはうまく機能し、非常に高速です。

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

0

(hash、mtime)=> filepathを辞書にプッシュするか、エントリが既に存在する場合は削除するファイルをマークして、ツリーをたどるクイックアプリを作成します。ハッシュは、最初のNバイトで計算されたMD5になります。小さなNでハッシュを行い、次に大きなNでハッシュを使用して、いくつかの異なるパスを実行できます。

たぶん、Pythonの20行または30行未満でこれを行うことができます(os.walk()を使用)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.