ファイル内のデータを上書きする前に、古いデータがディスクに保存されていることを確認したいと思います。非常に大きなファイル (数 GB) になる可能性があるため、インプレース更新が必要です。通常、書き込みは 2 MB 以上になります (私の計画では、4 KB のブロック サイズを使用する予定です)。
fsync() を呼び出す代わりに (またはそれに加えて)、ファイル システムが新しいデータを書き込むまで、ディスク上の古いデータを (上書きせずに) 保持したいと考えています。私が fsync() に頼りたくない主な理由は次のとおりです。ほとんどのハードディスクは、fsync の実行について嘘をついています。
だから私が探しているのは、fsyncや同様の方法を使用せずに、ファイルシステム、オペレーティングシステム(Windowsなど)、データがディスクに書き込まれるまでのハードドライブの典型的な最大遅延です。できれば実数が欲しいです。fsync を使用するためのアドバイスを探しているわけではありません。
100% 信頼できる方法がないことは承知していますが、オペレーティング システムとファイル システムがこの点でどのように機能するかをよりよく理解したいと考えています。
私がこれまでに見つけたのは、 /proc/sys/vm/dirty_expire_centiseconds のデフォルトは 30 秒です。次に、「ダーティページはディスクにフラッシュ(書き込まれます)...(ページがダーティのままになってから時間が経過した場合)」(ただし、デフォルトの時間が見つかりませんでした)。そのため、Linux では 40 秒が安全なようです。しかし、これはすべてのファイル システム/ディスクに当てはまりますか? Windows や Android などはどうでしょうか。Windows、Android、通常のハードディスク、SSD など、すべての一般的なオペレーティング システム / ファイル システム / ディスクの種類に当てはまる回答を得たいと考えています。