これら2つのddコマンドの違いは何ですか?

これら2つのddコマンドの違いは何ですか?

乗算が等しい場合、合計値が異なる2つのddコマンドの違いは何ですか?たとえば、bscount

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1

答え1

最終結果に関しては、彼らも同じことをします。違いはddデータの処理方法にあります。実際、どちらの例もこれに関して非常に極端です。bsパラメーターは、dd出力する前にメモリーにバッファーする必要があるデータ量を示します。

したがって、本質的に最初のコマンドは次のようになります。努力する2GBを2つの1GBブロックに分けて読み込みます。努力する2GB全体を一度に読み取り、ファイルに出力しますaa

答え2

結果は同じですが、最初のケースではdd2つの1GBブロックが記録され、2番目の場合は2GBブロックが記録されます。違いは、ddコピーされたブロックがメモリに保持されることです。最初のケースでは1GBのRAMが必要で、2番目の場合は2GBが必要です。

それほど大きなブロックを使う必要はないと思います。いくつかのテストを行うことができますが、私の場合は、より小さなチャンク(< 1MB)を使用してより速い速度を達成しました。

答え3

最初は1Gのメモリを占有し、入力ファイルのデータで埋め、2回出力します。

2つ目は2Gのメモリを占有し、入力ファイルのデータで埋め、出力します。

答え4

使用されるブロックサイズは、ソースデバイスとターゲットデバイスの最適速度設定と一致する必要があります。

LVデバイスをコピーすると、違いを最もよく確認できます。非常に小さいBSサイズを使用すると、読み取りプロセスが不必要に中断されます。非常に大きなBSサイズを使用すると、書き込み中に長い待ち時間が発生します。

標準のLVは通常4MBブロックで構成されており、これは物理ディスクアクセスに適したサイズなので、bs = 4Mを使用します。

16Kまたは256Mで試してください。違いがわかり、コピープロセス中にディスクインジケータを見てください。

関連情報