linux – 删除文件需要太长时间

短版本:rm -rf mydir,mydir(递归)包含250万个文件,在大多数闲置的机器上大约需要12个小时.

更多信息:大多数被删除的文件是指向其他目录中文件的硬链接(被删除的目录实际上是rsnapshot最早的备份; rm命令实际上是由rsnapshot给出的).所以主要是目录条目被删除 – 文件内容本身并不多;它大约是几十GB.

我很不确定btrfs是罪魁祸首.我记得在开始使用btrfs之前备份也很慢,但我不确定缓慢是否在删除.

该机器是Intel Core i5 2.67 GHz,具有4 GB RAM.它有两个SATA磁盘:一个具有操作系统和其他一些东西,备份磁盘是1 TB WDC WD1002FAEX-00Z3A0.主板是华硕P7P55D.

编辑:该机器是一个Debian wheezy与Linux 3.16.3-2~bpo70 1.这是文件系统的安装方式:

root@thames:~# mount|grep rsnapshot
/dev/sdb1 on /var/backups/rsnapshot type btrfs (rw,relatime,compress=zlib,space_cache)

编辑:使用rsync -a –delete / some / empty / dir mydir大约需要6个小时.比rm -rf有显着改善,但我认为仍然太多了. (Explanation of why rsync is faster than rm:“[M] ost文件系统以btree格式存储它们的目录结构,删除文件的顺序[in]非常重要.当你执行unlink时,需要避免重新平衡btree …. rsync -a – 删除…按顺序删除“)

编辑:我附加了另一个磁盘,它在目录中有220万个文件(递归),但是在XFS上.以下是一些比较结果:

On the XFS disk      On the BTRFS disk
Cached reads[1]       10 GB/s               10 GB/s
Buffered reads[1]     80 MB/s              115 MB/s
Walk tree[2]         11 minutes            43 minutes
rm -rf mydir[3]       7 minutes            12 hours

[1]使用hdparm -T / dev / sdX和hdparm -t / dev / sdX.
[2]启动后立即运行查找mydir -print | wc -l所花费的时间.
[3]在XFS磁盘上,这是在使用find行走树之后不久.在BTRFS磁盘上,它是旧的测量(我不认为是缓存树).

它似乎是btrfs的一个问题.

解决方法

那么这仍然是一个Btrfs问题,众所周知,与其他文件系统相比,删除许多小文件确实需要很长时间.

如果您不喜欢它,您可以等到上游修复它,或者转到另一个更好的文件系统.

你的主要错误是使用btrfs使用古老的内核(3.16,是的,当你发布时它已经很古老了). Btrfs是一个仍在大量开发中的文件系统,所以你应该始终使用最新最好的内核版本来接触这些改进.如果你的发行版不进行后退,你可以自己做,也可以搞砸.

Btrfs在内核版本3.19中获得了许多性能改进 – 这是你应该在生产中使用的最低版本,你的内核版本3.16显然很糟糕,没有backports.

另外请记住,根据Chris Mason的说法,他现在确实认为Btrfs稳定了,但还没有准备好生产.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户