
イメージを USB サムドライブにコピーしたいと思います。「実際の」速度を実現したいので、イメージをコピーした後、デバイスが同期するまで長時間待ちたくないので、そのためにどのオプションを使用すればよいかを知りたいです。
答え1
読んでみてソースコードは、オプションについても質問する必要があることを示していますnocache
。direct
オプションで必要な結果が得られますが、dd
使用している のバージョンによっても異なります。Ubuntu 11.04 システムで大規模なコピーを実行したところ、dsync
データに同期 I/O を使用するオプションを使用すると、さらに遅くなりました (=現実に近い?)。これにより、最新のディスク コントローラが提供する集約の利点が失われる可能性があります。何が起こっているかを「正確に」知るには、実行している特定のカーネルのソース コードを詳しく調べる必要がありますが、それでも、ドライブのインターフェイス ボードに左右され、独自のバッファリングが行われます。
答え2
fsync オプションは、コピーの最後にデータをフラッシュします。dsync オプションは、各ブロックの後にデータをフラッシュします。direct オプションは、ファイルシステム キャッシュをデータで汚染しないという点において、dsync と同様の結果になります。これは、システムの残りの部分をキャッシュするのに適しており、CPU オーバーヘッドをいくらか節約します。
dsync または direct のどちらを使用してもスループットは低くなりますが、1MB 以上などの大きなブロック サイズを使用することで、その影響はほぼ相殺できます。