更多信息:大多数被删除的文件是指向其他目录中文件的硬链接(被删除的目录实际上是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使用古老的内核(3.16,是的,当你发布时它已经很古老了). Btrfs是一个仍在大量开发中的文件系统,所以你应该始终使用最新最好的内核版本来接触这些改进.如果你的发行版不进行后退,你可以自己做,也可以搞砸.
Btrfs在内核版本3.19中获得了许多性能改进 – 这是你应该在生产中使用的最低版本,你的内核版本3.16显然很糟糕,没有backports.
另外请记住,根据Chris Mason的说法,他现在确实认为Btrfs稳定了,但还没有准备好生产.