なぜ常に「dd」と一緒に「oflag = direct」を使用しないのですか?

なぜ常に「dd」と一緒に「oflag = direct」を使用しないのですか?

oflag=direct常にinを使用することがdd使用されていないか、などを使用して操作を実行するよりもはるかに速いようです。pv

どんな状況でできますか?いいえそれを使いたいですかoflag=direct

ベストアンサー1

私の頭の上から右:

  • 直接IO書き込みを使用すると、ターゲットファイルが他のプロセスによってマッピングされると(通常は直接IO書き込み)、データが失われる可能性があります。
  • 一部のファイルシステムは直接IOをサポートしていないか、直接IOで正しく動作しません。 2番目の可能性は、歴史的にBTRFSが直接IOを使用すると、ターゲットファイルのデータ破損を引き起こす可能性があることです。
  • 直接IOは普遍的に高速ではありません。これには多くのことがありますが、一般的に直接IOが遅くなる一般的な状況は、システム書き込みストレージキャッシュに収まるほど小さいファイルをコピーして、ゼロ以外の検索待ち時間でストレージを遅くする場合です。
  • 時々、一般的なIOの望ましい副作用が起こります。たとえば、ターゲットファイルが遅いリポジトリにあり、すぐに使用したい場合に便利です。この場合、直接IOを使用しないと、ファイルデータの少なくとも一部がまだページキャッシュに存在する可能性があるため、次の場合に時間を節約してください。ファイルを後で読んでください。多くは直接IOを使用しないため、パフォーマンスベンチマークを実行したい場合でもこれは重要です。
  • oflags=direct真の移植性が必要な場合はLinux専用の拡張機能なので、可用性に頼ることはできません。

おすすめ記事