USBハードドライブが遅いのはなぜですか(読み取りが書き込みよりも遅い)?

USBハードドライブが遅いのはなぜですか(読み取りが書き込みよりも遅い)?

免責事項:ここにRaspberry Piコミュニティがあることを知っていますが、Raspbian(またはDebian?)、USB HDD対NTFSなど、Piに限定されたコミュニティではないと思います。

長い話を短く:私は外付けUSBハードドライブを備えたRaspberry Pi 4を持っています。読み取り/書き込み速度がかなり遅く、最も驚いたのは、読み取りが書き込みよりも実際に遅いということです!それで何が起こり、犯人はどこにいますか?

詳細:

  • オペレーティングシステム
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux
  • ファイルシステムテーブル:
UUID=1276F80376F7E57F  /mnt/usb_hdd    ntfs-3g    defaults,big_writes,noatime   0   0
  • HDパラメータテスト
pi@raspberrypi:~ $ sudo hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   1496 MB in  2.00 seconds = 747.81 MB/sec
 Timing buffered disk reads: 258 MB in  3.01 seconds =  85.60 MB/sec
  • 同期読み取り
pi@raspberrypi:~ $ rsync --progress -hv /mnt/usb_hdd/Share/Downloads/Games/Civ5.iso ~/Civ5.iso
Civ5.iso
          2.37G 100%   18.90MB/s    0:01:59 (xfr#1, to-chk=0/1)

sent 2.37G bytes  received 35 bytes  19.19M bytes/sec
total size is 2.37G  speedup is 1.00

奇妙なことは、約70MB / sで始まりましたが、ほぼ直ちに約20に落ちてから8から25の間で外れているということです。非常に不安定です。

  • 同期書き込み
pi@raspberrypi:~ $ rsync --progress -hv ~/Civ5.iso /mnt/usb_hdd/Share/Downloads/Civ5.iso
Civ5.iso
          2.37G 100%   39.15MB/s    0:00:57 (xfr#1, to-chk=0/1)

sent 2.37G bytes  received 35 bytes  40.52M bytes/sec
total size is 2.37G  speedup is 1.00

速度も約65MB/sから始まりますが、徐々に約35MB/sに遅くなります。少なくとも私が読んだのと同じくらいランダムではありません。

質問

  1. どちらも誰も読んでいません。そして一般的にゆっくり使いますか? PiとNTFSを考慮しても40MB/sは少し遅くないですか?もしそうなら - 何が問題ですか?
  2. なぜ読み方が書くよりも遅いのですか?時間が経つにつれて読み取り速度が一貫しないのはなぜですか?

転送中のCPUは〜30%で、メモリは十分です。 「ちょうどNTFS」ですか?
とにかくここに助けてくれてありがとう。

ベストアンサー1

最初の質問に答えると、40MB / sはUSB 2.0のボトルネックのように聞こえます。 Pi 4はUSB 3をサポートしていますが、HDDとケーブルがUSB 3であることを確認してください。

コメントの更新情報:

また、rsync外付けハードドライブと自宅の場所という2つの当事者が関係していることに注意してください。方程式から2番目の部分を削除するには、ddHDD専用のベンチマークを試してください。

  • ファイルシステムへの書き込みを含める:sudo dd if=/dev/zero of=/mnt/usb_hdd/blob bs=16M count=100 status=progress oflag=direct
  • ファイルシステムから読む:sudo dd if=/mnt/usb_hdd/blob of=/dev/null bs=16M count=100 status=progress
  • ディスクから直接読み取る:sudo dd if=/dev/sda of=/dev/null bs=16M count=100 status=progress iflag=direct

おすすめ記事