我的embedded式Linux设备使用SD卡来保存某些诊断数据,对于内部闪存来说太多了。
问题是如果设备意外closures,卡上的文件系统(FAT32)已损坏。
没有办法来防止意外的断电或用户将其closures,并且设备应该相对免维护。 更糟糕的是,数据是连续写入的,所以腐败是非常频繁的,而Linux在检测到有故障的FS时会以只读方式静默地重新加载它。
你会build议什么方法来缓解这一点? 在启动时会自动运行fsck.vfat吗?
一些更多信息:
您可以使用block2mtd
驱动程序来使用您在SD卡上使用的事务性jffs2或yaffs(2)文件系统,这可以解决您在关机时数据丢失或文件系统损坏的问题。
不过这样做可能会招致其他问题。 由于SD卡可能有自己的磨损平衡和扇区重新映射的机制,这些可能会干扰jffs2和yaffs的实现,从而缩短SD卡的寿命或降低性能。 如果这不是问题,那应该值得尝试。
检查你使用的内核是否支持vfat的刷新和/或同步标志(看起来有些版本忽略它,要小心!)。
或者,如果一切都可以进入一个文件(就像原始日志stream一样)或者放入一些固定大小的文件(使用分区)