Ama*_*rus 21 files performance filesystems rsnapshot
我们使用 rsnapshot 进行备份。它保留了备份文件的大量快照,但它确实删除了旧文件。这很好。然而,rm -rf
在一个巨大的目录树上做一个大约需要 7 个小时。文件系统是 XFS。我不确定那里有多少个文件,但可能有数百万个。
有没有办法加快速度?是否有任何命令可以执行相同的操作rm -rf
并且不需要花费数小时和数小时?
Dav*_*ley 39
不。
rm -rf
对文件系统进行递归深度优先遍历,调用unlink()
每个文件。导致进程运行缓慢的两个操作是opendir()
/readdir()
和unlink()
。opendir()
并且readdir()
取决于目录中的文件数。unlink()
取决于要删除的文件的大小。加快这一进程的唯一方法是减少文件的大小和数量(我怀疑这不太可能),或者将文件系统更改为对这些操作具有更好特性的文件系统。我相信 XFS 对大文件的 unlink() 有好处,但对大目录结构不太好。您可能会发现 ext3+dirindex 或 reiserfs 更快。我不确定 JFS 的表现如何,但我确信有很多不同文件系统性能的基准测试。
编辑:似乎XFS 在删除 tree 方面很糟糕,所以一定要改变你的文件系统。
Gre*_*ork 25
或者,将目录移到一边,使用相同的名称、权限和所有权重新创建它,然后重新启动关心该目录的任何应用程序/服务。
然后,您可以在后台“很好地 rm”原始目录,而不必担心长时间的中断。
确保为 XFS 设置了正确的挂载选项。
在 XFS 中使用 -ologbufs=8,logbsize=256k 可能会使您的删除性能增加三倍。
如果您在文件级别有效地执行 rm ,那么将需要很长时间。这就是基于块的快照如此出色的原因:)。
您可以尝试将 rm 拆分为单独的区域并尝试并行执行,但是我可能不希望它有任何改进。众所周知,XFS 在删除文件时会遇到问题,如果这是您所做工作的很大一部分,那么可能会考虑使用不同的文件系统。
无论使用什么文件系统,都可以将 ionice 用于诸如此类的 IO 密集型操作。
我建议这个命令:
ionice -n7 nice rm -fr dir_name
它将很好地用于具有大量 IO 负载的服务器上的后台操作。
归档时间: |
|
查看次数: |
19111 次 |
最近记录: |