ながらずっとこんな気がしました。
dd if=/dev/sdx of=/dev/sdy
コマンドの完了後に表示されるレポートは次のとおりです。
79304319+0 records in
79304319+0 records out
40603811328 bytes (41 GB) copied, 459.645 s, 88.3 MB/s
次の間の最も遅い速度に対応する速度を含みます。
- 入力読み取り速度、
- 出力書き込み速度、
- 読みと書き込みの間に何が起こるのか、
つまり、読み取り速度が5MB / sのUSBドライブからSSDにデータをコピーすると、dd
SSD速度に関係なく実際に5MB / sが報告されます。
実際にUSB 2に接続されているディスクをコピーしていましたが(2回確認し、マニュアルには接続速度が480MbpsのUSB 2.0と記載されています)、報告された速度がdd
65MB/sから88MB/sに増加したことがわかりました。などより高い最大速度60MB/sUSB 2.0の場合。
そこで何が起こったの?
読み取り速度と書き込み速度を加算して速度をdd
計算します(実際の速度は約40MB / sですので、より意味があります)。
追加情報: 実験可能なレプリカを作成するために、不良セクタの数が増えるハードドライブのコピーを作成しています。ディスク全体をコピーした後、報告された速度は実際に予想よりも高くなります。
3902854784+0 records in
3902854784+0 records out
1998261649408 bytes (2.0 TB) copied, 26040.5 s, 76.7 MB/s
コマンドが最初の数(2〜3)GBの間だけ繰り返されることを考えると、次のようになります。確認してみると、コピーしたディスクが正確で、マザーボードはUSB 3をサポートしていません(そして追加のUSB 3 PCI-eカードもありません)。
hdparm
結果はさらに奇妙です。
$ hdparm -tT /dev/md0
/dev/md0:
Timing cached reads: 13498 MB in 2.00 seconds = 6755.77 MB/sec
Timing buffered disk reads: 486 MB in 3.00 seconds = 161.77 MB/sec
$ hdparm -tT /dev/md0
/dev/md0:
Timing cached reads: 15058 MB in 2.00 seconds = 7536.75 MB/sec
Timing buffered disk reads: 418 MB in 3.01 seconds = 138.91 MB/sec
$ hdparm -tT /dev/md0
/dev/md0:
Timing cached reads: 15038 MB in 2.00 seconds = 7527.54 MB/sec
Timing buffered disk reads: 386 MB in 3.01 seconds = 128.38 MB/sec
答え1
oflag=direct
または、指定しない限り、conv=fsync
カーネルはデータをバッファリングするため、カーネルが最後のデータをdd
受け入れるとすぐに(データがドライブに到達する数秒前になる可能性があります)、カーネルはデータが完了したと見なします。データ量が少ないと、スループット推定に重大なエラーが発生する可能性があります。
答え2
一般に、dd
転送全体にかかる時間を表す速度は、「データ量を所要時間で割った値」である。基本的にそれはあなたが得るべきものと同じであり、time dd ...
魔法はありません。
40603811328 bytes (41 GB) copied, 459.645 s, 88.3 MB/s
40603811328 / 459.645 / 1000 / 1000 = 88.3373
たぶんある時点でddをキャンセルして再起動したかもしれません。この時点で、ほとんどのデータがキャッシュされ、キャッシュは統計を混乱させましたか?hdparm -tT /dev/disk
実際の走行速度をおおよそ推定してみることができます。
USB2の場合、速度は本当に疑わしいです。間違ったデバイスを誤用しないでください。