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

pgr*_*ter 15 usb speed ubuntu

当我将 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
Run Code Online (Sandbox Code Playgroud)

棒是自动安装的,这是“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)
Run Code Online (Sandbox Code Playgroud)

我必须使用 vfat,因为我想将文件传输到我的 Playstation3 系统。尽管下面的测试表明,这不是主要原因。

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

有任何想法吗?

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

11 月 10 日: 我开始使用 palimpstest(来自 gnome-disk-utility 项目)进行读取测试。这给了我 23 MBit/s 的最小传输速率。现在也在 krusader 中尝试过,读取速度一直 > 20 MBit/s。所以问题真的只是写到棍子上!

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

在此处输入图片说明

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

另一个提示:如果我传输一个 100 MB 的文件,一旦达到 100%,实际完成传输需要很长时间。这再次在我看来该文件确实在缓存中,但写入 USB 设备的速度非常慢。

11 月 12 日: “好消息”。问题似乎是记忆棒本身。尝试使用外置硬盘驱动器(My Book Elite 1TB)可以让我获得大约 20 MiB/s 的恒定写入速度。我首先尝试重新格式化我的记忆棒,以便我可以真正比较两者(文件系统不同)。重新格式化后,两个驱动器的安装方式完全相同:

/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)
Run Code Online (Sandbox Code Playgroud)

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

很难说问题到底是什么。正如我所说,在 Windows 中,SanCruzer 的写入速度也同样快。

赏金结束时编辑: 不幸的是,棍子的问题仍未解决。但是,7 天后,我当然要奖励赏金。aking1012 的评论真的很有帮助,因为它为这个问题提供了新的思路。但是,我觉得我必须赏金给 harrymc,因为他为解决问题付出了最大的努力。谢谢大家。

har*_*ymc 12

文章慢速USB 2.0大容量存储的传输速率表明,这可能会得到安装在默认情况下同步选项的设备的问题:

您的桌面上有“设备”图标吗?
如果是这样,请打开它。如果没有,请尝试在 konqueror 中打开 media:/。

选择设备,然后 -> 属性 -> 安装(标签)并取消选中同步框。(这会被记住,所以你应该只需要为每个设备做一次)。


更多的想法来自错误报告写在外部硬盘上,使写入速度非常慢

  • 您在运行时通过“sudo mount -o remount,async /dev/sda1”(或任何已安装的分区)更改为异步
  • 您为 sda 创建一个 fstab 条目,该条目将其异步挂载(这要求设备始终在启动时插入)
  • 您将 pmount 源中的“sync”更改为“async”并重建包

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


另一个神奇的解决方案来自USB 2.0 慢写快读,解决方案了吗?并涉及重新安装:

当我使用以下行在 /dev/sdc1 上安装 USB 驱动器时

/dev/sdc1       /mnt/sdc1     auto    sync,noauto,user,exec     0       0
Run Code Online (Sandbox Code Playgroud)

在 /etc/fstab 中,尝试从本地硬盘复制一个 5.2 MB 的文件到驱动器,然后在整整一分钟后,已经传输了 244 KB。将 29 MB 文件从外部驱动器复制到本地驱动器大约需要 10 秒。

然后,如果我卸载它,请将 /etc/fstab 中的行更改为

/dev/sdc1       /mnt/sdc1     auto    noauto,user,exec     0       0
Run Code Online (Sandbox Code Playgroud)

然后将 29 MB 文件复制到外部磁盘需要不到一秒钟的时间。与从外部磁盘复制到本地磁盘相同。


请参阅本文和对“usbtree”的参考。它告诉如何检查 USB 是否正常运行 1.1 或 2.0 :

Linux 和 USB 2.0