为什么Linux中的文件复制操作会随着时间而变慢?


22

我有12〜200 MB的文件。将其中一个复制到另一个驱动器需要20秒。当我尝试一次复制所有这些文件时,它首先说要花5分钟,然后它会一直减慢到几小时又几天。

我正在通过XFCE中的Thunar复制文件,但我记得使用命令行存在类似的问题。为什么会发生这种情况,除了仅逐个复制文件之外,我该怎么办才能补救?


您检查驱动器是否有错误?这些文件在子文件夹中吗?
tubaguy50035

@ tubaguy50035文件不在子文件夹中。话虽如此,源驱动器可能有错误。我会检查。
未找到用户

@CodeGnome我做了一个基本的cp -v sourcedir / * destdir。
未找到用户

Answers:


25

这是Linux内核本身的一个已知问题,已经存在了很长时间,目前还没有人解决。

除了使用Windows以外,目前尚无修复程序或已知的解决方法,Windows可以提高速度然后进行标准化。我发现此错误是一个非常重要的问题,但是程序员的感受却与此不同。仅仅是这个错误开始使我脱离Linux。

参考:


6
需要引用!如果您可以提供一些指向此错误的文档,这可能会帮助我们解决问题
Journeyman Geek


6
在这里,可以在原始引文中找到链接。bugzilla.kernel.org/show_bug.cgi?id=12309
戴夫

您出于这个原因而离开Linux ???
凯尔(Kyrol)2013年

1
@Kyrol这是一个很大的原因!
puk

10

您应该尝试使用rsync监视传输速度。例如:

rsync -PSauv sourcedir/* destdir/

如果您实际上看到传输速度下降,而不是文件很大,那么您需要查看其他一些信息。

  1. 如果您的磁盘是I / O绑定的,则将出现问题。在大量写入闪存驱动器或外部USB设备时,通常会看到这种情况。

  2. 对两个磁盘进行测试,hdparm -Tt <device>以查看其中一个磁盘的速度是否比其应有的速度慢,或者比另一设备的速度慢得多,而这可能会导致I / O问题。

  3. 检查dmesg输出和SMART状态,以确保没有明显的磁盘错误。您还可以考虑 badblocks -n是否怀疑非SMART驱动器上的磁盘错误。

有很多原因可以使磁盘发生故障或无法达到最佳性能,但是直到您可以测量问题之前,您才不知道问题出在哪里。:)


2

请记住,Linux也以某种方式缓存了文件复制过程。如果仅取一个文件(即使是200MB,则将其复制到另一个位置),Linux很有可能将整个文件缓存在内存中并将其写入新位置。然后,如果您选择再次复制该文件以及其他大量文件,则第一个文件已被缓存,然后可能会跳过整个“读取的部分”,而其他的首先读取然后写入其源/目的地。此功能甚至可以导致无限的传输速度和类似的奇数,因此不要相信任何可能被先前的跟踪机制无效的测量。


-3

SliTaz的副本刻录到CD / USB上。

它设计用于真正的古老机器,并且由于位于RAM中,因此运行速度非常快。您无需进行安装,只需实时运行即可。如果已安装USB,则可以看到它,然后将需要的内容复制到计算机上。我发现传输速率稳定且快速。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.