USBメモリスティックへのコピーは本当に遅いですか?


45

ファイルをUSBデバイスにコピーすると、Windows(同じUSBデバイス、同じポート)よりもはるかに長くかかりますが、USB 1.0の速度(1MB / s)よりも高速ですが、USB 2.0の速度(12MB / s)よりもはるかに遅くなります。1.8GBをコピーするには10分以上かかります(3分未満である必要があります)。2つの同一のSanDisk Cruzer 8GBスティックがあり、両方に同じ問題があります。隣接するポートに32GBの超才能のあるUSB SSDがあり、予想される速度で動作します。

GUIで表示される問題は、進行状況バーがほぼ瞬時に90%になり、100%に少し遅くなり、10分間ハングすることです。この時点でコピーを中断すると、ファイルの末尾で破損が発生するようです。コピーが完了するのを待つと、コピーは成功します。

何か案は?以下のdmesg出力:

[64059.432309] usb 2-1.2: new high-speed USB device number 5 using ehci_hcd
[64059.526419] scsi8 : usb-storage 2-1.2:1.0
[64060.529071] scsi 8:0:0:0: Direct-Access     SanDisk  Cruzer           1.14 PQ: 0 ANSI: 2
[64060.530834] sd 8:0:0:0: Attached scsi generic sg4 type 0
[64060.531925] sd 8:0:0:0: [sdd] 15633408 512-byte logical blocks: (8.00 GB/7.45 GiB)
[64060.533419] sd 8:0:0:0: [sdd] Write Protect is off
[64060.533428] sd 8:0:0:0: [sdd] Mode Sense: 03 00 00 00
[64060.534319] sd 8:0:0:0: [sdd] No Caching mode page present
[64060.534327] sd 8:0:0:0: [sdd] Assuming drive cache: write through
[64060.537988] sd 8:0:0:0: [sdd] No Caching mode page present
[64060.537995] sd 8:0:0:0: [sdd] Assuming drive cache: write through
[64060.541290]  sdd: sdd1
[64060.544617] sd 8:0:0:0: [sdd] No Caching mode page present
[64060.544619] sd 8:0:0:0: [sdd] Assuming drive cache: write through
[64060.544621] sd 8:0:0:0: [sdd] Attached SCSI removable disk

Linuxは、他のタスクをより高速に実行する代わりに、ディスク書き込みを延期します。ただ推測して、実行syncしてみて、プロセスがスピードアップしないかどうかを確認してください。<-テストされていないが可能
-RobotHumans

それは、あるタイプのUSBに対しては延期するが別のタイプに対しては延期するとは意味がありません。また、30秒ごとにLinux呼び出しの同期を思い出すようです。時代遅れかもしれません。これは、デバイスの種類に依存するため、これは何らかのドライバーまたは互換性の問題であると予想しています。
エロフ

他のUSBサムドライブで高速であることは疑問ではありません。もしそうなら、私はhdparmを調べることを提案したでしょう。したがって、セットアップ全体を知らない誰かの観点からそれを見るのは理にかなっていますが、詳細はあなたの質問に依存します
RobotHumans

「隣接するポートに32GBの超才能のあるUSB SSDがあり、期待される速度で動作します。」それはそこにありましたが、よく隠されています:)それで、あなたが暗示するこのhdparmのものは何ですか?
エロフ

さて、SSDとフラッシュメモリは同じものではありません。しかし、hdparmは、ドライブのアクセス/スピン速度を手動で設定できるユーティリティです
-RobotHumans

回答:


29

LinuxではUSBドライブへのコピーが非常に遅い(およびWindowsでは速い)のはなぜですか?

理由1.ファイルのキャッシュにより、書き込み遅くなったり速くなったりする

GUIで表示される問題は、進行状況バーがほぼ瞬時に90%になり、100%に少し遅くなり、10分間ハングすることです。

理解する必要がある1つのことは、ファイルのキャッシュです。Linux(およびWindows)は、それ以外の場合は「空の」RAMを使用して読み取り/書き込み操作をキャッシュし、以降のアクセスでそれらを高速化します。コピー操作を低速デバイスにキャッシュすると、表示される動作が発生します。「高速完了」は実際にはキャッシュに書き込まれますが、キャッシュ内のデータの実際のフラッシュ(同期)は低速デバイスであるため、遅くなり停止します非常に時間がかかります。その時点で中断すると、同期が終了しなかったため、データが破損します(メモしたとおり)。

Windows 同期を待たずに、データがキャッシュに書き込まれるとすぐにジョブが完了したと宣言することがあるため、Windowsでのそのようなコピーは、報告されたMB /秒速度を含めて高速に見えるかもしれません

理由2.大量のファイル、特に小さなファイルの書き込みが遅い

