LinuxでのJFFS2 CRCエラー – KBA219678 - Community Translated (JA)

Version 1

    Community Translated by NoTa_4591161       Version: **

     

    Translation - English: JFFS2 CRC Errors Under Linux – KBA219678

     

    質問:

    LinuxJFFS2を使用するとCRCエラーが発生するのはなぜでしょうか?

     

    回答:

    JFFS2での巡回冗長検査(CRC)エラーは、必ずしも問題を示しているわけではありません。進行中の書き込み操作中に電源が落ちた後など、いくつかのケースでは、これらは正常であり、しばらくすると消えます。これを理解するには、JFFS2をさらに詳しく調べる必要があります。

    JFFS2フラッシュファイルシステムは、基礎となるディレクトリ構造とディレクトリ内のデータファイルを記述する一連のデータノードで構成されています。ディレクトリまたはファイルが更新されるたびに、新しいノードがフラッシュに書き込まれます。ディレクトリまたはファイルがすでに存在する場合、古いノードは新しく書き込まれたノードによって廃止されます。単純なチェックサム(CRC)は、個々のノードの整合性を保証するために使用されます。新しいノードがフラッシュにプログラムされている間に電力が低下した場合、システムの電源を再投入した後でののCRCは正しくありません。JFFS2はこれを検出し、CRCエラーメッセージをLinuxシステムログに出力します。JFFS2マウントプロセスは、影響を受けるノードを単にスキップし、スキップされたノードからのデータを使用せずに続行します。つまり、ノードの新しいが不完全な情報はすべて失われ、ディレクトリまたはファイルが以前の状態に戻ります。このロジックは、処理または破損の問題を引き起こす可能性がある不良/不完全なノードを削除します。次回のシステム起動後、プログラム操作が中断される前のディレクトリまたはファイルが表示されます。CRCが正しくない部分ノードはダーティスペースと見なされ、しばらくするとJFFS2ガベージコレクターによって自動的にクリーンアップされます。

    ただし、場合によっては、電力低下なしで多くのCRCエラーが表示されることがあります(つまり、JFFS2ファイルシステムが電源オフ前に常に正しくマウント解除されている場合)。この場合、CRCエラーはフラッシュのI/Oの問題を示している可能性があります。I/O問題の症状はJFFS2エラーとして表示されますが、JFFS2には何の問題もありません。これをさらに調査するには、「dd」を使用して、MTDデバイス(/ dev / mtd0など)に大きなデータセットを読み書きする簡単なテストをお勧めします。これらのテスト中に確認エラーが発生した場合は、I/Oの問題であり、JFFS2の問題ではありません。