要在我们的 IBM GPFS 集群中递归删除文件,我们使用简单的 unix 命令,例如:
rm /my/directories -fr
然而,删除的时间很长。
问题是我们的分布式应用程序(基于 Spark)one hour
需要完成。但是,它也会took about an other hour
删除由 Spark 等分布式应用程序生成的临时文件。
因此,全局工作负载非常低效。可能是因为该rm
命令必须列出每个子目录..
无论如何,您知道使用 GPFS 有效删除整个目录(和子目录)的方法吗?
可能是 IBM 给出了一个特殊的命令来做到这一点?
我不认为你可以加快这个过程,因为“rm”会触发分布式文件系统的大量元数据更新,而且它们需要相当长的时间才能完成。您可以尝试向同一文件系统中的某个临时文件夹发出“mv”(!!!)并在后台执行实际的“rm”。
您可以使用比“rm”快得多的 gpfs 策略。
这是一个示例,例如,我想删除 /gpfs2/mysql/performance_schema/ 下的所有文件
策略文件是:
RULE 'my_del' DELETE DIRECTORIES_PLUS WHERE PATH_NAME LIKE '/gpfs2/mysql/performance_schema/%'
然后我可以运行策略:
mmapplypolicy /gpfs2/mysql -P del.pol
您可以参考这两个链接以获取有关策略和 DELETE 规则的一些说明:
https://www.ibm.com/support/knowledgecenter/STXKQY_5.0.5/com.ibm.spectrum.scale.v5r05.doc/bl1adv_polextip.htm
https://www.ibm.com/support/knowledgecenter/STXKQY_5.0.5/com.ibm.spectrum.scale.v5r05.doc/bl1adv_rule_syntaxdiagrams.htm
实际上在 /usr/lpp/mmfs/samples/ilm 下有一个“mmfile”工具。您需要首先通过 :make -f mmfindUtil_processOutputFile.sampleMakefile 编译 mmfindUtil_processOutputFile
mmfile 的语法与“find”完全相同,但它使用 GPFS 策略,因此它的运行速度比 GPFS 文件系统的 find 快得多。例如,您可以使用:mmfind sub1/ | xargs rm -f 删除文件。
您也可以在@guanglei_li 关注我,并且您可以在“https://www.ibm.com/mysupport/s/”获得更多支持。