ディスク書き込みを事前にフラッシュする方法は?

ディスク書き込みを事前にフラッシュする方法は?

x86_64デバイスでUbuntu 18.04を使用しています。

未知の問題が数ヶ月間私を悩ませてきて、再現できません。つまり、アプリケーションの構成ファイルが破損しているということです。昨日、ついにこのようなことが2回起こったことを確認し、問題の原因を確認しました。ユーザーがSFTPを介して新しいプロファイルをアップロードした後、デバイスを取り外して再接続して再起動しました。

私はOSがディスクの書き込みをバッファリングし、それをディスクにコミットするタイミングを選択すると思います。バッファがフラッシュされる前にデバイスの電源がオフになると、書き込みが失われます。これは破損したファイルとして表示されます。サイズは0です。

確実な解決策は、この(ひどい)慣行を中止し、ユーザーがデバイスを安全に再起動することを推奨することです(再起動すると書き込みがフラッシュされるため)。私はこれを奨励しようとしますが、残念ながら、ユーザーはデバイスを再起動するためにプラグを抜くことに慣れています。誰もが正しい方法で始めるように言うのは簡単ではありません。

したがって、最初の質問は、書き込みがより速くディスクにフラッシュされる可能性が高いように書き込みを積極的にフラッシュする方法があるかどうかです。この動作に影響を与えるためにカーネルパラメータを調整する方法があると思います。

ほとんどすべての重要なファイルのアップロードがアプリケーション固有のディレクトリにあることを知っているので、そのディレクトリへの書き込みを受け取り、強制的にディスク同期を実行するプログラムを使用できるかどうかを知りたいです。これは、オペレーティングシステム全体ではなく、対応するディレクトリに対してのみ高速リフレッシュを強制するため、望ましい場合があります。同様に、ディスクの単一のパーティションにのみ影響を与える解決策があればそれで十分です。アプリケーション固有のファイルを専用パーティションに移動するのは簡単ではないからです。

Linuxにディスク書き込みを事前にフラッシュするように指示する最良の方法は何ですか?特定のディレクトリまたはディスクパーティションに対してのみこれを効率的に実行できるソリューションはありますか?

答え1

ファイルを1つだけ同期できます。同期または(メタデータ変更なし)データ同期、ちょうどファイルシステムファイルシステムの同期または以下に関連するすべて同期。しかし、ただのディレクトリですか?sync /var/log/syslogディレクトリのみを同期する例です。

関連情報