1.8GBをコピーするには

フラッシュメモリとファイルシステムの動作方法により、非常に大きなファイルを書き込む場合、最速のスループット(速度)が達成されます。多数の小さなファイル、または多数の小さなファイルを含む混合データを書き込むと、プロセスが大幅に遅くなる可能性があります。これはハードドライブにも影響しますが、程度はやや劣ります。

理由3. USBスティックとSSDの書き込み速度を比較できない

隣接するポートに32GBの超才能のあるUSB SSDがあり、予想される速度で動作します。

  • 園芸品種のUSBスティックは通常、シリアル(順次)に書き込まれるフラッシュメモリチップで構成され、独自のキャッシュはありません。

  • 一方、SSDには、フラッシュメモリチップに並行して書き込むコントローラーが含まれており、USBスティックと比べてスループットが2倍以上向上します。

    • 32GB SSDに4x 8GBチップが搭載されている場合、書き込み操作でUSBスティックよりも4倍高速です。
    • また、SSD はRAMなどのキャッシュ(ハードディスクなど)含まれているため、着信データをキャッシュにすばやく保存し、OSに完了したことを伝えることができますが、そのデータを実際にフラッシュメモリに書き込む必要があります。
  • したがって、1つの大きなファイルでは、想定した4x構造の32GB GBが4xの速度になります。多くの小さなファイルでは、キャッシュにインテリジェントに保存できるため、10倍以上高速になります。


要約すると、これらがLinuxでUSBスティックへのファイルのコピーが遅く見える理由です。ハードウェア/ドライバーの問題などが原因で実際​​に遅くなりますか?

LinuxとWindowsの間で書き込み速度を適切に比較する

  • まず第一に、理由3のためSSDを忘れてください。それはオレンジとリンゴのようなものです。
  • 理由1(キャッシュ)と理由2(小さなファイル)の影響を無効にするには、テストシステムのRAM容量よりも大きい1つの大きなファイルでテストする必要があります。
  • Linuxでは、を使用して作成dd if=/dev/urandom of=largetest bs=1M count=7500でき、7500 MBのテストファイルが提供されます。システムのRAMが4GB程度以下であると仮定すると、それで十分です。それを新しくフォーマットしたSandisk 8GBスティックにコピーして、時間を計ってください。
  • Windowsで再起動しlargetest、USBスティックからハードディスクにコピーします。再起動します(キャッシュから削除します)。次に、USBスティックをフォーマットし(同じvfat / FAT32!)、largetestハードディスクからスティックにコピーします。
  • 時間はどのように比較されますか?

2
cc:@Eloff Re 理由1:はい、キャッシュの同期は確かに見かけの書き込み時間に影響を与える可能性があります。しかし、キャッシュだけで10分間ハングする理由を説明できますか?OPの詳細が必要だと思います。再の理由2:なぜ、あなたはこの転送は、多数の小さなファイルで構成され前提としていますか?OPはこの1.8GBの転送に関する詳細を提供するとは思わないでしょうか?Re Reson 3:はい、SSDは別の獣です。また、おそらくUSBではなくSATAを介して接続されます。OPは単に誤認識され、USBスティックをSSDと呼んでいたと思います。しかし、再度、OPから詳細を取得しない限り、知る方法はありません。
不合理なジョン

2
この答えは、質問がどのように定式化されたかを露骨に無視します。質問は明らかに、1つの大きなファイルと、コピーを中断するとファイルが破損するという事実について語っています。
zrajm

4
@zrajmそれは本当です。しかし、私のような人が同じ問題にぶつかった場合、これは非常に役立ちます。
ピチコス14年

このキャッシュ動作を無効にする方法は?
アミノカノ

7

修正は、マウント解除、ドライブの取り外しsudo modprobe ehci_hcd、ターミナルでの実行のみでした。ドライブsudo modprobe ehci_hcdを入れて、20 / mbsで共有すると思ったら、ドライブとagianを挿入します。私は毎回それをする必要がないことを願っています...しかし、それは難しいことではありません...

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/177235 はバグを修正したと言っています


マジ?そのバグレポートは2007年12月のもので、Ubuntu gutsy 7.10を参照しています。(FYI:@MarcoCeppi)
不合理なジョン

3
@irrationalJohn私は答えを提供しなかった、私はちょうどそれをきれいにした。第二に、バグレポートが古いからといって、それがまだ有効ではないという意味ではありません。これに応じてトリアージされています
マルコ・セッピ

@MarcoCeppiはい、編集しただけです。だからこそ、「FYI:」と前書きしました。あなたがそれを編集した場合、あなたは興味があるかもしれないし、そうでないかもしれないと考えました。気にしないのなら、通知を無視するだけだと思いました。まだ関連性のある古いバグレポートについては... 4年以上前に、少なくとも8つ(?)のリリースが遅れると思いますか?パフォーマンスのバグがありますか?確かに、それは可能かもしれませんが、それは私が見た最初の場所ではありません。FWIW。
不合理なジョン

