dd の direct オプションと fsync オプションの違いは何ですか?

dd の direct オプションと fsync オプションの違いは何ですか?

イメージを USB サムドライブにコピーしたいと思います。「実際の」速度を実現したいので、イメージをコピーした後、デバイスが同期するまで長時間待ちたくないので、そのためにどのオプションを使用すればよいかを知りたいです。

答え1

読んでみてソースコードは、オプションについても質問する必要があることを示していますnocachedirectオプションで必要な結果が得られますが、dd使用している のバージョンによっても異なります。Ubuntu 11.04 システムで大規模なコピーを実行したところ、dsyncデータに同期 I/O を使用するオプションを使用すると、さらに遅くなりました (=現実に近い?)。これにより、最新のディスク コントローラが提供する集約の利点が失われる可能性があります。何が起こっているかを「正確に」知るには、実行している特定のカーネルのソース コードを詳しく調べる必要がありますが、それでも、ドライブのインターフェイス ボードに左右され、独自のバッファリングが行われます。

答え2

fsync オプションは、コピーの最後にデータをフラッシュします。dsync オプションは、各ブロックの後にデータをフラッシュします。direct オプションは、ファイルシステム キャッシュをデータで汚染しないという点において、dsync と同様の結果になります。これは、システムの残りの部分をキャッシュするのに適しており、CPU オーバーヘッドをいくらか節約します。

dsync または direct のどちらを使用してもスループットは低くなりますが、1MB 以上などの大きなブロック サイズを使用することで、その影響はほぼ相殺できます。

関連情報