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

如何在 (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令我担心的是,这个问题似乎已经存在两年多了,但仍然没有得到解决。

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)

Cruzer 是棒状硬盘(几秒钟后速度仍会下降),My Book 是外置硬盘,恒定写入速度为 20 MiB/s。

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

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

答案1

文章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

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

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

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

那么将 29 MB 文件复制到外部磁盘只需要几分之一秒的时间。从外部磁盘复制到本地磁盘也是如此。


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

Linux 和 USB 2.0

答案2

因此,我通过谷歌搜索同样的问题(“ubuntu 15 加速 usb 传输”)来到此页面,因为我的传输速度为 75kb/s。

这可能只是我的设置的解决方案,但我的 16GB USB 3 驱动器已格式化为 GPT fat32,我删除了所有分区,初始化为 MBR,创建了一个 NTFS 分区,将其重新插入我的 Ubuntu PC,现在它正在以超过 50MB/s 的速度传输 10GB 的文件。对我来说,问题解决了。

答案3

对驱动器的访问通常以异步模式进行缓冲。初始快速突发可能进入内存缓存。慢速是实际写入速度。

如果您的 USB 闪存盘在传输过程中闪烁,请尝试进行一些测试。我发现在复制完成后,写入可以持续相当长一段时间。

以异步模式而不是同步模式安装可以使复制看起来进行得更快,但不能为您提供与复制数据真正传输相同的安全性。

检查 中的选项man mount。某些格式允许推迟元数据(目录、文件分配表等)更新。这将减少需要复制的数据量。这会稍微增加数据丢失的风险。

答案4

我在 WD 外置硬盘的传输速率方面也遇到了一些问题,在 Windows SO 中打开它后,我总是使用 LINUX,之后传输速率大约为 1.5mb/s,然后我卸载了外置硬盘,运行了 dmesg,它说 sdb1 卸载不当,运行了 fsck,进行了一些修复,之后从 sda 复制到外置硬盘时,传输速率又恢复到 20mb/s。
“如果您有数据,fsck 总是有风险的,但它对我来说很有效,没有数据丢失”

相关内容