予期しない電力損失はLinuxのインストールに悪影響を及ぼしますか?


22

Raspberry Pi、Beagle Board / Bone、olimexなどのLinux組み込みボード(Debianを実行)でアプリケーションを開発しています。ボードは、予期せず電力が切断される環境で動作し(PSUの配置などは非常に複雑です)、毎日数回発生します。予期しない電源切断がLinuxオペレーティングシステムでクラッシュ/問題を引き起こすのではないかと思いますか?心配する必要がある場合、予期しない停電に対するOSの損傷を防ぐために何を提案しますか?

PS。アプリケーションは、ストレージメディア(SDカード)にデータを書き込む必要があります。読み取り専用としてマウントするのは適切ではないと思います。


1
頻繁に変更するファイルシステムではext2(ext3以上を使用)に近づかないでください。ほとんどの場合は問題ありません。
ローレンス

SDカードの仕様細心の注意を払わない限り、予期せず電源を切った場合、カードは何も保証しません。カードはウェアレベリングの動きの途中にある可能性があり、奇妙で予想外の破損を引き起こしています。これは別のパーティションにある可能性さえあります。
デロバート

正確な方法はわかりませんが、主要なアプリケーションをトランザクションベースにすることを検討してください。これにより、現在のファイルとバックアップを作成できます。トランザクションを現在のファイルに適用し、それが失敗した場合、バックアップから現在のファイルを復元し、トランザクションを再適用できます。シンボリックリンクまたはファイル名の交換を使用して現在のバックアップとバックアップを切り替えると、コピーよりもエラーの可能性がはるかに低くなります。更新が成功すると、現在のファイルがバックアップになり、バックアップが最新になります。
ジョー

続きます。これはほとんど機能します。新しい現在のファイルには、トランザクションを2回処理する必要があるトランザクションが適用される必要があるため、より良い方法があると確信しています。いずれにせよ、ファイルが大きい場合は、ファイル全体をコピーするよりもはるかに高速で安全です。
ジョー

回答:


14

予期しない電源切断は、ファイルシステムデータの破損を引き起こす可能性があります。たとえば、プロセスがファイルへの書き込みを開始したが、まだ書き込みを完了していない場合、ファイルは半分しか書き込まれない可能性があります。カーネルのアップグレードの途中で電源が切れる場合を想像してください...

l0b0が書いたように、ジャーナリングファイルシステムを使用すると、実際に行われたことを追跡できるので役立ちます。l0b0がリンクされていることウィキペディアの情報に加えて、あなたは、に興味がある可能性があり /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failureとしてよく。

プログラマーとしては、ファイルへの書き込みをアトミックプロセス(つまり、完全に実行されるか、まったく実行されないが、半分は実行されない)にする方法を慎重に検討する必要があります。それはかなり複雑な問題です。


10
ファイルを破損する書き込みの中断から保護するためのコードの一般的なプロセスは、file.nameを直接変更する代わりに、まったく新しいファイルfile.name.newversionを作成し、delete / renameコマンドを使用して古いバージョンを新しいもの。各ステップで中断から回復するには、クリーンアップコードを追加する必要があります。ただし、この方法では、常にファイルの適切なコピーがディスクに残ります。これは、単一の巨大なファイルの更新が不十分だったり、単一のファイルに頻繁に変更を加えたりするため、設計に影響を与える可能性があります。
ダン・ニーリー

11

OSの破損の可能性を最小限に抑えるには、SDカードに「システム」パーティションと「データ」パーティションを別々にするのがおそらく最善です。これにより、「システム」パーティションを読み取り専用でマウントし、「データ」パーティションで復元力の高いFSを使用できます。

さらに、これらのボードのほとんどは電力要件が非常に低いため、バッテリバックアップが可能です。Raspberry Pi用の「LiPo rider」ボードは、停電時にクリーンなシャットダウンを提供する基本的なUPSとして使用できます。


5

これはに依存します

  1. あなたが使用しているかどうかのジャーナリングファイルシステムを
  2. 中止された処理をアプリケーションがどれだけうまく処理できるか。

たとえば、ファイルを処理し、計算された結果(入力行ごとに1つの出力行)を別のファイルに書き込むアプリケーションを考えます。処理中に電源が切れ、再起動後に同じアプリケーションが実行される場合、入力ファイルの先頭から処理を再開することはできません。つまり、出力ファイルに重複した情報が含まれることになります。

架空の複雑なシステムについて明確なことを言うのは非常に難しいかもしれませんが、ほとんどの安定したLinuxソフトウェアはクラッシュを非常にうまく処理できるようです。


1

誰もが任意の特定のファイルシステム言及していないので:より近代的なファイルシステム(ext3の、ext4は、NTFS)を処理することができますがはるかに優れてクラッシュに起因して、古いファイルシステム(EXT2、内線、FAT32)よりジャーナリング

ハードドライブがクラッシュせず、横たわっていないと仮定すると、完全な電源障害によってファイルシステムが破損することはありません。ただし、書き込まれていた個々のファイルは破損している可能性があります。そのため、電源障害が発生したときにOSを更新している場合でも、OSを停止することは可能です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.