乗算が等しい場合、合計値が異なる2つのdd
コマンドの違いは何ですか?たとえば、bs
count
dd if=/dev/random of=aa bs=1G count=2
dd if=/dev/random of=aa bs=2G count=1
答え1
最終結果に関しては、彼らも同じことをします。違いはdd
データの処理方法にあります。実際、どちらの例もこれに関して非常に極端です。bs
パラメーターは、dd
出力する前にメモリーにバッファーする必要があるデータ量を示します。
したがって、本質的に最初のコマンドは次のようになります。努力する2GBを2つの1GBブロックに分けて読み込みます。努力する2GB全体を一度に読み取り、ファイルに出力しますaa
。
答え2
結果は同じですが、最初のケースではdd
2つの1GBブロックが記録され、2番目の場合は2GBブロックが記録されます。違いは、dd
コピーされたブロックがメモリに保持されることです。最初のケースでは1GBのRAMが必要で、2番目の場合は2GBが必要です。
それほど大きなブロックを使う必要はないと思います。いくつかのテストを行うことができますが、私の場合は、より小さなチャンク(< 1MB)を使用してより速い速度を達成しました。
答え3
最初は1Gのメモリを占有し、入力ファイルのデータで埋め、2回出力します。
2つ目は2Gのメモリを占有し、入力ファイルのデータで埋め、出力します。
答え4
使用されるブロックサイズは、ソースデバイスとターゲットデバイスの最適速度設定と一致する必要があります。
LVデバイスをコピーすると、違いを最もよく確認できます。非常に小さいBSサイズを使用すると、読み取りプロセスが不必要に中断されます。非常に大きなBSサイズを使用すると、書き込み中に長い待ち時間が発生します。
標準のLVは通常4MBブロックで構成されており、これは物理ディスクアクセスに適したサイズなので、bs = 4Mを使用します。
16Kまたは256Mで試してください。違いがわかり、コピープロセス中にディスクインジケータを見てください。