削除したい非常に小さなファイルがたくさん含まれているディレクトリがありますが、単にディレクトリを削除するrm -rf /path/to/the/dir
のに数日かかりました。
これが遅いことは奇妙に聞こえますが、ディレクトリは通常のファイルシステムのディレクトリではありません。クラスタのLustreファイルシステム上のディレクトリ。
rm
Lustreがインストールされているクラスタノード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
ありがとうございます!