ハードクラッシュ、特にUPSがシステムを実行し続けることができない場合、ファイルシステムのキャッシュが原因でログの内容の一部が失われるようです。実験として、syncオプションを使用して/ varパーティションをマウントしてみました。起動時にディスクノイズが大幅に増加しましたが、ショーストッパーは適切に実行しようとしていました。 aptが無反応でそこに座っている間、ディスクはドキドキしました。
/ var syncをマウントするのは間違いですか、それとも成功するためにrelatime、strictatime、noatimeなどのオプションの1つが必要ですか?もしそうなら、/ varでこれらのオプションの1つを使用しても安全ですか?
ファイルシステムレベルでsync
を有効にすることは、通常、適切な解決策ではありません(通常、常にではありません)。 sync
を有効にすると、書き込みごとにバッファフラッシュが強制されるだけでなく、ファイルシステムが書き込みを並べ替えて最適化する機能が無効になりますIO(より大きなチャンクを書き込むことにより) )これにより、断片化も大きくなります。
より良い解決策は、代わりにfsync
(またはfdatasync
)を使用するために使用しているアプリケーションを取得することです。アプリケーションがデータを書き出すとき、fsync
を呼び出すことができます。これにより、そのデータがディスクに強制的に出力されます。このように、ファイルシステム全体ではなく、常に同期されているのは特定のデータのみです。また、アプリケーションがすべてのデータを書き込んだ後でfsync
を呼び出すことができるため、少しずつではなく、もう少しインテリジェントになります。
Syslog-ngを使用している場合は、ファイルの宛先ごとにfsync
を有効にする機能があります( ドキュメント )。 rsyslogにもこの機能があるかもしれませんが、私にはわかりません。