私は最近、組み込みシステムに取り組んでいます。適切にシャットダウンせずに電源を切る必要があります。私たちは読み取り専用ファイルシステムのようなAufについて考えています。ただし、問題は、アプリケーションに更新可能なデータがあり、ユーザーがIP、日付時刻などを変更できることです。したがって、システムには追加のR/Wパーティションが必要です。
明確にするためにいくつか質問があります。
ファイルシステムの観点から、デフォルトオプションでext3またはext4を使用すると、通常、十分なクラッシュの一貫性が得られます。確かに、ファイルシステムの損失や、電力損失の直前に書き込まれていないファイルへの損傷は発生しません。
ファイルシステムでクラッシュの一貫性を処理する方法については、多くの考慮事項があります。アプリケーションが新しいファイルのみを作成する場合、または一時ファイルを作成して名前を変更してアトミックに上書きすることで既存のファイルを上書きする場合は、デフォルトのdata = orderedモードのext4で問題ありません。ただし、ファイルANDディレクトリエントリでのfsync()の呼び出しが完了するか、OSがキャッシュをフラッシュするまでは、電源障害後にデータがそこにあるという保証はありません。これは、ストレージデバイスがfsync()を尊重することも前提としています。
アプリケーションがパフォーマンスを気にせずにファイルメタデータとデータ間の一貫性を保証する必要がある場合は、data = journalを使用して、メタデータだけでなく、ファイルとファイルシステムメタデータへのすべての変更がジャーナルに記録されるようにすることができます。これにより、ファイルサイズが大きくなるなどの不完全な書き込み状況が回避されますが、追加されたデータは失われ、null文字に置き換えられます。