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稳定了,但还没有准备好生产.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...