linux – 我应该在嵌入式系统上使用ext3吗?
作者:互联网
我们有许多嵌入式系统需要对文件系统进行r / w访问,该文件系统驻留在具有块设备仿真的闪存存储器上.我们最古老的平台运行在紧凑型闪存上,这些系统已经使用了3年以上,在启动过程中没有运行单个fsck,到目前为止我们没有归因于文件系统或CF的故障.
在我们的最新平台上,我们使用USB闪存进行初始生产,现在正在迁移到磁盘模块以进行硬件存储.前段时间我们在USB存储器上运行的很多设备上遇到了一些文件系统问题,所以我启用了e2fsck以查看是否有帮助.事实证明,我们收到了一批不良闪存,因此一旦被更换,问题就会消失.我已经禁用了e2fsck,因为我们没有迹象表明它使系统更加可靠,而且从历史上看,我们没有它就没事了.
现在我们已经开始使用Disk-on-Module单元,我已经开始再次看到文件系统错误.突然,系统无法读取/写入某些文件,如果我尝试从紧急控制台访问该文件,我只会收到“输入/输出错误”.我再次启用了e2fsck并且所有文件都已更正.
O’Reilly的“构建嵌入式Linux系统”建议在ext2文件系统上运行e2fsck但是没有提到它与ext3有关,所以我对是否应该启用它有点困惑.
在嵌入式系统上运行fsck有什么需要?我们正在考虑将二进制文件放在ar / o分区上,只考虑在同一个闪存设备上的ar / w分区上必须修改的文件,以便fsck永远不会意外删除重要的系统二进制文件,是否有人对这种设置有任何经验(好坏)?
解决方法:
我认为您的问题的答案更多地涉及您应用程序相对于其数据的一致性要求类型.也就是说,如果在没有正式关闭系统的情况下断电,必须保证什么?通常,如果没有特定的应用程序关闭/同步文件以及在应用程序中的关键事务点刷新磁盘缓存等,桌面操作系统类型文件系统都不能很好地处理这一点,以确保您需要维护的是事实致力于媒体.
运行fsck会修复文件系统,但如果没有上述保护,则无法保证实际保留的更改.即:由于电源故障,您将失去什么并不完全确定.
我同意将二进制文件或其他重要的只读数据放在一个单独的只读分区上确实有助于确保它们不会因文件系统结构的fsck更正而被错误地抛出.至少,将它们放在根目录下不同于R / W数据所在的子目录中会有所帮助.但在这两种情况下,如果您支持软件更新,您仍然需要有计划来处理编写“只读”区域.
在我们的应用程序中,我们实际上为二进制文件维护了一对目录,系统设置为从两个区域中的任何一个启动.在软件更新期间,我们更新第一个目录,将所有内容同步到介质并验证磁盘上的MD5校验和,然后再转到第二个副本的更新.在引导期间,仅在MD5校验和良好时才使用它们.这可确保您始终启动连贯的图像.
标签:linux,embedded,filesystems,ext3 来源: https://codeday.me/bug/20190827/1743981.html