JFFS2 ファイルシステムを実際にデフラグする方法

JFFS2 ファイルシステムを実際にデフラグする方法

私は、JFFS2 ファイルシステムをデフラグするための実用的な方法を、StackExchange フォーラムを含むインターネット全体で検索しましたが、答えを見つけることができません。

問題のシステムには、256MB の NAND フラッシュ パーツがあります。これは、3 つのパーティションに分割された MTD デバイスとしてアクセスされています。3 番目のパーティションには、ルート ファイル システムが JFFS2 ファイル システムとして保存されています。問題は、JFFS2 ガベージ コレクターが最悪のタイミングで実行することを決定するという通常の問題により、ルート ファイル システムへの書き込みのパフォーマンスが非決定的になることです。その場合、ガベージ コレクター (および pdflush) の実行中、製品は不明な時間ハングします。

ファイル システムを変更するという選択肢はありません。解決策としては、オフ時間に実行でき、実行後にはより予測可能な書き込みパフォーマンスが得られるようなものが必要です。現在、私はガベージ コレクターを強制的に実行し、その後、解放されたノードがすべて突然より容易に利用可能になり、書き込みパフォーマンスが向上することを期待してファイルを削除するプログラムに取り組んでいます。

ご意見は?

答え1

独自のガベージ コレクション アルゴリズムを実装し、マウント時に実行して、書き込みスペースが不足したときに、ガベージ コレクション スレッドを個別に再度開始してみてください。

ファイルをフラグメントとして書き込むと、ファイルの半分が含まれるブロックまたはページを消去した場合でも、どこかに書き込んで、将来使用するためにページを取得できるため、作業がはるかに簡単になります。

難しいのは、ファイルシステム全体にまたがる複数のフラグメントを持つファイルを開く方法です。

関連情報