(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)

Playstation3システムにファイルを転送したいので、vfatを使用する必要があります。以下のテストは、これが主な原因ではないことを示しています。

これは(X)ubuntuの一般的な問題のようです。私はまだ明確な解決策を見つけていません。スティックはフラッシュではなく非同期としてマウントする必要があるようですが、これをどのように達成するかは正確にはわかりません。転送速度が良ければ、切断する前に毎回スティックをアンマウントする必要があるかどうかは気にしません。

何か案は?

11月2日: このバグレポートは関連しているようだ:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/182931。私が心配しているのは、問題が2年以上経過しているようで、まだ解決していないことです。

11月10日: 私は(のgnome-ディスクユーティリティプロジェクトから)palimpstestで読み取りテストを開始しました。これにより、最小転送速度は23 MBit / sになります。また、krusaderで試してみました。読み取り速度は常に20 MBit / sを超えています。したがって、問題は実際にスティックに書き込むだけです!

同じプログラム内の読み取り/書き込みテストのイメージを次に示します。

ここに画像の説明を入力してください

上記のようにvfatが主な原因ではないことを示すテストの前に、ファイルシステムを完全に削除する必要がありました。

別のヒント:100 MBのファイルを転送する場合、100%になったら、実際に転送を完了するのに異常な長い時間がかかります。これは、ファイルが実際にキャッシュ内にあるが、USBデバイスへの書き込みが非常に遅いことを私にもう一度見ます。

11月12日: 「良いニュース」。問題は、メモリースティック自体にあるようです。外付けハードドライブ(My Book Elite 1TB)を試すと、約20 MiB / sの一定の書き込み速度が得られます。最初にメモリスティックを再フォーマットして、2つを実際に比較できるようにしました(ファイルシステムが異なっていました)。再フォーマット後、両方のドライブはまったく同じ方法でマウントされます。

/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に恩恵を与えなければならないと感じています。皆さんありがとう。


ocaoimh.ie/ubuntu-linux-slow-external-usb-driveこれが役立つことを願っています=)

1
フラッシュドライブと真の外部HDの書き込み速度に違いはありますか?ちょうど質問
RobotHumans

素晴らしいアイデア!tippに感謝します。更新(11月12日)で結果をご覧ください。問題はまだ解決していませんが、これにより本当に問題が絞り込まれます!
pgruetter

FWIW、flushマウント出力のオプションは役に立ちそうにありません。私はそれがさらに悪いと思いますsync
beldaz 14

回答:


11

Slow USB 2.0大量保存の転送速度に関する記事は、これがデバイスがデフォルトでsyncオプションでマウントされる問題の可能性があることを示唆しています。

デスクトップに「デバイス」アイコンがありますか?
もしそうなら、それを開きます。そうでない場合は、konquerorでmedia:/を開いてみてください。

デバイスを選択し、[プロパティ]-> [Mounting(tag)]を選択して、[同期]ボックスをオフにします。(これは記憶されるため、デバイスごとに1回だけ実行する必要があります)。


いくつかのより多くのアイデアは、バグレポートから来る非常に遅い書き込み作っ外付けHDDにライトスルー

  • 実行時に「sudo mount -o remount、async / dev / sda1」(またはマウントされたパーティションが何であれ)によって非同期に変更します
  • 非同期にマウントするsdaのfstabエントリを作成します(これには、起動時に常にデバイスが接続されている必要があります)
  • pmountソースで「sync」を「async」に変更し、パッケージを再構築します

これがシステムに当てはまる場合は、pmountに関する記事の説明も参照してください。


もう1つの魔法の解決策は、USB 2.0の遅い書き込みですが、速い読み取りのソリューションです。再マウントが含まれます:

次の行で/ dev / sdc1にUSBドライブをマウントすると

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

/ etc / fstabで、ローカルハードディスクから5.2 MBファイルをドライブにコピーしてから、1分後に244 KBが転送されます。29 MBファイルを外部ドライブからローカルドライブにコピーするには、約10秒かかります。

その後、アンマウントする場合、/ etc / fstabの行を

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

29 MBのファイルを外部ディスクにコピーすると、気付かないうちに1秒もかかりません。外部ディスクからローカルディスクへのコピーと同じです。


この記事と「usbtree」への参照を参照してください。usbが1.1または2.0として機能しているかどうかを確認する方法を示します。

LinuxおよびUSB 2.0


これはKDEに固有のようです。XFCE4(Xubuntu)を使用しています。Konquererがインストールされているので、とにかく提案を試みました。メディアを開く:/例外「プロトコルがサポートされていません」が表示されます。それが「非同期」または「同期」にマウントされているかどうかを調べることができる他の方法はありますか?
pgruetter

もう1つの便利な記事を追加しました。
harrymc

