絶対に破損しないファイルシステム(データ損失は許可されています)

絶対に破損しないファイルシステム(データ損失は許可されています)

この問題を取り巻くいくつかの既存のトピックがありますが、私が探しているものは少し異なります。組み込みLinuxにSDカードがあり、電源が切れます。ある時点でハードウェアを変更したり、適切にシャットダウンしたりすることもできます。しかし、今は停電になっても生き残ることができるファイルシステムを探したいと思います。データの損失は許容されます。現在書いているファイルより多くを失いたくはありませんが、「マウントできません」、「fsckのために10分間待ってください」、または「新しいファイルを作成できません」というエラーが発生するのではなく、すべてのファイルを失うほうがいいです。 「これにより、inodeに問題が発生しました。」計画は続くべきです!

それを確実にするために多くの努力を傾けています。私は産業用グレードコンポーネントを使用し、ハードウェア監視装置、ソフトウェア監視装置、内部、外部、init再起動プログラム、継続的にメモリを確認するデーモン、ファイル記述子などを持っており、監視装置を監視する監視装置があり、他の監視装置が順番に私の監視装置を監視する。 ...しかし、SDカードがマウントされ実行されていることを保証できないと思いますか?

今最も良いオプションは、SDカードでJFSを使用し、インストールにfsckとfsck.jfsを含めることです。 (600kb+を追加するとRAMとフラッシュが消費されます。悪いです)、起動するたびにfsckを実行します(おそらく起動時間が大幅に増えます。少し悪いです)。ところで、ちょっと残念そうです。

より良い方法や、より良いファイルシステムを知っている人はいますか?

アップデート:e2fsprogs-libs(jfsutilsへの依存関係)は私のディストリビューションでコンパイルするのが非常に難しいようです。 ZFSを調べてみましょう。 (私のディストリビューションに固有のものではありませんが、不要な作業をたくさん行うようです。)

アップデート2:マイシステムとテストに関する追加情報:SDカードストアはセカンダリオプションストアです。 SDカードは2Gb-8Gb産業用グレードmicroSDです。 SDカードは、mount -tコマンドを使用して私のrcを介してマウントされました。オプション「noatime」ですが、「sync」ではありません。私のディストリビューションは、3.10カーネルと1.21ビジーボックスを備えたカスタムアナログデバイススタイルのuClinuxです。私の主なリポジトリはjffs2を使ったspiフラッシュです。私はこれについて何の問題も経験したことがありません。 fsck.jffs2が利用可能かどうかわかりません。一方、Nand Flashは...しかしそれは別の話です。 SDカードの目的は、測定データを保存することです。 「モニター」プログラムは、戦略的同期位置を持つファイルに結果を追加します。ファイルが指定されたサイズを超えると、新しいファイルが生成されます。指定されたファイル数に達すると、最も古いファイルが削除されます。停電により現在の測定ファイルが失われても問題はありません。ファイルは通常50-100kbで、結果の1つは通常1kbです。これは初期の開発段階に過ぎません。何も修正されませんでした。組み込みシステムで非フラッシュファイルシステムを扱うのは今回が初めてです。 (私のx86サーバーにはext4があります。)

私はvfatで始めました。基本ファイルシステム(工場で選択した理由には理由があるようです。問題が解決した場合はあまり問題ありません。)内蔵vfatデバイスで停電の問題を見たことはありません。しかし、WinCEではFATに問題が発生しました。しかし、私の「モニター」プログラムが100〜200個のファイルに達すると、それ以上のファイル生成を拒否します。 FATは、ルートディレクトリに特別なファイル制限の問題があり、サブディレクトリにわずかに大きいファイル制限の問題があるようです。 1つのディレクトリに500〜1000個のファイルを作成できるはずです。だからvfatは動作しません。

それからext2に切り替えました。ただし、起動時にfsckを挿入しませんでした。 (これを行う必要があるかどうかわかりませんでした。)1日で「inode something」エラーが発生したため、私の「モニター」プログラムはファイルを生成できなくなりました。災害!

私の現在の解決策は、起動時にext2に "e2fsck -y"を使用することです。これまではこれが有望に見える。しかし、e2fsckと「起動時にfsck」の全体的な概念はいつも私を悩ませています。 e2fsck自体は私のメインフラッシュとメモリの350kb以上を占めています。 (実行されていないとき。)これはこれが私の最大のプログラムであることを意味します。ビジーボックスよりも大きいです。私のコアとほぼ同じです。

ext3について考えてみました。それは害のないメタデータを記録します。私はそれが多くの助けになると思う。小さなファイルと制御された同期を使用すると保護できますか?順番に書く順番があります。これは、データもある程度記録されることを意味する。しかし、これは非決定的な遅延を引き起こす可能性があります。これは私に迷惑です。 (これは問題にならない可能性があります。)また、スケジュールされた同期機能もあります。例えば。 5秒ごとに送信してください。私の考えでは、これは私の同期を妨げると思います。過度の書き込みはSDカードには良くありません。産業用でもいいですね。この機能を無効にする方法に関するドキュメントが見つかりません。そしてext3まだ起動するたびにfsckを実行する必要があります!しかし、ext3はまだ可能です。