7

ポートの問題である可能性は非常に低いと思います。これは、おそらくLINUX(またはLinux構成)の問題です。回避策を講じると、linux / ubuntuで低速のUSBに関する数千の問題レポートが見つかります。私にとっては、これはほとんどLinuxにとって最高の存在です。現在、Ubuntu 12.04 LTSを使用していますが、まだこの問題があります(そのため、主に/これだけのためにWin7セットアップを使用します)。この問題(または同様の症状のあるもの)は、数年前から存在し、明らかに修正されていません。そして、この間、いくつかの異なるubuntuバージョン(デフォルト設定)と2〜3種類のUSBスティックを備えたいくつかの物理PCを試しました。


5

ただ、umountそれはすでに自動マウント、および手動にマウントされている場合、デバイス/mnt/foldername

私の場合、

umount /media/usb0
mount /dev/sdb1 /mnt/sam

その後、非常に高速に対処しています。


これに加えて、rsync代わりにcpトリックを行うようです。
イルファン

19
これは私の状況に影響を与えませんでした。また、これは実際にこれが違いを生むことになっている理由についての理論のない解決策ではありません。
ロンドンロブ

@Irfanいいえ、rsyncも遅くなります
...-sergzach

3

2019年であり、私はまだこの同じ問題を抱えています。それで、私は解決策をインターネットで検索することを考えました。私は1つを示唆する次のページを見つけました:https : //gist.github.com/2E0PGS/f63544f8abe69acc5caaa54f56efe52f

それは言います:

コンソールで次のコマンドを実行して、問題が解決するかどうかを確認します。sudo su最初に必要な許可を取得する必要がある場合があります。

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

動作する場合は、/etc/rc.localファイルの最後に2行を貼り付けることで、再起動後もこの変更を維持できます。

私にとっては、次の効果がありました。

事前に大きなファイルをUSBドライブにコピーすると、非常に速く(60 MB /秒など)開始し、終了しないように見えるまで徐々に遅くなります(<10 MB /秒)。

開始は遅くなりますが、より速くなり、以前よりも早く終了します。したがって、問題を「解決」するか、少なくともプラスの効果があるようです。


1

USB 3.0に切り替えると、1mb / sから5-8mb / sに変化します。3.0 USB pciと外部HDに切り替えましたが、振り返ることはありません。


1

/ etc / mtabを見ると、デバイスが「フラッシュ」オプションでマウントされていることがわかりますか?

もしそうなら、これが問題の原因である可能性があります(それは私にとって)。デバイスをアンマウントして再マウントするだけで、デフォルトでは設定されません。


フラッシュオプションはデフォルトで設定されていますが、これを止める方法はありますか?
ベンルトゲンス14年

@ Ben Lutgens-はい、/ etc / fstabにフラッシュオプションのない独自のエントリを置くことができます。sudo blkidを使用して関連するデバイスUUIDを見つけ、UUID = "your device uuid here" / mnt / <ここのマウントポイント> uid = 1000、gid = 1000、fmask = 0022、dmask = 0022 0 0などのエントリを配置します。 uid、gidを変更して、使用する通常のユーザーのユーザーIDとグループIDに一致するようにします(getent passwd <your user>で検出)。
-A.ダニシェウスキー

これを行うと、すべての変更は、コピーの進行状況バーが表示されなくなり、デバイスをアンマウントしようとするとコピーが実際に開始/終了したように見え、「操作が完了するまでプラグを抜かないでください」 「。
ジェニーオライリー

0

WD外付けディスクの転送速度にも問題がありました。Windowsで開いた後、常にLinuxを使用しました。その後、転送速度は1.5 MB / sのようでした。 sdb1が完全​​にアンマウントされ、fsckを実行し、いくつかの修復を行った後、sdaから外部ディスクにコピーすると20mb / sの転送速度が再び発生すると言いました。データがある場合、fsckは常にリスクになりますが、データ損失なしで機能しました。


-2

この問題もありましたが、cpコマンドを使用して、数秒でUSBスティックを更新しました。

cp -r -u /home/user/Muziek/ /media/user/Audiousbsti
cp -r -u /home/user/Muziek/ /media/user/4F49-4A65/

非常に遅い答えだと思いますが、まだ開いています。


-3

OKその仕事をしてください。GUIで使用したい場合は、rsyncがターミナルで実行されるため、rsyncのグラフィカルバージョンであるGrsyncをインストールすることをお勧めします。

これが役に立てば幸いです

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