复制到USB记忆棒真的很慢?

当我将文件复制到USB设备时,它比Windows(相同的USB设备,相同端口)需要更长的时间,它比USB 1.0速度(1MB / s)更快,但比USB 2.0速度(12MB / s)慢得多。 复制1.8GB需要10分钟(应该<3分钟)。我有两个相同的SanDisk Cruzer 8GB棒,我两个都有同样的问题。 我在邻近的端口有一个超级天才的32GB USB SSD,它可以在预期的速度下工作。

我似乎在GUI中看到的问题是,进度条几乎立即达到90%,完成100%稍慢,然后在那里挂起10分钟。 此时中断副本似乎会导致文件尾部出现损坏。 如果我等待它完成复制成功。

有任何想法吗? dmesg输出如下:

[64059.432309] usb 2-1.2: new high-speed USB device number 5 using ehci_hcd [64059.526419] scsi8 : usb-storage 2-1.2:1.0 [64060.529071] scsi 8:0:0:0: Direct-Access SanDisk Cruzer 1.14 PQ: 0 ANSI: 2 [64060.530834] sd 8:0:0:0: Attached scsi generic sg4 type 0 [64060.531925] sd 8:0:0:0: [sdd] 15633408 512-byte logical blocks: (8.00 GB/7.45 GiB) [64060.533419] sd 8:0:0:0: [sdd] Write Protect is off [64060.533428] sd 8:0:0:0: [sdd] Mode Sense: 03 00 00 00 [64060.534319] sd 8:0:0:0: [sdd] No Caching mode page present [64060.534327] sd 8:0:0:0: [sdd] Assuming drive cache: write through [64060.537988] sd 8:0:0:0: [sdd] No Caching mode page present [64060.537995] sd 8:0:0:0: [sdd] Assuming drive cache: write through [64060.541290] sdd: sdd1 [64060.544617] sd 8:0:0:0: [sdd] No Caching mode page present [64060.544619] sd 8:0:0:0: [sdd] Assuming drive cache: write through [64060.544621] sd 8:0:0:0: [sdd] Attached SCSI removable disk 

为什么在Linux中复制到我的USB驱动器这么慢(在Windows中更快)?

原因1.文件缓存可以使写入显示得更慢或更快

我似乎在GUI中看到的问题是,进度条几乎立即达到90%,完成100%稍慢,然后在那里挂起10分钟。

您需要了解的一件事是文件缓存。 Linux(和Windows)将使用“空”RAM来缓存读/写操作,并使其在后续访问中更快。 将复制操作缓存到慢速设备会导致您看到的行为 – “快速完成”实际上是写入缓存,然后它会减慢和停止,因为缓存中的数据实际刷新(同步)到慢速设备是花了很长时间。 如果您在该点中止,则数据已损坏(如您所述),因为同步从未完成。

Windows中的此类复制可能看起来更快 (包括报告的MB /秒速度),因为有时Windows 不会等待同步,并且一旦数据写入缓存就会声明作业已完成。

原因2.编写大量文件,特别是小文件,速度很慢

要复制1.8GB

由于闪存和文件系统的工作方式,在编写非常大的文件时可以实现最快的吞吐量(速度)。 编写大量小文件,甚至包含许多小文件的混合数据可能会使进程大大减慢。 这也会影响硬盘驱动器,但程度稍低。

原因3.无法比较USB记忆棒和SSD的写入速度

我在邻近的端口有一个超级天才的32GB USB SSD,它可以在预期的速度下工作。

  • 花园种类的USB记忆棒通常由闪存芯片组成,这些闪存芯片被串行(顺序)写入,并且没有自己的任何高速缓存。

  • 另一方面,SSD包含一个控制器,该控制器并行写入闪存芯片,通过USB棒将吞吐量提高2倍或更多。

    • 如果您的32GB SSD具有4x 8GB芯片,那么在任何写入操作中它仍然比USB棒快4倍。
    • SSD 包含RAM缓存(如硬盘),因此它可以快速将传入数据存储在缓存中并告诉操作系统已完成,同时仍然必须将该数据实际写入闪存。
  • 因此,对于一个大文件,我们假设您的32x GB具有4x结构,速度将是4倍; 对于许多小文件,它会快10倍或更快,因为它可以智能地将它们存储在缓存中。


