当前位置: 首页>>技术教程>>正文


如何在(X)ubuntu中获得更好的USB传输速度?

, ,

问题描述

当我将USB 2.0驱动器连接到Xubuntu并尝试传输大文件时,传输速度起初不错,但几秒钟后下降到1-2 Mib /s。据我了解,开始时的快速传输只是直到缓存已满,然后才使用真正的USB传输速度。

在Windows中,同一棒连接到同一端口,速度恒定约为25Mib /s。

这是连接操纵杆时dmesg的输出:

[ 5237.580084] usb 1-4: new high speed USB device using ehci_hcd and address 6
[ 5237.714318] scsi4 : usb-storage 1-4:1.0
[ 5238.713909] scsi 4:0:0:0: Direct-Access     SanDisk  Cruzer           8.02 PQ: 0 ANSI: 0 CCS
[ 5238.715264] sd 4:0:0:0: Attached scsi generic sg2 type 0
[ 5238.727225] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[ 5242.308981] sd 4:0:0:0: [sdb] 31301631 512-byte logical blocks: (16.0 GB/14.9 GiB)
[ 5242.309589] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311228] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 5242.311238]  sdb: sdb1

摇杆已自动安装,这是”mount”的输出:

/dev/sdb1 on /media/B82C-6B07 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush)

我必须使用vfat,因为我要将文件传输到我的Playstation3系统。通过下面的测试可以看出,这不是主要原因。

看来这是(X)ubuntu中的常见问题。我还没有找到明确的解决方案。似乎需要将棒安装为异步而不是冲洗,但我不确定如何实现。我不介意,只要传输速度更好,是否在每次断开连接前都必须卸下存储棒。

有任何想法吗?

11月2日:该错误报告似乎与以下内容有关:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931。让我担心的是,这个问题似乎已经超过2年了,但仍然没有解决。

11月10日:我通过palimpstest(来自gnome-disk-utility项目)启动了read-test。这使我的最小传输速率为23 MBit /s。现在也在krusader中尝试过,读取速度一直> 20 MBit /s。因此,问题实际上只是写在棍子上!

这是同一程序中的读写测试的图像:

测试之前,我不得不完全删除文件系统,这表明vfat不是如上所述的主要原因。

另一个提示:如果我传输一个100 MB的文件,则一旦达到100%,它实际上要花费很长的时间才能完成传输。在我看来,该文件确实位于缓存中,但写入USB设备的速度非常慢。

11月12日:”Good news”。问题似乎在于 memory 棒本身。尝试使用外部硬盘驱动器(My Book Elite 1TB)可使我的写入速度保持恒定,约为20 MiB /s。我首先尝试重新格式化 memory 棒,以便我可以真正比较两者(文件系统不同)。重新格式化后,两个驱动器的安装方式完全相同:

/dev/sdb1 on /media/My Book type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdc1 on /media/cruzer_ type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)

Cruzer是摇杆(速度在几秒钟后仍会下降),My Book是外部硬盘驱动器,其恒定写入速度为20 MiB /s。

很难说问题出在哪里。正如我所说,在Windows中,SanCruzer的写入速度也同样快。

赏金结束时编辑:不幸的是,棍子问题仍然没有解决。但是,我希望在7天后授予赏金。来自aking1012的评论确实很有帮助,因为它为该问题提供了新的思路。但是,我觉得我必须给予harrymc赏金,因为他表现出最大的努力来解决问题。谢谢大家

最佳方案

文章Slow USB 2.0 mass stoarage transfer rate建议,这可能是默认情况下使用sync选项安装设备的问题:

Do you have a “Devices” Icon on your Desktop?
If so, open it. If not, try opening media:/ in konqueror.

Selct the device then -> Properties -> Mounting(tag) and uncheck the Synchronous box. (This gets remembered, so you should only need to do it once per-device).


来自bug-report Write through on external hdd making writing very slow的其他一些想法

  • you change to async at runtime by ‘sudo mount -o remount,async /dev/sda1’ (or whatever your mounted partition(s) is/are)
  • you create an fstab entry for sda which mounts it async (this requires that the device is always plugged in at boottime)
  • you change ‘sync’ to ‘async’ in the pmount source and rebuild the package

如果适用于您的系统,另请参阅有关pmount的文章中的讨论。


另一个神奇的解决方案来自USB 2.0 slow write but fast read, solution yet?,涉及re-mount:

When I mount a USB drive on /dev/sdc1 with the following line

/dev/sdc1       /mnt/sdc1     auto    sync,noauto,user,exec     0       0 

in /etc/fstab, and try to copy a 5.2 MB file to the drive from the local hard disk, then after an entire minute, 244 KB have been transferred. Copying a 29 MB file from the external drive to the local drive takes about 10 seconds.

Then if I unmount it, change the line in /etc/fstab to

/dev/sdc1       /mnt/sdc1     auto    noauto,user,exec     0       0 

then copying the 29 MB file to the external disk takes an unnoticeable fraction of a second. Same with copying to the local disk from the external disk.


请参阅本文和对”usbtree”的引用。它告诉您如何检查USB是否运行为1.1或2.0:

Linux and USB 2.0

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9856.html,未经允许,请勿转载。