私はブロックデバイスの上に直接データストアを作成しました。耐久性を確保するためにディスクに同期したいと思います。しかし問題はこんな感じです。一部だけ同期したいです。
私はクラッシュ回復のためにログを保持し、ディスクの実際の場所に適用する前に、将来の変更をログに記録します。その後、残りのディスクに実際の変更が適用される前に、ログの変更がディスクに書き込まれていることを確認したいと思います(ログを確認するまでfsyncに興味はありません)。
ブロックデバイス全体を簡単に同期できますが、そうすることで緊急ではない多くの項目を記録する必要があります。
私は2つのオプションを考えましたが、部分的なfsync(2)呼び出しがないという事実に驚きました。
答え1
Linux関連のシステムコールがあります。同期ファイル範囲()
(参考までにブロックデバイスを使用することは移植性がありません。FreeBSD)