总而言之 ,这些是在Linux中复制到USB记忆棒的文件可能会显得较慢的原因。 它实际上是因为硬件/驱动程序问题或其他问题而变慢….

正确比较Linux和Windows之间的写入速度

  • 首先,因为原因而忘记SSD。它就像是橙子和苹果。
  • 要消除原因1(缓存)和原因2(小文件)的影响,您需要使用大于测试系统上的RAM量的单个大文件进行测试。
  • 在Linux中,您可以使用dd if=/dev/urandom of=largetest bs=1M count=7500创建它,它会为您提供7500 MB的测试文件。 假设您的系统RAM少于4GB,那就足够了。 将其复制到新格式化的Sandisk 8GB棒,然后计时。
  • 在Windows中重新启动,并将最大的USB存储棒复制到硬盘上。 再次重新启动 (将其从缓存中删除)。 然后格式化USB记忆棒(相同的vfat / FAT32!),并将最大的硬盘从硬盘复制到记忆棒。
  • 时间如何比较?

我认为这是一个港口问题的可能性非常低。 它更可能是一个LINUX(或Linux配置)问题 – 浏览,你会发现有关linux / ubuntu中慢速USB的成千上万的问题报告。 对我来说它几乎是linux的showstopper – 我现在有一个Ubuntu 12.04 LTS并且仍然有这个问题(所以我宁愿使用Win7设置 – 主要/仅因为这个)。 这个问题(或具有类似症状的东西)现在有几年了,显然没有解决。 在这段时间里,我尝试了几款具有多种不同ubuntu版本(默认配置)和2-3种不同USB闪存的物理PC ….

发现修复我所做的全部是卸载,删除驱动器,并在终端中运行sudo modprobe ehci_hcd 。 插入驱动器和sudo modprobe ehci_hcd当我把驱动器放入并且哇20 / mbs以为我会分享。 希望我不必每次都这样做……但这并不难…

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/177235说他们修复了这个bug。

如果设备已经自动挂载,只需umount设备,然后手动将其挂载到/mnt/foldername

就我而言,

 umount /media/usb0 mount /dev/sdb1 /mnt/sam 

之后,它的应对速度非常快。

如果你切换到USB 3.0,你将从1mb / s到5-8mb / s。 我切换到3.0 USB pci和外置高清,并没有回头。

当您查看/ etc / mtab时,您是否看到设备已使用“flush”选项挂载?

如果是这样,这可能是问题的原因(这对我而言)。 只需卸载设备并重新安装即可,默认情况下不应设置。

我在WD外置磁盘上的传输速率也遇到了一些问题,在Windows SO中打开它之后,我总是使用LINUX,之后传输速率就像1.5mb / s,而不是我卸载外部硬盘驱动器损坏的dmesg那里它是说sdb1是不合适的卸载,破坏了fsck,进行了一些修复,然后在从sda到外部磁盘的复制时再次以20mb / s的速率进行修复。 如果你有数据,fsck总是有风险,但它对我有用,没有数据丢失。

我也有这个问题,但我使用cp命令,你在几秒钟内更新你的usb棒;

 cp -r -u /home/user/Muziek/ /media/user/Audiousbsti cp -r -u /home/user/Muziek/ /media/user/4F49-4A65/ 

我认为这是一个非常晚的答案,但它仍然是开放的。

好吧,我有三天同样的问题,我如何设法备份我的1TB硬盘是通过使用rsync,我知道它用于备份但它完成了工作,即使在传输大文件我用它来做那个工作。 如果您想将它与GUI一起使用,我建议安装Grsync,这是rsync的图形版本,因为rsync在终端上运行。

希望这有帮助