dd多くの(奇妙な)オプションがあります。dd(1)を参照してください。
バッファサイズを明示的に指定する必要があるため、試してください
dd if=/dev/sda of=/dev/sdb bs=16M
IIRC、デフォルトのバッファサイズは512バイトのみです。上記のコマンドは、16メガバイトに設定します。もっと小さいもの(たとえばbs=1M)を試すこともできますが、デフォルトよりも多く使用する必要があります(特に4Kバイトのセクターを持つ最新のディスクハードウェア、つまりAdvanced Formatで)。少なくとも1メガバイトの2の累乗を単純に推奨します。
デフォルトの512バイトのバッファーサイズでは、ハードウェアではカーネルが512バイトブロックごとに4Kを転送する必要があると思います(ただし、非常に間違っている可能性があります)。
に関してrdsk、sd(4)の manページには次のように書かれています:
現時点では、ブロックデバイスのみが提供されています。Rawデバイスはまだ実装されていません。
ddのバッファサイズを増やすと、読み取りおよび書き込み操作のパフォーマンスが向上します。現在、すべてのディスクにハードウェア読み取り/書き込みバッファがあります。ただし、ddのバッファサイズをハードウェアバッファより大きくすると、ddは最初のディスクからバッファに読み込み、2番目のディスクがすべて独自のハードウェアバッファから書き込むため、パフォーマンスが低下します。bsデバイスごとに異なる値を設定するたびにddコマンドのオプションを設定する必要があります。
cp /dev/sda /dev/sdbまたは(pv /dev/sda > /dev/sdbプログレスバーを取得する)の方がはるかに高速です。なぜddここで使用するのですか?エラーのあるディスクを処理ddするような場合にのみ役立ちconv=sync,noerrorますが、それでも、ddrescue代わりに次のようなものを使用する方が理にかなっています(pv「-Eオプション」も参照)。