Linux組み込みシステムでのファイルシステム破損の防止

Linux組み込みシステムでのファイルシステム破損の防止

私は最近、組み込みシステム関連の作業をしています。正常なシャットダウンが行われない場合は、電源を切る必要があります。私たちはAufsを読み取り専用ファイルシステムとして考えています。しかし、問題は、アプリケーションにいくつかの更新可能なデータがあり、ユーザーがIP、日付時刻などを変更できることです。したがって、システムには追加のR / Wパーティションが必要です。

説明が必要な質問がいくつかあります。

  1. 突然の停電時にシステムの損傷を防ぐにはどうすればよいですか?
  2. このような組み込みシステムに最適なファイルシステムは何ですか?
  3. ext3/ext4は、ジャーナルファイルシステムなどの不完全なファイルを自動的に回復し、常にバックアップしますか?
  4. 現在、RAID1のBTRFSは最高のソリューションですか?
  5. システムの損傷を防ぐために組み込みシステムに広く使用されている他のソリューションはありますか?

ベストアンサー1

ファイルシステムの観点から、デフォルトオプションと一緒にext3またはext4を使用すると、通常、適切な競合の一貫性が得られます。停電前に記録されていないファイルのファイルシステムの損失や破損は、確実に発生しません。

すべてのファイルシステムで競合の一貫性を処理する方法については、多くの考慮事項があります。アプリケーションが新しいファイルのみを作成するか、一時ファイルを作成して既存のファイルを上書きし、名前を変更して自動的に上書きする場合、ext4のデフォルトのdata = orderedモードは問題ありません。ファイルとディレクトリエントリへのfsync()呼び出しが完了するまで、またはオペレーティングシステムがキャッシュをフラッシュするまで、データが停電後も保持されるという保証はありません。これはまた、ストレージデバイスがfsync()をサポートしていると仮定します。

アプリケーションがパフォーマンスを気にせずにファイルメタデータとデータ間の一貫性を確保する必要がある場合は、data = journalを使用して、メタデータだけでなく、ファイルとファイルシステムのメタデータへのすべての変更を記録することができます。これにより、ファイルサイズが大きくなりますが、追加されたデータが失われ、ヌル文字に置き換えられる不完全な書き込み状況を防ぐことができます。

おすすめ記事