予期しない電力損失はLinuxのインストールに悪影響を及ぼしますか?
Linux組み込みボード(Debianを実行)でアプリケーションを開発しています。 Raspberry Pi、Beagle Board/Bone、またはolimex。ボードは、予期せず電気が遮断される環境(PSUの配置などが非常に複雑)で動作し、毎日数回発生します。予期しない停電がLinuxオペレーティングシステムでクラッシュ/問題を引き起こすのではないかと思いますか?それが私が心配すべきことであるならば、あなたは予期しない停電に対してOSの損傷を防ぐために何を提案しますか?
PS。アプリケーションはストレージメディア(SDカード)にデータを書き込む必要があります。読み取り専用としてマウントするのは適切ではないと思います。
予期しない停電は、ファイルシステムデータの破損を引き起こす可能性があります-例:プロセスがファイルへの書き込みを開始したが、まだ書き込みが完了していない場合、ファイルは半分しか書き込まれなくなる可能性があります。ここで、カーネルのアップグレードの途中で停電が発生した場合を想像してみてください...
L0b0が書いたように、ジャーナリングファイルシステムを使用すると、実際に何が行われたかを追跡できるため、役立ちます。 l0b0がリンクしたウィキペディアの情報に加えて、興味があるかもしれません https://unix.stackexchange.com/questions/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power -失敗 同様に。
プログラマーとしてのあなたは、ファイルへの書き込みをアトミックプロセスになるように処理する方法を慎重に検討する必要があります(つまり、完全に実行されるか、まったく実行されないが、半分は実行されない)。これはかなり複雑な問題です。
OSの破損の可能性を最小限に抑えるために、SDカードに「システム」パーティションと「データ」パーティションを別々に配置するのがおそらく最善です。このようにして、「システム」パーティションを読み取り専用でマウントし、「データ」パーティションで復元力の高いFS)を使用できます。
さらに、これらのボードのほとんどは電力要件が非常に低いため、バッテリバックアップが可能です。 Raspberry Pi用の「LiPoライダー」ボードを基本的なUPSとして使用して、停電時にクリーンなシャットダウンを提供できます。
これは
- ジャーナリングファイルシステム を使用しているかどうか
- アプリケーションが中止された処理をどれだけうまく処理できるか。
たとえば、ファイルを処理し、計算された結果(入力行ごとに1つの出力行)を別のファイルに書き込むアプリケーションについて考えてみます。処理中に電源が切れ、再起動後に同じアプリケーションが実行された場合、入力ファイルの先頭から処理を再開することはできません。つまり、出力ファイルに重複した情報が含まれることになります。
架空の複雑なシステムについて明確なことを言うのは非常に難しいかもしれませんが、ほとんどの安定したLinuxソフトウェアはクラッシュを非常にうまく処理できるようです。
特定のファイルシステムについては誰も言及していなかったため、最新のファイルシステム(ext3、ext4、ntfs)は、 journaling により、古いファイルシステム(ext2、ext、fat32)よりもはるかに優れたクラッシュを処理できます。
ハードドライブがクラッシュせず、 嘘をつかない と仮定すると、完全な電源障害によってファイルシステムが破損することはありません。ただし、書き込み中の個々のファイルはまだ破損している可能性があるため、停電が発生したときにOSを更新している最中の場合は、OSを停止することができます。