我的嵌入式linux设备使用SD卡来保存某些诊断数据,对于内部闪存而言这太丰富了。
问题是,如果设备意外关闭,则卡上的文件系统(FAT32)已损坏。
无法防止意外断电或用户将其关闭,该设备应相对免维护。更糟糕的是,数据是连续写入的,因此损坏非常频繁,并且Linux在检测到故障FS时会以静默方式将其重新装入只读状态。
您会建议采用哪些方法来减轻这种情况?在启动时自动运行fsck.vfat是否足够?
更多信息:
- 该卡不被用户视为可移动。可以将其视为内部磁盘。存储在上面的任何数据都可以通过网络或USB驱动器下载,系统会自动清除最早的条目。这意味着它不需要在普通PC上可读。
- 该系统当前支持FAT,yaffs和jffs2。可以在内核中添加其他文件系统,但是如果存在其他途径,我们最好先使用它们。
- 可以按需暂停写入,即使几分钟也不会丢失数据。
- 可接受部分数据丢失或轻微损坏。不是完全停止日志记录。
- 在大多数情况下,关闭电源事件是完全不可预测的。
- 该系统在ARM9、200MHZ,64MB RAM,32MB内部闪存上运行,并在其主要角色上消耗了大部分CPU电源。在考虑花哨的大量资源解决方案时要考虑到这一点。
3
您可能已经考虑过了,但是值得在这个问题上徘徊的其他人提到:大多数闪存卡(SD,CF等)的写容限只有几千个周期(最多)。使用普通卡进行数据记录或类似任务最终会杀死它们(通常比人们认为的时间短)。
—
克里斯S
@ChrisS:这主要是仅追加操作,并且用最新的条目替换最旧的条目,具有固有的良好写入负载平衡特性,尤其是填充卡片需要几个月的时间。问题可能出在FAT条目本身上,但我相信控制器对此有所了解。
—
SF。
如果您的设备已关闭电源并且没有将此数据写入卡,该怎么办?就像不编写诊断数据一样,您会浪费大量时间或金钱,或者只是没有一些日志文件吗?
—
2013年
@Freiheit:缺少为客户销售的虽然不是完全不重要的功能,但它仍然不为人所知,另外如果万一其他人搞砸了并寻求替罪羊,我们将失去法庭上的一种辩护途径。最重要的是在可能发生故障之前的数据-证明设备可以正常工作直到最后一刻,而不是设备本身的故障使事件升级为灾难。
—
SF。
注意。您显然正在捕获重要数据!
—
2013年