我们有许多嵌入式系统需要对文件系统进行读/写访问,这些文件系统驻留在具有块设备仿真的闪存存储上。我们最古老的平台在紧凑型闪存上运行,这些系统已经使用了 3 年以上,在启动期间没有运行单个 fsck,到目前为止,我们没有任何故障归因于文件系统或 CF。
在我们最新的平台上,我们使用 USB 闪存进行初始生产,现在正在迁移到 Disk-on-Module 进行读写存储。不久前,我们在 USB 存储上运行的许多设备上的文件系统存在一些问题,因此我启用了 e2fsck 以查看是否有帮助。事实证明,我们收到了一批坏闪存,因此一旦更换了这些闪存,问题就消失了。从那以后我禁用了 e2fsck,因为我们没有迹象表明它使系统更加可靠,而且从历史上看,没有它我们一直很好。
现在我们已经开始放入 Disk-on-Module 单元,我又开始看到文件系统错误。突然系统无法读取/写入某些文件,如果我尝试从紧急控制台访问该文件,我只会收到“输入/输出错误”。我再次启用了 e2fsck 并更正了所有文件。
O'Reilly 的“构建嵌入式 Linux 系统”建议在 ext2 文件系统上运行 e2fsck,但没有提及与 ext3 相关的内容,所以我对是否应该启用它有点困惑。
您对在嵌入式系统上运行 fsck 有何看法?我们正在考虑将二进制文件放在 ar/o 分区上,并且只将必须修改的文件放在同一闪存设备上的 ar/w 分区上,以便 fsck 永远不会意外删除重要的系统二进制文件,有没有人有这种设置的经验(好坏)?