重大な競合が発生した場合、特にUPSがシステムを継続して実行できない場合、ファイルシステムのキャッシュによって一部のログコンテンツが失われる可能性があります。実験的に同期オプションを使用して/ varパーティションをマウントしてみました。起動時にディスクのノイズが著しく増加しますが、これは停止したプログラムが正しく実行しようとしていることを示します。ディスクがすごいし、何の反応もなくそこに座っていました。
/ varsyncマウントがエラーですか、それとも成功するにはrelatime、strictatime、またはnoatimeオプションのいずれかが必要ですか?それでは、/varでこれらのオプションの1つを使用しても安全ですか?
答え1
ファイルシステムレベルでアクティブにすることはsync
通常良い解決策ではありません(常にそうではありません)。有効にすると、sync
すべての書き込みでバッファフラッシュを強制するだけでなく、より大きなブロックを作成することによって、IOを最適化するために書き込み順序を変更するファイルシステムの機能が損なわれます。これは断片化をより高める。
より良い解決策は、使用しているアプリケーションが何であれfsync
(またはfdatasync
)を代わりに使用することです。アプリケーションがデータを書き込むときにfsync
データを強制的にディスクに書き込むように呼び出すことができます。これにより、ファイルシステム全体ではなく特定のデータのみが常に同期されます。また、fsync
すべてのデータビットではなく、すべてのデータを記録した後にアプリケーションがそれを呼び出すことができるので、よりスマートです。
syslog-ngを使用している場合は、fsync
各ファイルの宛先(文書)。 rsyslogにもこの機能があるかもしれませんが、それについてはわかりません。