Lustreから小さなファイルが多いディレクトリを削除する

Lustreから小さなファイルが多いディレクトリを削除する

削除したい非常に小さなファイルがたくさん含まれているディレクトリがありますが、単にディレクトリを削除するrm -rf /path/to/the/dirのに数日かかりました。

これが遅いことは奇妙に聞こえますが、ディレクトリは通常のファイルシステムのディレクトリではありません。クラスタのLustreファイルシステム上のディレクトリ。

rmLustreがインストールされているクラスタノードAでこのコマンドを実行していますが、LusterのバックエンドにはノードBとノードCに1つずつ合計2つのZFSファイルシステムがあるため、すべてのネットワークトラフィックが速度低下の原因になる可能性がありますrm

私よりもディレクトリを削除するより速い方法を知っている人はいますか?

答え1

次のようないくつかのGNUコマンドTarとrmは、Lustreで大容量ファイルを扱うときには非効率的です。。たとえば、何百万ものファイルがある場合、rm -rf *は数日かかることがあり、他のユーザーのLustreに大きな影響を与える可能性があります。
その理由は、ワイルドカード拡張にかかる時間による。

より良いアプローチは、削除または圧縮し、一度に1つまたは小さい部分を処理するファイルのリストを生成することです。

良い方法ファイルを削除する前に確認してください。次のように:

$ lfs find <dir> -t f > rmlist.txt  
$ vi rmlist.txt  
$ sed -e 's:^:/bin/rm :' rmlist.txt > rmlist.sh  
$ sh rmlist.sh    

# the directory structure will remain, but unless there are many directories, we can simply delete it:  
$ rm -rf <dir>  

Lustre IOの有用な参考文献:
1。https://www.nics.tennessee.edu/computing-resources/file-systems/io-lustre-tips
2.https://www.rc.colorado.edu/support/examples-and-tutorials/parallel-io-on-janus-lustre.html

ありがとうございます!

答え2

マンリンクを使用してください。

find -P $dir -type f -o -type l -print0 | xargs -0 munlink

...そして空のディレクトリを削除します。

find -P $dir -depth -type d -empty -delete

より多くのパラメータで検索結果を更新しました。引用:https://support.pawsey.org.au/documentation/display/US/Deleting+Large+Numbers+of+Files+on+Lustre+Filesystems

答え3

これまでに十分な評判が得られていないため、@Atisomのソリューションについて言及できないため、ここに新しい答えがあります。

Atisomソリューションに表示されているコマンドは一致または機能findしません。find-type f-type l -print0

機能させるには、角かっこを追加してください。

find -P $dir \( -type f -o -type l \) -print0 | xargs -0 munlink

関連情報