拡張4.多くのext3パフォーマンスの問題を解決します。しかし、必ず公演をする必要はありません。私のディストリビューションにはmkfs.ext4とfsck.ext4が組み込まれていないようです。おそらくこれは問題ではないかもしれません。しかし、可能です。例えば。 e2progs-libs(jfsutilsへの依存関係)にはコンパイルの問題が多いようです。

JFS、XFS、BRFSS。これらすべてが私のカーネルでサポートされています。現在、私のユーザースペースツールボックスには含まれていません。すべてがかなり大きく複雑なシステムのようです。起動時にすべて "fsck"に対応するコマンドが必要なようですか?

私も自分のファイルシステムを捨てることを検討しました。常にファイルテーブルの2つのコピーに書き込みます。巡回するときは、正しいCRCと最新のシーケンス番号を持つものを選択してください。 2段階の書き込みシーケンスを実行します。一時的に割り当てられ、コミット時に修正されました。 fsckは必要ありません。しかし、それはちょっと素朴な考えかもしれないと思います。

アップデート3:ところで、組み込みシステム(少なくともこのシステム)の特徴は、自律的、無人、リモート、長年にわたって実行する必要があるということです。 fsckのようなプログラム可能人間の相互作用の必要性が私を怖がらせます。

ベストアンサー1

あなたの話は少し一貫していないか、少なくとも曖昧です。

私は「インストールできません」、「fsckのために10分間待ってください」という直面よりも、すべてを失う方が良いです。

実際に言わなくても、これが実際に問題があることを示唆しています。しかし:

e2fsprogs-libs(jfsutilsへの依存関係)は私のディストリビューションでコンパイルするのが非常に難しいようです。

重要性君はfsckが全くない、提供されるe2fsprogs-libs依存関係も同様です。それでは、まだ計画段階にあり、たとえばシステムをテストしていませんが、JFSで始める必要があると結論付けましたか?これには特別な理由がありますか?e2fsprogse2fsckext4

私はRaspberry Piスワップ(Raspberry PiのデフォルトのストレージもSDカードです)で、ほとんど(自分自身を含む)がこの質問に直面したことがないにもかかわらず、かなり多くのユーザーがこのような問題のために非常にイライラしていることがわかりました。 。すべて。最初は、これらの人々がシステムをきちんと終了しなければならないという事実を知らないと思いましたが、誰かが説明して報告すると理解しにくい問題ではありませんでした。システムが正常にシャットダウンしても

すでにダウンタイムを許可するにはこれが必要だと言われていますが(十分に公平です)、これが意味があるのでこれを言及します。一部pisまたは一部のSDカード、またはその2つの組み合わせは、プラグを抜き差しするときに定期的に発生するいくつかのイベント(サージ?)が原因でファイルシステムを簡単に損傷する可能性があります。また、人々がbtrfsやjfsなどに切り替えたと言う報告も見たことがありません。これで問題は解決され、多くの人が試してみるのに十分な時間がありました。

もう一つ謎の点は人々が電源コードを引っ張ってもファイルシステムが利用できなくなることはあまりありません。 もちろん、私はpiを使ってこれを何度も実行し、通常のLinuxボックスを使って何百回も実行しました(電源がブロックされ、システムが応答しなくなり、疲れて怒っています)。マイナーなデータ損失はありましたが、高速fsckの後に利用できないほどファイルシステムが破損している場合は見たことがありません。

繰り返しますが、これらのレポートがすべて真であると仮定すると(多くの人がそれについて嘘をついている理由を理解できません)、完全なアンインストールではないよりも多くのことが行われていますが、これは少数のユーザーにのみ影響を与えるようです。一度何かを提案します。一般的なハードウェア障害。

Piは、次回の起動時に自動的に実行され、必要に関係なくすべての問題を解決するための起動スクリプトを作成-yしました/forcefsck。 700MHzのシングルコアでは、約4GBのデータを含む12GBファイルシステムの場合、約10秒かかります。したがって、「10分」は非常に長い時間のように聞こえます。特に、すでに「これは」と言われているので、さらにそうです。はい書き込み用の小さなファイルシステム! 」。

sync定期的に電話をかけることも検討できます。

最後に、問題に関するより現実的で具体的な詳細で質問を更新する必要があります。実際に触れましたか?そしてあまり誇張してください。そうでなければ、あまりにも早く見えます。XYの問題、幅広い経験と潜在的なアドバイスを持っている人がこのステップをすばやくスキップできます。

おすすめ記事