remountは何もしません。「mount」の出力は同じままです。最初のメッセージをご覧ください。また、提案のおかげで、pmountでマウントしようとしました。pmountの助けにより、デフォルトで非同期にマウントされます。それでも、転送速度は最初は非常に速く、数秒後に低下します。私はスティックが実際に非同期にマウントされていると信じ始めていますが、問題はどこかにあります!?
pgruetter

もう一度試してみてください。
harrymc

harrymcに感謝します、本当にあなたの継続的な努力に感謝します。残念ながら、まだチャンスではありません。/ etc / fstabに記載されている設定で試して、マウントしました。同期を使用してオプションを試してみると、さらに悪くなります。100〜200 Kib / s程度しか取得できません。同期オプションがなくても、最初と同じ速度で1〜2 MiB / sに低下します。
pgruetter

2

ドライブへのアクセスは通常、非同期モードでバッファリングされます。最初の高速バーストは、メモリキャッシュに対して発生する可能性があります。低速は実際の書き込み速度です。

転送中に点滅するUSB​​スティックがある場合は、いくつかのテストを試してください。コピーが完了した後、書き込みがかなり長く続くことがわかりました。

同期モードではなく非同期モードでマウントすると、コピーがより速く進行するように見えますが、コピーされたデータが実際に転送されるのと同じセキュリティは得られません。

のオプションを確認しますman mount。一部の形式では、メタデータ(ディレクトリ、ファイルアロケーションテーブルなど)の更新を延期できます。これにより、コピーする必要があるデータの量が削減されます。これにより、データ損失のリスクがわずかに増加します。


情報をありがとう、これは私の仮定を実際に確認します。ドライブは転送中は常に点滅しますが、転送後も長くは点滅しません。これは、ファイルマネージャがまだスティックにアクセスしているためだと思われます。セキュリティは大きな問題ではありません。私は本当に速度に興味があります。メタデータについて興味深いことを確認します。ただし、大きなファイル(500 MiB)を転送すると、これによって何かが変わると思いますか?
pgruetter

また、今でも私を困惑させているのは、外付けハードディスクではスティックでなく非常に高速なのはなぜですか?マウントオプションはまったく同じです。まったく同じテストファイルを転送しました。
pgruetter

1
ハードドライブへの4 KiB書き込みは、通常、ハードディスクコントローラーによって実装される4 KiBの書き込みです。フラッシュメモリへの4 KiBの書き込みは、通常、一時ストレージへの128 KiBの読み取り、一時ストレージの正しいオフセットでの4 KiBの上書き、128 KiBの消去操作、128 KiBの書き込みです。フラッシュメモリコントローラー。多かれ少なかれ:)
tzot

1

私の転送は75kb / sで実行されていたので、同じ問題のGoogle検索(「ubuntu 15はUSB転送を高速化」)でこのページにアクセスしました。

これはおそらく私のセットアップの唯一の解決策でしたが、16GB USB 3ドライブはGPT fat32にフォーマットされ、すべてのパーティションを削除し、MBRに初期化し、単一のNTFSパーティションを作成し、Ubuntu PCに差し込んで10GBファイルを転送しています50MB /秒以上で。私にとって、問題は解決しました。


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を参照してください

この場合、デフォルトの240(USBストレージ)を使用して、すべてのデバイスのmax_sectorsを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で開いた後、常にLINUXを使用しました。その後、外付けハードドライブをアンマウントするより転送速度が1.5mb / s程度で、そこでdmesgを実行しましたsdb1が完全​​にアンマウントされ、fsckを実行し、いくつかの修復を行った後、sdaから外部ディスクにコピーするときに20mb / sの転送速度が再び発生すると言っていました。
「データがある場合、fsckは常にリスクですが、私にとってはうまく機能し、データの損失はありません」


0

チェックし、実際に確認してくださいお使いのデバイスがフルスピードをサポートしているUSBポートに差し込まれていること、。

これはばかげて聞こえるかもしれませんが、時々物事が混乱することがあります。一部のマザーボードには、高速ポートと低速ポートがあります。usbviewなどのツールを使用して(スーパーユーザー権限で実行することに注意しsudo usbviewてください)、デバイスが480Mb / s(USB 2.0)以上で動作していることを確認します。

たとえば、通常、延長コード、ディスプレイのハブなどを介してデバイスを接続する場合、デスクサイドコンピューターなどでケーブルを再接続した後、誤ってハブを低速に接続したことが発生する可能性があります(USB 1.)ポート。その後、ハブに接続されたデバイスは低速で動作し、他の場所に接続されたデバイスは高速で動作します。非常に混乱する可能性があります-そして、これは単純なハードウェアです...一度私に偶然起こりましたが、USBカーネルモジュールやマウントオプションなどとは関係ありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.