ddが同じディスクを読み書きするのはなぜですか?

ddが同じディスクを読み書きするのはなぜですか?

dd私はLinuxで外部USBハードドライブを上書きするためにこのプログラムを使用してきました。

デフォルトのブロックサイズである512バイトを使用する場合は、次のコマンドを使用します。

# dd if=/dev/zero of=/dev/sdb

作業中、ハードドライブ(/dev/sdb)は一度に約1 GBずつ交互に読み書きします。それはread 1GB………などです。ハードドライブに書き込まれた数のデータがハードドライブから読み取られますwrite 1GBread 1GBwrite 1GB

私はこれがディスクI / Oアクティビティの100%信頼できる指標である私のカスタムConkyパネル(diskio_read、)に表示されるので、これが起こることを知っています。diskio_write

別の外付けハードドライブを使用している別のコンピュータでこの操作を繰り返しました。これはUSB 2.0とUSB 3.0を介して発生します。

代わりに、次のコマンドを使用して同じことを行いますが、1 MBのブロックサイズを使用します。

# dd if=/dev/zero of=/dev/sdb bs=1M

最初に少しの読み取り回数を除いて、作業中はハードドライブをまったく読みません。

標準のLinuxディストリビューション(Xubuntu 14.04)を使用して、2台の異なるコンピュータと2つの異なるハードドライブでこれが発生することを考えると、誰もが自分のコンピュータからそれらを複製できる必要があります。

誰かがここで何が起こっているのか説明できますか?

ベストアンサー1

指定されたブロックサイズ(512バイト)がディスクのブロックサイズ(通常は4096バイトですが、現在は多く)より小さい場合、ブロックは部分的に書き込まれるため、書き込み前にブロックの残りの内容を保存する必要があります。

ディスクブロックは512バイトしか書き込めず、ブロック全体(4096以上)を一度に書き込む必要があるからです。この(4096)個以上の数字を書くと部分書込みにならないので読める必要はありません。

おすすめ記事