dd if = / dev / hda of = / dev / hdbを実行すると、ハードドライブの深いコピーが実行されることを知っています。「bs」オプションを使用して、一度に読み書きされるバイト数(512)を増やすことで、プロセスを高速化できると聞いたことがあります。
私の質問は:
ハードドライブからコピーするための理想的なバイトサイズを決定するものは何ですか?
そして
なぜそれが理想的なバイトサイズを決定するのですか?
dd if = / dev / hda of = / dev / hdbを実行すると、ハードドライブの深いコピーが実行されることを知っています。「bs」オプションを使用して、一度に読み書きされるバイト数(512)を増やすことで、プロセスを高速化できると聞いたことがあります。
私の質問は:
ハードドライブからコピーするための理想的なバイトサイズを決定するものは何ですか?
そして
なぜそれが理想的なバイトサイズを決定するのですか?
回答:
Chris Sが言うように、最適なブロックサイズはハードウェアに依存します。私の経験では、これは常にデフォルトの512バイトよりも大きくなっています。rawデバイスで作業している場合、上にあるファイルシステムジオメトリは効果がありません。以下のスクリプトを使用して、ddのブロックサイズを「最適化」しました。
#!/bin/bash
#
#create a file to work with
#
echo "creating a file to work with"
dd if=/dev/zero of=/var/tmp/infile count=1175000
for bs in 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M
do
echo "Testing block size = $bs"
dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs
echo ""
done
rm /var/tmp/infile /var/tmp/outfile
/dev/zero
が生成され、ディスクから読み取る必要はありません。dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile
@ olivier-dulacをうまく使えば、dd
すでに速度を印刷できます。私は価値のある情報を追加time
(または/usr/bin/time
)するとは思わない。
残念ながら、最適なサイズは、システムバス、ハードドライブコントローラー、特定のドライブ自体、およびそれらの各ドライバーに依存します。最適なサイズを見つける唯一の方法は、さまざまなサイズを試し続けることです。一部のデバイスでは1つのブロックサイズしかサポートされないという公正な警告ですが、これはまれですが、通常はドライバーが違いを補います。
Adaptec SAS RAIDコントローラー、4x PCIe、64ビットFreeBSD 8.0-STABLEに接続されたWDC(8mbキャッシュ)SATAドライブに最適なブロックサイズは2 ^ 15または2 ^ 16です。しかし、安価な古いサムドライブでは、2 ^ 10のサイズが最速のようです。
「完璧なサイズ」は、ほぼ常に2のべき乗です。