我有 12 个 ~200 MB 的文件。将其中一个复制到另一个驱动器需要 20 秒。当我尝试一次复制所有文件时,它首先显示需要 5 分钟,然后速度逐渐减慢到几小时和几天。
我正在 XFCE 中通过 Thunar 复制文件,但我记得使用命令行时也遇到过类似的问题。为什么会出现这种情况?除了逐个复制文件外,我还能做些什么来补救?
答案1
这是 Linux 内核本身的一个已知问题,已为人所知很久了,但尚未有人解决过这个问题。
目前没有修复或已知的解决方法,除了使用 Windows 以增加速度然后恢复正常。我发现这个错误是一个非常高优先级的问题,但程序员并不这么认为。正是这个错误让我开始远离 Linux。
参考文献:
答案2
你应该试试同步监控您的传输速度。例如:
rsync -PSauv sourcedir/* destdir/
如果您确实看到传输速度下降,而不是文件变大,那么您需要考虑其他一些事情。
如果您的磁盘受 I/O 限制,则会出现问题。在向闪存驱动器或外部 USB 设备大量写入数据时,您经常会看到这种情况。
测试两个磁盘,
hdparm -Tt <device>
查看其中一个磁盘的速度是否明显比应有的速度慢,或者是否明显比另一个设备慢,从而导致 I/O 问题。检查你的消息输出和 SMART 状态,以确保您没有任何明显的磁盘错误。
badblocks -n
如果您怀疑非 SMART 驱动器上有磁盘错误,您可能还会考虑。
磁盘崩溃或性能不佳的原因有很多,但是除非您能够衡量问题,否则您不会知道问题是什么。:)
答案3
请记住,文件复制过程也会以某种方式被 Linux 缓存。如果您获取单个文件(即使 200MB)并开始将其复制到另一个位置,Linux 很可能会将整个文件缓存在内存中并将其写入新位置。然后,如果您选择再次复制该文件以及一堆其他文件,那么第一个文件已经被缓存,然后可能会跳过整个“读取部分”,而其他文件则首先从其源/目标读取,然后写入。此功能甚至可能导致无限的传输速度和类似的怪异现象,因此不要相信任何可能因之前的缓存机制而无效的测量结果。
答案4
“小时和天”问题与12 个复印过程同时进行,这会给 CPU 带来压力,因此估算时间很奇怪。无论 Thunar 中显示的 ETA 是多少,复制 12x200=2400MB 的时间肯定是合理的。
如需在复制过程中获取更多信息,一些文件管理器提供更多信息比图纳尔。