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


14

当我将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项目)开始了读取测试。这使我的最小传输速率为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
闪存驱动器和真正的外部
HD

好主意!非常感谢您的小费,请在我的更新(11月12日)中查看结果。问题尚未解决,但这确实缩小了范围!
pgruetter,2010年

FWIW,flush挂载输出中的选项不太可能提供帮助。我认为这甚至更糟sync
beldaz

Answers:


11

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

桌面上是否有“设备”图标?
如果是这样,请打开它。如果不是,请尝试在Konqueror中打开media:/。

然后选择设备->属性->安装(标签),然后取消选中同步框。(这会被记住,因此每个设备只需要执行一次即可)。


来自Bug报告的更多想法来自外部硬盘上的写入,使写入非常缓慢

  • 您可以在运行时通过'sudo mount -o remount,async / dev / sda1'(或任何已挂载的分区)更改为异步
  • 您为sda创建了一个fstab条目,并将其异步安装(这要求设备始终在引导时插入)
  • 您在安装源中将“ 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


看来这是KDE特有的。我正在使用XFCE4(Xubuntu)。无论如何,由于安装了Konquerer,我还是尝试了该建议。开放媒体:/给了我一个例外:“不支持协议”。我可以通过其他任何方式查明是否已挂载“异步”或“同步”吗?
pgruetter,2010年

我添加了另一篇有用的文章。
harrymc

重新安装不会执行任何操作。“ mount”的输出仍然相同。看到我的初始消息。我也试图现在用pmount挂载它,谢谢你的建议。在pmount状态的帮助下,默认情况下它会异步安装。尽管如此,传输速度还是非常快的,几秒钟后下降。我开始相信棍子实际上是异步安装的,但问题出在其他地方!
pgruetter,2010年

添加了更多尝试。
harrymc

感谢harrymc,非常感谢您的不断努力。不幸的是,仍然没有机会。我尝试使用/ etc / fstab中提到的设置进行尝试并进行安装。如果我尝试使用同步选项,那就更糟了。我只能得到大约100-200 Kib / s。如果没有同步选项,则仍然保持不变:刚开始时速度很快,降至1-2 MiB / s。
pgruetter,2010年

2

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

如果您的USB记忆棒在传输过程中闪烁,请尝试一些测试。我发现复制完成后,写入可以持续一段时间。

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

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


感谢您提供的信息,这实际上证实了我的假设。驱动器在传输过程中不断闪烁,但是传输后并没有闪烁很长时间。我怀疑这仅仅是因为文件管理器仍在访问存储棒。安全性不是什么大问题,我真的只是对速度感兴趣。关于元数据,我会检查一下。虽然,您认为在传输大文件(500 MiB)时这会改变什么吗?
pgruetter,2010年

同样,还有什么让我感到困惑,为什么使用外部硬盘的速度如此之快,而不是使用摇杆呢?挂载选项完全相同,我传输了完全相同的测试文件。
pgruetter,2010年

1
对硬盘驱动器的4 KiB写操作通常是对4 KiB的写操作,由硬盘控制器执行。对闪存的4 KiB写操作通常是对某些临时存储的128 KiB读操作,在所述临时存储的正确偏移处进行的4 KiB覆盖,128 KiB擦除操作和128 KiB写操作,所有上述操作均由闪存实现。闪存控制器。或多或少:)
tzot 2012年

1

因此,我通过对同一问题的Google搜索(“ ubuntu 15加速USB传输”)来到了此页面,因为我的传输以75kb / s的速度运行。

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


确认对于Mint 18.3(Ubuntu 16.04),从fat32切换到ntfs是一个巨大的进步。
乌鸦

0

我们需要确保系统尝试写入程序/擦除块块。使用现代闪存时,它们的大小通常为1M-4M。为此,您需要确保您的FS对齐以擦除块,并且该接口允许一次性传输整个块(用于便宜的棒)。否则,当系统尝试以小于擦除块(执行读/修改/写)+块未对齐的块的形式进行写入时,我们将得到写放大。

要检查您当前的设置,请执行以下操作:

cat /sys/block/sd**X**/device/max_sectors

您可以调整这些设备的大厅规则。请参阅/unix/67719/change-value-of-usb-max-sectors-for-an-entire-family-of-devices

在这种情况下,我已将所有设备的max_sectors替换为使用默认值240(USB存储)的32K扇区或2K扇区:

(使用==进行检查,并使用=进行分配):

在我的系统(Mageia 4,3.14.24核心i7)上,由于在Kingston DT101 G2 16GB上的写入速度非常慢(2MB /秒),所以我必须这样做:

vi /usr/lib/udev/rules.d/81-udisks_maxsect.rules 并添加:

SUBSYSTEMS ==“ scsi”,ATTR {max_sectors} ==“ 240”,ATTR {max_sectors} =“ 32678”

dd的写入速度提高了3倍:-) mc cp可能提高了10-20倍(在我启动第一个分区@ 8192的扇区并用64k对齐的簇重新格式化后):

fdisk -u /dev/sdh (如果启用,请关闭DOS兼容性),

mkfs.vfat /dev/sdh1 -n KINGSTON16G -s 128 **-R 4592**并用于fsck.vfat -v /dev/sdh1检查对齐方式(检查[数据起始扇区]应为128的倍数(群集大小))。如果需要,调整保留扇区的数量(-R)。

默认的max_sectors(240)似乎在某些廉价的新驱动器上导致高写入放大。但请注意,在如此高的设置下,在2048个扇区(可能是1M擦除块)上会达到类似的效果:

SUBSYSTEMS ==“ scsi”,ATTR {max_sectors} ==“ 240”,ATTR {max_sectors} =“ 2048”

测试您所有的旧USB设备,使其仍然可以正常工作。使用规则文件中的供应商/模型属性来更具体。

PS:如果使用ext3 / 4:

禁用日记功能并为mkfs.ext3设置stride / stripe_width:

mkfs.ext3 -O ^ has_journal -E stride = [读取页面fs块] -E stripe-width = [擦除块fs块]


0

我在WD外部磁盘上的传输速率上也遇到了一些问题,在Windows SO中打开它之后,我一直使用LINUX,之后的传输速率比我卸载外部硬盘驱动器大约1.5mb / s快,在那里运行dmesg当时说sdb1未被正确卸载,运行了fsck,进行了几次维修,然后从sda复制到外部磁盘后,传输速率又达到了20mb / s。
“如果您有数据,fsck总是有风险,但是它对我有用,没有数据丢失”


0

检查(真的检查)您的设备是否已插入支持全速的USB端口。

尽管这听起来很愚蠢,但有时情况会变得混乱。一些主板具有高速和低速端口。使用usbview之类的工具(请注意以超级用户权限执行该工具sudo usbview),以验证您的设备是否以480Mb / s(USB 2.0)或更高的速度运行。

例如,当您通常通过某些延长线,显示器上的集线器等将设备插入时,可能会发生-在重新插入台式计算机上的电缆后,或者不小心将集线器插入低速状态(USB 1.)端口。然后,插入集线器的任何设备都将以低速运行,而插入其他位置的其他设备将以高速运行。可能非常令人困惑-这是一件简单的硬件事情……曾经发生在我身上,与任何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.