限られたサイズのデバイスをコピーするときにブロックサイズを指定するのはなぜですか?

限られたサイズのデバイスをコピーするときにブロックサイズを指定するのはなぜですか?

オンラインチュートリアルでは、CDROMをISOイメージにコピーするために次のコマンドを使用することをお勧めします。

$ dd if=/dev/dvd of=foobar.iso bs=2048

ブロックサイズを指定する必要があるのはなぜですか?わかると、実は2048年はCDROMイメージの標準論理ブロックサイズしかし、それは指定も有効でもddないようです。bs=count=

どのような状況で問題が発生しますか?いいえ限られたサイズのデバイスで指定またはbs=コピーするとき。count=

ベストアンサー1

ddはいつデータのコピーに適していますか? (またはread()とwrite()が部分的な場合)使用時に重要な注意事項に注意してくださいcountdd部分チャンクがコピーされる可能性があるため、指定された場合、一部のチャンクがcount不完全であっても、指定されたチャンク数の後に停止します。したがって、bs * countコピーされたバイト数は、指定しない限りバイト数より少なくなる可能性がありますiflag=fullblock

デフォルトのブロックサイズは次のとおりです。DD512バイトです。countあなたの質問が示すように、限られたサイズのデバイスをコピーする必要はなく、実際にはデバイスの一部だけをコピーすることです。

ここで考慮すべき2つの側面は、パフォーマンスとデータ復旧だと思います。

パフォーマンスの観点から、理想的には、ブロックサイズが少なくともデフォルトの物理ブロックサイズ(CD-ROMを読み取るときは2048バイト)と同じか、その倍数になることをお勧めします。実際、デフォルトのキャッシュシステムがコンテンツをバッファリングできるように、より大きなブロックサイズを指定することもできます。ただし、ブロックサイズを増やすにはddより多くのメモリを使用する必要があり、パケットの断片化のためにネットワーク経由でコピーする場合は非生産的になる可能性があります。

データ復旧に関する限り、より小さなブロックサイズを使用すると、故障したハードドライブからより多くのデータを取得できます。これはdd-rescue、このようなプログラムが自動的に実行する操作です。最初は大きなチャンクを読みますが、チャンクにエラーが発生した場合は、より小さいブロックサイズで読み直してください。ddそうしないとブロック全体が失敗するだけです。

おすすめ記事