ブロックデバイスエミュレーションを備えたフラッシュストレージに存在するファイルシステムへの読み取り/書き込みアクセスを必要とする組み込みシステムが多数あります。当社の最も古いプラットフォームはコンパクト フラッシュで動作し、これらのシステムは 3 年以上使用されていますが、起動時に fsck が実行されることはありません。これまでのところ、ファイル システムまたは CF に起因する障害は発生していません。
最新のプラットフォームでは、最初の生産に USB フラッシュを使用しましたが、現在は読み取り/書き込みストレージ用にディスク オン モジュールに移行しています。しばらく前に、USB ストレージで実行されている多くのデバイスのファイルシステムに問題があったため、e2fsck を有効にして、それが役立つかどうかを確認しました。不良品のフラッシュ メモリを受け取ったことが判明したため、それらを交換すると問題は解消されました。それ以来、システムの信頼性が向上したという兆候はなく、歴史的にはそれがなくても問題がなかったので、e2fsck を無効にしました。
Disk-on-Module ユニットの導入を開始したので、ファイルシステム エラーが再び発生するようになりました。突然、システムが特定のファイルを読み書きできなくなり、緊急コンソールからファイルにアクセスしようとすると、「入出力エラー」が発生します。e2fsck を再度有効にすると、すべてのファイルが修正されました。
O'Reilly の「Building Embedded Linux Systems」では、ext2 ファイルシステムで e2fsck を実行することを推奨していますが、ext3 に関しては言及していないため、有効にするかどうかについて少し混乱しています。
組み込みシステムで fsck を実行することについてどう思いますか? fsckが重要なシステムバイナリを誤って削除しないように、バイナリをar/oパーティションに配置し、ar/wパーティションで変更する必要があるファイルのみを同じフラッシュデバイスに配置することを検討しています。そのようなセットアップの経験がある人はいますか? (良し悪し)?