ddはなぜそんなに時間がかかるのですか?

ddはなぜそんなに時間がかかるのですか?

あるディスクを別のディスクにコピーする必要があります。次のコマンドを試してみましたが、ペデロから1 TBのディスクをコピーするのにほぼ1日かかりました。

dd if=/dev/sda of=/dev/sdb 

以下のコマンドを使用してUnix(HP-UX)システムで同じことを試みましたが、数時間以内に完了しました。

dd if=/dev/sda of=/dev/rdsk

ディスクからディスクにすばやくコピーするには、どのような方法を使用できますか?

ベストアンサー1

dd(奇妙な)オプションがたくさんあります。仕事(1)

バッファサイズを明示的に指定する必要があるため、試してみてください。

dd if=/dev/sda of=/dev/sdb bs=16M

IIRCの場合、デフォルトのバッファサイズはわずか512バイトです。上記のコマンドはこれを16MBに設定します。より小さいもの(例bs=1M:)を試すことはできますが、デフォルトよりも多くを使用する必要があります(特に4 KBセクタを持つ最新のディスクハードウェアの場合、つまり高度なフォーマット)。私は少なくとも1メガバイトの2勝を無実に推薦したいと思います。

デフォルトのバッファサイズである512バイトを使用しているようです(しかし非常に間違っている可能性があります)。ハードウェアカーネルは512バイトブロックあたり4Kを送信する必要があります。

についてrdsk標準偏差(4)マニュアルページには次のように記載されています。

現在、ブロックデバイスのみが利用可能です。生のデバイスはまだ実装されていません。

ddのバッファサイズを大きくすると、読み書き動作のパフォーマンスが向上します。すべてのディスクにハードウェアの読み取り/書き込みバッファがあります。しかし、ddのバッファサイズをハードウェアバッファ以上に増やすと、ddが最初のディスクから読み取られるのに対し、2番目のディスクはそれ自体のハードウェアバッファからすべてを書き込むため、パフォーマンスが低下します。bs毎回異なるデバイスに異なるddコマンドオプションを設定する必要があります。

おすすめ記事