CentOS 7 x86_64 DVDイメージをUSBドライブ(sdb)にコピーするdd
ときiostat
。
主にUSBドライブへの書き込みは交互に続行されます。
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 18,00 380,00 28,00 380 28
sdb 79,00 16,00 9000,00 16 9000
そして、ハードドライブとUSBドライブの両方から読みます。
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 53,00 5180,00 0,00 5180 0
sdb 1329,00 5316,00 0,00 5316 0
マシンでは何も起こらず、dd
停止するとディスクが利用可能になります。
これは一種の内部チェックサムプロセスですかdd
?
Linux 3.16.0のUSBドライブドライバに固有の機能はありますか?
答え1
外付け(USB 2.0)ハードドライブを安全に消去すると、同様の状況が発生しました。 100%の書き込みを期待していましたが、長い読み取りと数秒の高スループット書き込みが続きました。全体の書き込み速度を表示するためにpvを使用し(下記のコマンドを参照)、平均書き込み速度は10MB / sであり、14MB / sのバーストは約10秒間続いた後、数kB / sに続きました。私のiostat出力はあなたの出力に非常に似ています。
知っていると私の問題だったdd ブロックサイズが小さすぎます。(512バイト)。私が疑うのは、カーネルがブロックあたり1kのバッファでブロックを読み取ってddが一度に512バイトを上書きしてからフラッシュできることです。私はカーネルの専門家ではないので、これは単なる推測です。
私はそう言えるddブロックサイズを72Kに増やすと大きな違いが発生します。。現在、持続書き込み速度が40MB / sを超えることがわかりました。これは、USB 2.0が提供できる理論的最大値(480Kb / s、USBオーバーヘッドを除く)に非常に近く、この10年後のディスクが達成できる最大持続書き込み速度(約55MB / s)にも非常に近いです。私はその速度がほぼ裸の金属速度に非常に満足しています。
以下は、ドライブを消去するために使用するコマンドです。
openssl enc -aes-256-ctr -pass \
pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" \
-nosalt </dev/zero \
| pv -bartpes 160041885696 -B 128K \
| dd bs=72K count=2170707 of=/dev/sdf iflag=fullblock
行1-3は、/dev/urandomで生成されたパスワードを使用してAES-256-CTRを介して/ dev/zeroを暗号化します。したがって、それは暗号化されたランダムなごみストリームです。
4行目は、160GBドライブのバイトを考慮し、128KiB転送バッファサイズのpvを使用して進行状況を示しています。
行5では、電卓を使用して選択したブロックサイズを使用して、ドライブの合計バイト数の一部である512の最大倍数を見つけようとします。 iflag = fullblockを使用すると、書き込み前に1つのブロック全体があるまで、ddはそのバッファを繰り返し読み込みます。