为什么Linux中的文件复制操作随着时间的推移变得越来越慢?

为什么Linux中的文件复制操作随着时间的推移变得越来越慢?

我有 12 个 ~200 MB 的文件。将其中一个复制到另一个驱动器需要 20 秒。当我尝试一次复制所有文件时,它首先显示需要 5 分钟,然后速度逐渐减慢到几小时和几天。

我正在 XFCE 中通过 Thunar 复制文件,但我记得使用命令行时也遇到过类似的问题。为什么会出现这种情况?除了逐个复制文件外,我还能做些什么来补救?

答案1

这是 Linux 内核本身的一个已知问题,已为人所知很久了,但尚未有人解决过这个问题。

目前没有修复或已知的解决方法,除了使用 Windows 以增加速度然后恢复正常。我发现这个错误是一个非常高优先级的问题,但程序员并不这么认为。正是这个错误让我开始远离 Linux。

参考文献:

答案2

你应该试试同步监控您的传输速度。例如:

rsync -PSauv sourcedir/* destdir/

如果您确实看到传输速度下降,而不是文件变大,那么您需要考虑其他一些事情。

  1. 如果您的磁盘受 I/O 限制,则会出现问题。在向闪存驱动器或外部 USB 设备大量写入数据时,您经常会看到这种情况。

  2. 测试两个磁盘,hdparm -Tt <device>查看其中一个磁盘的速度是否明显比应有的速度慢,或者是否明显比另一个设备慢,从而导致 I/O 问题。

  3. 检查你的消息输出和 SMART 状态,以确保您没有任何明显的磁盘错误。 badblocks -n如果您怀疑非 SMART 驱动器上有磁盘错误,您可能还会考虑。

磁盘崩溃或性能不佳的原因有很多,但是除非您能够衡​​量问题,否则您不会知道问题是什么。:)

答案3

请记住,文件复制过程也会以某种方式被 Linux 缓存。如果您获取单个文件(即使 200MB)并开始将其复制到另一个位置,Linux 很可能会将整个文件缓存在内存中并将其写入新位置。然后,如果您选择再次复制该文件以及一堆其他文件,那么第一个文件已经被缓存,然后可能会跳过整个“读取部分”,而其他文件则首先从其源/目标读取,然后写入。此功能甚至可能导致无限的传输速度和类似的怪异现象,因此不要相信任何可能因之前的缓存机制而无效的测量结果。

答案4

“小时和天”问题与12 个复印过程同时进行,这会给 CPU 带来压力,因此估算时间很奇怪。无论 Thunar 中显示的 ETA 是多少,复制 12x200=2400MB 的时间肯定是合理的。

如需在复制过程中获取更多信息,一些文件管理器提供更多信息比图纳尔。

相关内容