在 Lustre 上删除包含大量小文件的目录

Edu*_*per 4 directory files lustre

我有一个包含大量非常小的文件的目录,我想删除这些文件,而简单地删除该目录rm -rf /path/to/the/dir已经需要多天时间了。

这听起来可能很奇怪,但该目录不是常规文件系统上的目录。它是集群的 Lustre 文件系统上的一个目录。

我在rm安装了 Lustre 的集群的节点 A 上运行命令,但 Lustre 的后端是 2 个 ZFS 文件系统,一个在节点 B 上,一个在节点 C 上,因此所有网络流量可能是rm变慢的原因。

有没有人知道比我的方法更快的删除目录的方法?

Bha*_*iya 6

在 Lustre 上处理大量文件时,一些 GNU 命令,例如tar 和 rm 效率低下。例如,对于数百万个文件, rm -rf * 可能需要几天时间,并且对其他用户的 Lustre 有相当大的影响。
原因在于扩大外卡所需要的时间。

执行此操作的更好方法是生成要删除或 tar 的文件列表,并一次或以小组形式对它们进行操作。

在删除文件之前查看文件的好方法如下:

$ 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>  
Run Code Online (Sandbox Code Playgroud)

Lustre IO 的一些有用参考资料:
1. https://www.nics.tennessee.edu/computing-resources/file-systems/io-lustre-tips
2. https://www.rc.colorado.edu/支持/示例和教程/parallel-io-on-janus-lustre.html

谢谢!